add varazslat lapok

This commit is contained in:
2024-02-22 13:13:34 +01:00
parent 949c21407d
commit fc2587d0fe
6 changed files with 322 additions and 40 deletions
+2 -2
View File
@@ -9,9 +9,9 @@ export interface TextFieldOptions {
text?: string, text?: string,
} }
export type RenderTextBoxFunc = (options: TextFieldOptions) => PDFTextField; export type RenderTextFieldFunc = (options: TextFieldOptions) => PDFTextField;
export function addTextFieldFactory(form: PDFForm, pdfFont: PDFFont, page: PDFPage): RenderTextBoxFunc { export function addTextFieldFactory(form: PDFForm, pdfFont: PDFFont, page: PDFPage): RenderTextFieldFunc {
return (options: TextFieldOptions) => { return (options: TextFieldOptions) => {
const field = form.createTextField(options.name) const field = form.createTextField(options.name)
field.setText(options.text) field.setText(options.text)
BIN
View File
Binary file not shown.
+26
View File
@@ -5,6 +5,12 @@ import {addTextFieldFactory} from "./helpers";
import {renderMainPage} from "./renderMainPage"; import {renderMainPage} from "./renderMainPage";
import {renderSecondPage} from "./renderSecondPage"; import {renderSecondPage} from "./renderSecondPage";
import {renderFullCasterVarazslatlap, renderHalfCasterVarazslatlap} from "./renderVarazslatlap"; import {renderFullCasterVarazslatlap, renderHalfCasterVarazslatlap} from "./renderVarazslatlap";
import {
renderVarazskonyvFrontPage,
renderVarazskonyvLeftPage,
renderVarazskonyvRightPage,
renderVarazskonyvSecondPage
} from "./renderVarazskonyv";
export async function Karlap() { export async function Karlap() {
const docBuffer = await fs.readFile("kemkas2karakterlap.pdf", {encoding: null, flag: 'r'}) const docBuffer = await fs.readFile("kemkas2karakterlap.pdf", {encoding: null, flag: 'r'})
@@ -34,6 +40,26 @@ export async function Karlap() {
const addTextField3 = addTextFieldFactory(form, pdfFont, page3) const addTextField3 = addTextFieldFactory(form, pdfFont, page3)
renderHalfCasterVarazslatlap(addTextField3); renderHalfCasterVarazslatlap(addTextField3);
const page4 = doc.getPage(4)
page4.setFont(pdfFont)
const addTextField4 = addTextFieldFactory(form, pdfFont, page4)
renderVarazskonyvFrontPage(addTextField4);
const page5 = doc.getPage(5)
page5.setFont(pdfFont)
const addTextField5 = addTextFieldFactory(form, pdfFont, page5)
renderVarazskonyvSecondPage(addTextField5);
const page6 = doc.getPage(6)
page6.setFont(pdfFont)
const addTextField6 = addTextFieldFactory(form, pdfFont, page6)
renderVarazskonyvRightPage(addTextField6);
const page7 = doc.getPage(7)
page7.setFont(pdfFont)
const addTextField7 = addTextFieldFactory(form, pdfFont, page7)
renderVarazskonyvLeftPage(addTextField7);
form.updateFieldAppearances(pdfFont) form.updateFieldAppearances(pdfFont)
const pdfBytes = await doc.save() const pdfBytes = await doc.save()
+2 -2
View File
@@ -1,6 +1,6 @@
import {RenderTextBoxFunc} from "./helpers"; import {RenderTextFieldFunc} from "./helpers";
export function renderSecondPage(addTextField: RenderTextBoxFunc): void { export function renderSecondPage(addTextField: RenderTextFieldFunc): void {
// specialis kepessegek // specialis kepessegek
for (let i = 0; i < 7; i++) { for (let i = 0; i < 7; i++) {
+247
View File
@@ -0,0 +1,247 @@
import {RenderTextFieldFunc} from "./helpers";
interface RenderVarazslatParams {
addTextField: RenderTextFieldFunc,
i: number,
page?: number
yOffset?: number
xOffset?: number
rows?: number,
last?: boolean
}
function renderVarazslatOnFirstPage({addTextField, i, last}: RenderVarazslatParams) {
const offset = 105;
addTextField({
name: `varazskonyv_page1_spell${i}_nev`,
x: 58,
y: 668 - (i*offset),
w: 210,
h: 18,
})
addTextField({
name: `varazskonyv_page1_spell${i}_szint`,
x: 280,
y: 668 - (i*offset),
w: 12,
h: 18,
})
addTextField({
name: `varazskonyv_page1_spell${i}_hatoido`,
x: 298.5,
y: 668 - (i*offset),
w: 64,
h: 18,
})
addTextField({
name: `varazskonyv_page1_spell${i}_tav`,
x: 364.5,
y: 668 - (i*offset),
w: 23,
h: 18,
})
addTextField({
name: `varazskonyv_page1_spell${i}_terulet`,
x: 389.5,
y: 668 - (i*offset),
w: 92,
h: 18,
})
addTextField({
name: `varazskonyv_page1_spell${i}_mento`,
x: 484.5,
y: 668 - (i*offset),
w: 53,
h: 18,
})
const rounded = last === true
for (let j = 0; j < 4; j++) {
addTextField({
name: `varazskonyv_page1_spell${i}_leiras_${j}`,
x: 58,
y: 648 - (i*offset) - (16*j),
w: 480,
h: 16,
})
}
addTextField({
name: `varazskonyv_page1_spell${i}_leiras_4`,
x: 58 + (rounded ? 10 : 0),
y: 648 - (i*offset) - (4*16),
w: 480 - (rounded ? 20 : 0),
h: 16,
})
}
export function renderVarazskonyvFrontPage(addTextField: RenderTextFieldFunc) {
addTextField({
name: 'varazskonyv_nev_faj_osztaly_szint',
x: 57,
y: 731,
w: 482,
h: 16,
})
for (let i = 0; i < 5; i++){
renderVarazslatOnFirstPage({addTextField, i})
}
renderVarazslatOnFirstPage({addTextField, i: 5, last: true})
}
function renderVarazslatOnSecondPage({addTextField, i, yOffset, rows, last}: RenderVarazslatParams) {
yOffset = yOffset || 0
rows = rows || 4
addTextField({
name: `varazskonyv_page2_spell${i}_nev`,
x: 58,
y: 748 - yOffset,
w: 210,
h: 18,
})
addTextField({
name: `varazskonyv_page2_spell${i}_szint`,
x: 280,
y: 748 - yOffset,
w: 12,
h: 18,
})
addTextField({
name: `varazskonyv_page2_spell${i}_hatoido`,
x: 298.5,
y: 748 - yOffset,
w: 64,
h: 18,
})
addTextField({
name: `varazskonyv_page2_spell${i}_tav`,
x: 364.5,
y: 748 - yOffset,
w: 23,
h: 18,
})
addTextField({
name: `varazskonyv_page2_spell${i}_terulet`,
x: 389.5,
y: 748 - yOffset,
w: 92,
h: 18,
})
addTextField({
name: `varazskonyv_page2_spell${i}_mento`,
x: 484.5,
y: 748 - yOffset,
w: 53,
h: 18,
})
const rounded = last === true
for (let j = 0; j < rows; j++) {
addTextField({
name: `varazskonyv_page2_spell${i}_leiras_${j}`,
x: 58,
y: 730 - yOffset - (16*j),
w: 480,
h: 16,
})
}
addTextField({
name: `varazskonyv_page2_spell${i}_leiras_${rows}`,
x: 58 + (rounded ? 10 : 0),
y: 730 - yOffset - (rows*16),
w: 480 - (rounded ? 20 : 0),
h: 16,
})
}
export function renderVarazskonyvSecondPage(addTextField: RenderTextFieldFunc) {
renderVarazslatOnSecondPage({addTextField, i: 0, yOffset: 0})
renderVarazslatOnSecondPage({addTextField, i: 1, yOffset: 103})
renderVarazslatOnSecondPage({addTextField, i: 2, yOffset: 205})
renderVarazslatOnSecondPage({addTextField, i: 3, yOffset: 310})
renderVarazslatOnSecondPage({addTextField, i: 4, yOffset: 412})
renderVarazslatOnSecondPage({addTextField, i: 5, yOffset: 517, rows: 3})
renderVarazslatOnSecondPage({addTextField, i: 6, yOffset: 608, last: true})
}
function renderVarazslatOnBookPage({addTextField, i, page, xOffset, yOffset, rows, last}: RenderVarazslatParams) {
xOffset = xOffset || 0
yOffset = yOffset || 0
rows = rows || 4
addTextField({
name: `varazskonyv_page${page}_spell${i}_nev`,
x: 58 + xOffset,
y: 748 - yOffset,
w: 210 - 28,
h: 18,
})
addTextField({
name: `varazskonyv_page${page}_spell${i}_szint`,
x: 280 + xOffset -28,
y: 748 - yOffset,
w: 12,
h: 18,
})
addTextField({
name: `varazskonyv_page${page}_spell${i}_hatoido`,
x: 298.5 + xOffset -28,
y: 748 - yOffset,
w: 64,
h: 18,
})
addTextField({
name: `varazskonyv_page${page}_spell${i}_tav`,
x: 364.5 + xOffset -28,
y: 748 - yOffset,
w: 23,
h: 18,
})
addTextField({
name: `varazskonyv_page${page}_spell${i}_terulet`,
x: 389.5 + xOffset -28,
y: 748 - yOffset,
w: 92,
h: 18,
})
addTextField({
name: `varazskonyv_page${page}_spell${i}_mento`,
x: 484.5 + xOffset -28,
y: 748 - yOffset,
w: 53,
h: 18,
})
const rounded = last === true
for (let j = 0; j < rows; j++) {
addTextField({
name: `varazskonyv_page${page}_spell${i}_leiras_${j}`,
x: 58 + xOffset,
y: 730 - yOffset - (16*j),
w: 480 - 28,
h: 16,
})
}
addTextField({
name: `varazskonyv_page${page}_spell${i}_leiras_${rows}`,
x: 58 + (rounded ? 10 : 0) + xOffset,
y: 730 - yOffset - (rows*16) + 3,
w: 480 - (rounded ? 20 : 0) - 28,
h: 14,
})
}
export function renderVarazskonyvRightPage(addTextField: RenderTextFieldFunc) {
renderVarazslatOnBookPage({addTextField, i: 0, page: 3, xOffset: 29, yOffset: 1})
renderVarazslatOnBookPage({addTextField, i: 1, page: 3, xOffset: 29, yOffset: 101})
renderVarazslatOnBookPage({addTextField, i: 2, page: 3, xOffset: 29, yOffset: 200})
renderVarazslatOnBookPage({addTextField, i: 3, page: 3, xOffset: 29, yOffset: 299})
renderVarazslatOnBookPage({addTextField, i: 4, page: 3, xOffset: 29, yOffset: 399})
renderVarazslatOnBookPage({addTextField, i: 5, page: 3, xOffset: 29, yOffset: 498})
renderVarazslatOnBookPage({addTextField, i: 6, page: 3, xOffset: 29, yOffset: 603, last: true})
}
export function renderVarazskonyvLeftPage(addTextField: RenderTextFieldFunc) {
renderVarazslatOnBookPage({addTextField, i: 0, page: 4, yOffset: 2})
renderVarazslatOnBookPage({addTextField, i: 1, page: 4, yOffset: 101})
renderVarazslatOnBookPage({addTextField, i: 2, page: 4, yOffset: 201})
renderVarazslatOnBookPage({addTextField, i: 3, page: 4, yOffset: 300})
renderVarazslatOnBookPage({addTextField, i: 4, page: 4, yOffset: 399})
renderVarazslatOnBookPage({addTextField, i: 5, page: 4, yOffset: 498})
renderVarazslatOnBookPage({addTextField, i: 6, page: 4, yOffset: 603, last: true})
}
+45 -36
View File
@@ -1,14 +1,17 @@
import {PDFTextField} from "pdf-lib"; import {RenderTextFieldFunc} from "./helpers";
import {TextFieldOptions} from "./helpers";
interface PreparedSpellsParams {
addTextField: RenderTextFieldFunc;
prefix: string;
varazslatszint: number;
xOffset: number;
yOffset: number;
max: number;
hasBonusz?: boolean;
}
function renderPreparedSpells( function renderPreparedSpells(
addTextField: (options: TextFieldOptions) => PDFTextField, {addTextField, prefix, varazslatszint, xOffset, yOffset, max, hasBonusz}: PreparedSpellsParams) {
prefix: string,
varazslatszint: number,
xOffset: number,
yOffset: number,
max: number,
hasBonusz?: boolean) {
addTextField({ addTextField({
name: `${prefix}_${varazslatszint}szintu_darab`, name: `${prefix}_${varazslatszint}szintu_darab`,
x: 194 + xOffset, x: 194 + xOffset,
@@ -41,10 +44,13 @@ function renderPreparedSpells(
}) })
} }
function renderEgyszeriVarazslat( interface EgyszeriVarazslatFullCaster {
addTextField: (options: TextFieldOptions) => PDFTextField, addTextField: RenderTextFieldFunc;
i: number, i: number;
last?: boolean,) { last?: boolean;
}
function renderEgyszeriVarazslat({addTextField, i, last}: EgyszeriVarazslatFullCaster) {
const offset = 74; const offset = 74;
addTextField({ addTextField({
name: `varazslatlap_full_egyszeri_${i}_nev`, name: `varazslatlap_full_egyszeri_${i}_nev`,
@@ -112,10 +118,13 @@ function renderEgyszeriVarazslat(
}) })
} }
function renderEgyszeriVarazslatHalfCaster( interface EgyszeriVarazslatHalfCaster {
addTextField: (options: TextFieldOptions) => PDFTextField, addTextField: RenderTextFieldFunc;
i: number, i: number;
last?: boolean,) { last?: boolean;
}
function renderEgyszeriVarazslatHalfCaster({addTextField, i, last}: EgyszeriVarazslatHalfCaster,) {
const offset = 91; const offset = 91;
addTextField({ addTextField({
name: `varazslatlap_half_egyszeri_${i}_nev`, name: `varazslatlap_half_egyszeri_${i}_nev`,
@@ -178,7 +187,7 @@ function renderEgyszeriVarazslatHalfCaster(
}) })
} }
export function renderFullCasterVarazslatlap(addTextField: (options: TextFieldOptions) => PDFTextField) { export function renderFullCasterVarazslatlap(addTextField: RenderTextFieldFunc) {
addTextField({ addTextField({
name: 'varazslatlap_full_nev_faj_osztaly', name: 'varazslatlap_full_nev_faj_osztaly',
x: 56, x: 56,
@@ -194,19 +203,19 @@ export function renderFullCasterVarazslatlap(addTextField: (options: TextFieldOp
h: 36, h: 36,
}) })
renderPreparedSpells(addTextField, 'varazslatlap_full', 0, 0, 0, 7); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_full', varazslatszint : 0, xOffset : 0, yOffset : 0, max : 7});
renderPreparedSpells(addTextField, 'varazslatlap_full',1, 247, -20, 6, true); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_full', varazslatszint : 1, xOffset : 247, yOffset : -20, max : 6, hasBonusz : true});
renderPreparedSpells(addTextField, 'varazslatlap_full',2, 0, -170, 5, true); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_full', varazslatszint : 2, xOffset : 0, yOffset : -170, max : 5, hasBonusz : true});
renderPreparedSpells(addTextField, 'varazslatlap_full',3, 247, -170, 5, true); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_full', varazslatszint : 3, xOffset : 247, yOffset : -170, max : 5, hasBonusz : true});
renderPreparedSpells(addTextField, 'varazslatlap_full',4, 0, -301, 3 ); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_full', varazslatszint : 4, xOffset : 0, yOffset : -301, max : 3} );
renderPreparedSpells(addTextField, 'varazslatlap_full',5, 247, -301, 3 ); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_full', varazslatszint : 5, xOffset : 247, yOffset : -301, max : 3} );
renderEgyszeriVarazslat(addTextField,0); renderEgyszeriVarazslat({addTextField : addTextField, i : 0});
renderEgyszeriVarazslat(addTextField,1); renderEgyszeriVarazslat({addTextField : addTextField, i : 1});
renderEgyszeriVarazslat(addTextField,2, true); renderEgyszeriVarazslat({addTextField : addTextField, i : 2, last : true});
} }
export function renderHalfCasterVarazslatlap(addTextField: (options: TextFieldOptions) => PDFTextField) { export function renderHalfCasterVarazslatlap(addTextField: RenderTextFieldFunc) {
addTextField({ addTextField({
name: 'varazslatlap_half_nev_faj_osztaly', name: 'varazslatlap_half_nev_faj_osztaly',
x: 56, x: 56,
@@ -222,13 +231,13 @@ export function renderHalfCasterVarazslatlap(addTextField: (options: TextFieldOp
h: 36, h: 36,
}) })
renderPreparedSpells(addTextField, 'varazslatlap_half',0, 0, -3, 5); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_half', varazslatszint : 0, xOffset : 0, yOffset : -3, max : 5});
renderPreparedSpells(addTextField, 'varazslatlap_half',1, 247, -3, 5); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_half', varazslatszint : 1, xOffset : 247, yOffset : -3, max : 5});
renderPreparedSpells(addTextField, 'varazslatlap_half',2, 0, -133, 4); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_half', varazslatszint : 2, xOffset : 0, yOffset : -133, max : 4});
renderPreparedSpells(addTextField, 'varazslatlap_half',3, 247, -133, 3); renderPreparedSpells({addTextField : addTextField, prefix : 'varazslatlap_half', varazslatszint : 3, xOffset : 247, yOffset : -133, max : 3});
renderEgyszeriVarazslatHalfCaster(addTextField,0); renderEgyszeriVarazslatHalfCaster({addTextField : addTextField, i : 0});
renderEgyszeriVarazslatHalfCaster(addTextField,1); renderEgyszeriVarazslatHalfCaster({addTextField : addTextField, i : 1});
renderEgyszeriVarazslatHalfCaster(addTextField,2); renderEgyszeriVarazslatHalfCaster({addTextField : addTextField, i : 2});
renderEgyszeriVarazslatHalfCaster(addTextField,3, true); renderEgyszeriVarazslatHalfCaster({addTextField : addTextField, i : 3, last : true});
} }