@pdfme/manipulator 5.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.organize = exports.move = exports.rotate = exports.insert = exports.remove = exports.split = exports.merge = void 0;
4
+ const pdf_lib_1 = require("@pdfme/pdf-lib");
5
+ const merge = async (pdfs) => {
6
+ if (!pdfs.length) {
7
+ throw new Error('[@pdfme/manipulator] At least one PDF is required for merging');
8
+ }
9
+ const mergedPdf = await pdf_lib_1.PDFDocument.create();
10
+ for (const buffer of pdfs) {
11
+ const srcDoc = await pdf_lib_1.PDFDocument.load(buffer);
12
+ const copiedPages = await mergedPdf.copyPages(srcDoc, srcDoc.getPageIndices());
13
+ copiedPages.forEach((page) => mergedPdf.addPage(page));
14
+ }
15
+ return mergedPdf.save();
16
+ };
17
+ exports.merge = merge;
18
+ const split = async (pdf, ranges) => {
19
+ if (!ranges.length) {
20
+ throw new Error('[@pdfme/manipulator] At least one range is required for splitting');
21
+ }
22
+ const originalPdf = await pdf_lib_1.PDFDocument.load(pdf);
23
+ const numPages = originalPdf.getPages().length;
24
+ const result = [];
25
+ for (const { start = 0, end = numPages - 1 } of ranges) {
26
+ if (start < 0 || end >= numPages || start > end) {
27
+ throw new Error(`[@pdfme/manipulator] Invalid range: start=${start}, end=${end}, total pages=${numPages}`);
28
+ }
29
+ const newPdf = await pdf_lib_1.PDFDocument.create();
30
+ const pages = await newPdf.copyPages(originalPdf, Array.from({ length: end - start + 1 }, (_, i) => i + start));
31
+ pages.forEach((page) => newPdf.addPage(page));
32
+ result.push(await newPdf.save());
33
+ }
34
+ return result;
35
+ };
36
+ exports.split = split;
37
+ const remove = async (pdf, pages) => {
38
+ if (!pages.length) {
39
+ throw new Error('[@pdfme/manipulator] At least one page number is required for removal');
40
+ }
41
+ const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
42
+ const numPages = pdfDoc.getPageCount();
43
+ if (pages.some((page) => page < 0 || page >= numPages)) {
44
+ throw new Error(`[@pdfme/manipulator] Invalid page number: pages must be between 0 and ${numPages - 1}`);
45
+ }
46
+ pages.sort((a, b) => b - a).forEach((pageIndex) => pdfDoc.removePage(pageIndex));
47
+ return pdfDoc.save();
48
+ };
49
+ exports.remove = remove;
50
+ const insert = async (basePdf, inserts) => {
51
+ inserts.sort((a, b) => a.position - b.position);
52
+ let currentPdf = basePdf;
53
+ let offset = 0;
54
+ for (let i = 0; i < inserts.length; i++) {
55
+ const { pdf, position } = inserts[i];
56
+ const actualPos = position + offset;
57
+ const basePdfDoc = await pdf_lib_1.PDFDocument.load(currentPdf);
58
+ const insertDoc = await pdf_lib_1.PDFDocument.load(pdf);
59
+ const numPages = basePdfDoc.getPageCount();
60
+ if (actualPos < 0 || actualPos > numPages) {
61
+ throw new Error(`[@pdfme/manipulator] Invalid position: must be between 0 and ${numPages}`);
62
+ }
63
+ const newPdfDoc = await pdf_lib_1.PDFDocument.create();
64
+ if (actualPos > 0) {
65
+ const beforePages = await newPdfDoc.copyPages(basePdfDoc, Array.from({ length: actualPos }, (_, idx) => idx));
66
+ beforePages.forEach((page) => newPdfDoc.addPage(page));
67
+ }
68
+ const insertPages = await newPdfDoc.copyPages(insertDoc, insertDoc.getPageIndices());
69
+ insertPages.forEach((page) => newPdfDoc.addPage(page));
70
+ if (actualPos < numPages) {
71
+ const afterPages = await newPdfDoc.copyPages(basePdfDoc, Array.from({ length: numPages - actualPos }, (_, idx) => idx + actualPos));
72
+ afterPages.forEach((page) => newPdfDoc.addPage(page));
73
+ }
74
+ currentPdf = await newPdfDoc.save();
75
+ offset += insertDoc.getPageCount();
76
+ }
77
+ return currentPdf;
78
+ };
79
+ exports.insert = insert;
80
+ const rotate = async (pdf, degrees, pageNumbers) => {
81
+ if (!Number.isInteger(degrees) || degrees % 90 !== 0) {
82
+ throw new Error('[@pdfme/manipulator] Rotation degrees must be a multiple of 90');
83
+ }
84
+ const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
85
+ const pages = pdfDoc.getPages();
86
+ if (!pages.length) {
87
+ throw new Error('[@pdfme/manipulator] PDF has no pages to rotate');
88
+ }
89
+ const normalizedDegrees = ((degrees % 360) + 360) % 360;
90
+ if (normalizedDegrees % 90 !== 0) {
91
+ throw new Error('[@pdfme/manipulator] Rotation degrees must be a multiple of 90');
92
+ }
93
+ if (pageNumbers) {
94
+ if (pageNumbers.some((page) => page < 0 || page >= pages.length)) {
95
+ throw new Error(`[@pdfme/manipulator] Invalid page number: pages must be between 0 and ${pages.length - 1}`);
96
+ }
97
+ }
98
+ const pagesToRotate = pageNumbers || pages.map((_, i) => i);
99
+ pagesToRotate.forEach((pageNum) => {
100
+ const page = pages[pageNum];
101
+ if (page) {
102
+ page.setRotation({
103
+ type: pdf_lib_1.RotationTypes.Degrees,
104
+ angle: normalizedDegrees % 360,
105
+ });
106
+ }
107
+ });
108
+ return pdfDoc.save();
109
+ };
110
+ exports.rotate = rotate;
111
+ const move = async (pdf, operation) => {
112
+ const { from, to } = operation;
113
+ const pdfDoc = await pdf_lib_1.PDFDocument.load(pdf);
114
+ const currentPageCount = pdfDoc.getPageCount();
115
+ if (from < 0 || from >= currentPageCount || to < 0 || to >= currentPageCount) {
116
+ throw new Error(`[@pdfme/manipulator] Invalid page number: from=${from}, to=${to}, total pages=${currentPageCount}`);
117
+ }
118
+ if (from === to) {
119
+ return pdf;
120
+ }
121
+ const page = pdfDoc.getPage(from);
122
+ pdfDoc.removePage(from);
123
+ const adjustedTo = from < to ? to - 1 : to;
124
+ pdfDoc.insertPage(adjustedTo, page);
125
+ return pdfDoc.save();
126
+ };
127
+ exports.move = move;
128
+ const organize = async (pdf, actions) => {
129
+ if (!actions.length) {
130
+ throw new Error('[@pdfme/manipulator] At least one action is required');
131
+ }
132
+ let currentPdf = await pdf_lib_1.PDFDocument.load(pdf);
133
+ for (const action of actions) {
134
+ const currentBuffer = (await currentPdf.save()).buffer;
135
+ switch (action.type) {
136
+ case 'remove':
137
+ currentPdf = await pdf_lib_1.PDFDocument.load(await (0, exports.remove)(currentBuffer, [action.data.position]));
138
+ break;
139
+ case 'insert':
140
+ currentPdf = await pdf_lib_1.PDFDocument.load(await (0, exports.insert)(currentBuffer, [action.data]));
141
+ break;
142
+ case 'replace': {
143
+ const withoutTarget = await (0, exports.remove)(currentBuffer, [action.data.position]);
144
+ currentPdf = await pdf_lib_1.PDFDocument.load(await (0, exports.insert)(withoutTarget, [action.data]));
145
+ break;
146
+ }
147
+ case 'rotate':
148
+ currentPdf = await pdf_lib_1.PDFDocument.load(await (0, exports.rotate)(currentBuffer, action.data.degrees, [action.data.position]));
149
+ break;
150
+ case 'move':
151
+ currentPdf = await pdf_lib_1.PDFDocument.load(await (0, exports.move)(currentBuffer, action.data));
152
+ break;
153
+ default:
154
+ throw new Error(`[@pdfme/manipulator] Unknown action type: ${action.type}`);
155
+ }
156
+ }
157
+ return currentPdf.save();
158
+ };
159
+ exports.organize = organize;
160
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}