add varazslatlapok

This commit is contained in:
2024-02-21 17:13:43 +01:00
parent c655c3e24a
commit 949c21407d
4 changed files with 245 additions and 0 deletions
BIN
View File
Binary file not shown.
+11
View File
@@ -4,6 +4,7 @@ import fontKit from "@pdf-lib/fontkit"
import {addTextFieldFactory} from "./helpers"; 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";
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'})
@@ -23,6 +24,16 @@ export async function Karlap() {
const addTextField1 = addTextFieldFactory(form, pdfFont, page1) const addTextField1 = addTextFieldFactory(form, pdfFont, page1)
renderSecondPage(addTextField1); renderSecondPage(addTextField1);
const page2 = doc.getPage(2)
page2.setFont(pdfFont)
const addTextField2 = addTextFieldFactory(form, pdfFont, page2)
renderFullCasterVarazslatlap(addTextField2);
const page3 = doc.getPage(3)
page3.setFont(pdfFont)
const addTextField3 = addTextFieldFactory(form, pdfFont, page3)
renderHalfCasterVarazslatlap(addTextField3);
form.updateFieldAppearances(pdfFont) form.updateFieldAppearances(pdfFont)
const pdfBytes = await doc.save() const pdfBytes = await doc.save()
Binary file not shown.
+234
View File
@@ -0,0 +1,234 @@
import {PDFTextField} from "pdf-lib";
import {TextFieldOptions} from "./helpers";
function renderPreparedSpells(
addTextField: (options: TextFieldOptions) => PDFTextField,
prefix: string,
varazslatszint: number,
xOffset: number,
yOffset: number,
max: number,
hasBonusz?: boolean) {
addTextField({
name: `${prefix}_${varazslatszint}szintu_darab`,
x: 194 + xOffset,
y: 685 + yOffset,
w: 8,
h: 18,
})
addTextField({
name: `${prefix}_${varazslatszint}szintu_nf`,
x: 265 + xOffset,
y: 685 + yOffset,
w: 20,
h: 18,
})
for (let i = 0; i < max - 1; i++) {
addTextField({
name: `${prefix}_${varazslatszint}szintu_${i}`,
x: 58 + xOffset,
y: 665 + yOffset - (i * 19.85),
w: 233,
h: 18,
})
}
addTextField({
name: `${prefix}_${varazslatszint}szintu_${max - 1}`,
x: 65 + xOffset + (hasBonusz === true ? 30 : 0),
y: 665 + yOffset - ((max - 1) * 19.85),
w: 218 - (hasBonusz === true ? 30 : 0),
h: 18,
})
}
function renderEgyszeriVarazslat(
addTextField: (options: TextFieldOptions) => PDFTextField,
i: number,
last?: boolean,) {
const offset = 74;
addTextField({
name: `varazslatlap_full_egyszeri_${i}_nev`,
x: 58,
y: 259 - (i*offset),
w: 210,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_szint`,
x: 280,
y: 259 - (i*offset),
w: 12,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_hatoido`,
x: 298.5,
y: 259 - (i*offset),
w: 64,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_tav`,
x: 364.5,
y: 259 - (i*offset),
w: 23,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_terulet`,
x: 389.5,
y: 259 - (i*offset),
w: 92,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_mento`,
x: 484.5,
y: 259 - (i*offset),
w: 53,
h: 18,
})
const rounded = last === true
addTextField({
name: `varazslatlap_full_egyszeri_${i}_leiras_0`,
x: 58,
y: 240 - (i*offset),
w: 480,
h: 16,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_leiras_1`,
x: 58,
y: 240 - (i*offset) - 16,
w: 480,
h: 16,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_leiras_2`,
x: 58 + (rounded ? 10 : 0),
y: 240 - (i*offset) - 32,
w: 480 - (rounded ? 20 : 0),
h: 16,
})
}
function renderEgyszeriVarazslatHalfCaster(
addTextField: (options: TextFieldOptions) => PDFTextField,
i: number,
last?: boolean,) {
const offset = 91;
addTextField({
name: `varazslatlap_half_egyszeri_${i}_nev`,
x: 58,
y: 401 - (i*offset),
w: 210,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_szint`,
x: 280,
y: 401 - (i*offset),
w: 12,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_hatoido`,
x: 298.5,
y: 401 - (i*offset),
w: 64,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_tav`,
x: 364.5,
y: 401 - (i*offset),
w: 23,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_terulet`,
x: 389.5,
y: 401 - (i*offset),
w: 92,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_mento`,
x: 484.5,
y: 401 - (i*offset),
w: 53,
h: 18,
})
const rounded = last === true
for (let j = 0; j < 3; j++) {
addTextField({
name: `varazslatlap_half_egyszeri_${i}_leiras_${j}`,
x: 58,
y: 381 - (i*offset) - (16*j),
w: 480,
h: 16,
})
}
addTextField({
name: `varazslatlap_half_egyszeri_${i}_leiras_3`,
x: 58 + (rounded ? 10 : 0),
y: 381 - (i*offset) - 48,
w: 480 - (rounded ? 20 : 0),
h: 16,
})
}
export function renderFullCasterVarazslatlap(addTextField: (options: TextFieldOptions) => PDFTextField) {
addTextField({
name: 'varazslatlap_full_nev_faj_osztaly',
x: 56,
y: 731,
w: 420,
h: 16,
})
addTextField({
name: 'varazslatlap_full_szint',
x: 493,
y: 711,
w: 36,
h: 36,
})
renderPreparedSpells(addTextField, 'varazslatlap_full', 0, 0, 0, 7);
renderPreparedSpells(addTextField, 'varazslatlap_full',1, 247, -20, 6, true);
renderPreparedSpells(addTextField, 'varazslatlap_full',2, 0, -170, 5, true);
renderPreparedSpells(addTextField, 'varazslatlap_full',3, 247, -170, 5, true);
renderPreparedSpells(addTextField, 'varazslatlap_full',4, 0, -301, 3 );
renderPreparedSpells(addTextField, 'varazslatlap_full',5, 247, -301, 3 );
renderEgyszeriVarazslat(addTextField,0);
renderEgyszeriVarazslat(addTextField,1);
renderEgyszeriVarazslat(addTextField,2, true);
}
export function renderHalfCasterVarazslatlap(addTextField: (options: TextFieldOptions) => PDFTextField) {
addTextField({
name: 'varazslatlap_half_nev_faj_osztaly',
x: 56,
y: 731,
w: 420,
h: 16,
})
addTextField({
name: 'varazslatlap_half_szint',
x: 493,
y: 726,
w: 36,
h: 36,
})
renderPreparedSpells(addTextField, 'varazslatlap_half',0, 0, -3, 5);
renderPreparedSpells(addTextField, 'varazslatlap_half',1, 247, -3, 5);
renderPreparedSpells(addTextField, 'varazslatlap_half',2, 0, -133, 4);
renderPreparedSpells(addTextField, 'varazslatlap_half',3, 247, -133, 3);
renderEgyszeriVarazslatHalfCaster(addTextField,0);
renderEgyszeriVarazslatHalfCaster(addTextField,1);
renderEgyszeriVarazslatHalfCaster(addTextField,2);
renderEgyszeriVarazslatHalfCaster(addTextField,3, true);
}