From 575a58648fedaf13b39b386197b1dcce4ff93db3 Mon Sep 17 00:00:00 2001 From: morbalint Date: Wed, 14 Feb 2024 00:07:18 +0100 Subject: [PATCH] add README.md and form field font workaround --- README.md | 9 +++++++++ karlap.pdf | Bin 125527 -> 136835 bytes karlap.ts | 11 ++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f48f94a --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +## KéM 2e karakterlap + +A projekt célja, a Kard és Mágia második kiadásához kitölthető PDF karakterlap előállítása. + +## Hogy használd? + +1. `yarn install` +2. `tsc -w` +3. `node dist/index.js` diff --git a/karlap.pdf b/karlap.pdf index b66e75ffc8bd6ea56441e72cde387b535c30c3e7..9e31effbf896de4e3fe94078510ce5cb15bd6ef9 100644 GIT binary patch delta 15037 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 B8q@#) diff --git a/karlap.ts b/karlap.ts index cc6fbee..a42310f 100644 --- a/karlap.ts +++ b/karlap.ts @@ -1,4 +1,4 @@ -import {PageSizes, PDFDocument, PDFFont, PDFPage, rgb} from "pdf-lib"; +import {PDFDocument, PDFPage, rgb} from "pdf-lib"; import fs from "fs/promises"; import fontKit from "@pdf-lib/fontkit" @@ -12,17 +12,21 @@ export async function Karlap() { const form = doc.getForm() const page0 = doc.getPage(0) + page0.setFont(pdfFont) - const addTextFieldToPage = (page: PDFPage) => (options: {name: string, x: number, y: number, w: number, h: number}) => { + const addTextFieldToPage = (page: PDFPage) => (options: {name: string, x: number, y: number, w: number, h: number, text?: string}) => { const field = form.createTextField(options.name) - field.addToPage(page0, { + field.setText(options.text) + field.addToPage(page, { x: options.x, y: options.y, font: pdfFont, borderColor: rgb(1,1,1), + borderWidth: 0, width: options.w, height: options.h, }) + return field } const addTextField0 = addTextFieldToPage(page0) @@ -261,6 +265,7 @@ export async function Karlap() { h: 14 }) + form.updateFieldAppearances(pdfFont) const pdfBytes = await doc.save() await fs.writeFile("karlap.pdf", pdfBytes)