From 669cbf2f2bdae1413d0e600232c8e76a3e845ac9 Mon Sep 17 00:00:00 2001 From: Kyohei Fukuda Date: Tue, 18 Feb 2025 10:39:31 +0900 Subject: [PATCH] feat: add PDF generation and merging functionality in node-playground --- package.json | 2 +- playground/.gitignore | 3 ++- playground/node-playground/a.pdf | Bin 0 -> 6870 bytes playground/node-playground/b.pdf | Bin 0 -> 6929 bytes playground/{ => node-playground}/generate.js | 2 +- playground/node-playground/merge.js | 11 +++++++++++ playground/package.json | 1 + 7 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 playground/node-playground/a.pdf create mode 100644 playground/node-playground/b.pdf rename playground/{ => node-playground}/generate.js (91%) create mode 100644 playground/node-playground/merge.js diff --git a/package.json b/package.json index 323a7370..0426da40 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "clean:generator": "npm run -w packages/generator clean", "clean:manipulator": "npm run -w packages/manipulator clean", "clean:ui": "npm run -w packages/ui clean", - "build": "npm run clean && npm run build:common && npm run build:converter && npm run build:schemas && npm-run-all --parallel build:generator build:ui", + "build": "npm run clean && npm run build:common && npm run build:converter && npm run build:schemas && npm-run-all --parallel build:generator build:ui build:manipulator", "build:common": "npm run -w packages/common build", "build:converter": "npm run -w packages/converter build", "build:schemas": "npm run -w packages/schemas build", diff --git a/playground/.gitignore b/playground/.gitignore index 5d50f4b6..1f845bd7 100644 --- a/playground/.gitignore +++ b/playground/.gitignore @@ -23,6 +23,7 @@ dist-ssr *.sln *.sw? -test.pdf +node-playground/test-generate.pdf +node-playground/test-merge.pdf public/template-assets/**/thumbnail.png scripts/thumbnail-hash-map.json \ No newline at end of file diff --git a/playground/node-playground/a.pdf b/playground/node-playground/a.pdf new file mode 100644 index 0000000000000000000000000000000000000000..694f4fcd470ec2579c84f712603cd27b9870ff1a GIT binary patch literal 6870 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 literal 0 HcmV?d00001 diff --git a/playground/node-playground/b.pdf b/playground/node-playground/b.pdf new file mode 100644 index 0000000000000000000000000000000000000000..36d465f28e7f2b151a883e9e0578a7debd748831 GIT binary patch literal 6929 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 { console.log(pdf); - fs.writeFileSync(path.join(__dirname, `test.pdf`), pdf); + fs.writeFileSync(path.join(__dirname, `test-generate.pdf`), pdf); }); \ No newline at end of file diff --git a/playground/node-playground/merge.js b/playground/node-playground/merge.js new file mode 100644 index 00000000..71822864 --- /dev/null +++ b/playground/node-playground/merge.js @@ -0,0 +1,11 @@ +const { merge } = require('@pdfme/manipulator'); +const fs = require('fs'); +const path = require('path'); + +const aPdf = fs.readFileSync(path.join(__dirname, 'a.pdf')); +const bPdf = fs.readFileSync(path.join(__dirname, 'b.pdf')); + +merge([aPdf, bPdf]).then((pdf) => { + console.log(pdf); + fs.writeFileSync(path.join(__dirname, `test-merge.pdf`), pdf); +}); \ No newline at end of file diff --git a/playground/package.json b/playground/package.json index 215c80f6..be59b490 100644 --- a/playground/package.json +++ b/playground/package.json @@ -19,6 +19,7 @@ "@pdfme/generator": "file:../packages/generator/dist", "@pdfme/schemas": "file:../packages/schemas/dist", "@pdfme/ui": "file:../packages/ui/dist", + "@pdfme/manipulator": "file:../packages/manipulator/dist", "canvas": "^2.11.2", "esbuild": "^0.19.10", "lucide-react": "^0.475.0",