@pdfme/common 5.5.7-dev.3 → 5.5.7-dev.4

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.
@@ -2,283 +2,227 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDynamicTemplate = void 0;
4
4
  const helper_js_1 = require("./helper.js");
5
- class LayoutNode {
6
- constructor({ width = 0, height = 0 } = {}) {
7
- Object.defineProperty(this, "index", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: 0
12
- });
13
- Object.defineProperty(this, "schema", {
14
- enumerable: true,
15
- configurable: true,
16
- writable: true,
17
- value: void 0
18
- });
19
- Object.defineProperty(this, "children", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: []
24
- });
25
- Object.defineProperty(this, "width", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: 0
30
- });
31
- Object.defineProperty(this, "height", {
32
- enumerable: true,
33
- configurable: true,
34
- writable: true,
35
- value: 0
36
- });
37
- Object.defineProperty(this, "padding", {
38
- enumerable: true,
39
- configurable: true,
40
- writable: true,
41
- value: [0, 0, 0, 0]
42
- });
43
- Object.defineProperty(this, "position", {
44
- enumerable: true,
45
- configurable: true,
46
- writable: true,
47
- value: { x: 0, y: 0 }
5
+ /** Floating point tolerance for comparisons */
6
+ const EPSILON = 0.01;
7
+ /** Calculate the content height of a page (drawable area excluding padding) */
8
+ const getContentHeight = (basePdf) => basePdf.height - basePdf.padding[0] - basePdf.padding[2];
9
+ /** Get the input value for a schema */
10
+ const getSchemaValue = (schema, input) => (schema.readOnly ? schema.content : input?.[schema.name]) || '';
11
+ /**
12
+ * Normalize schemas within a single page into layout items.
13
+ * Returns items sorted by Y coordinate with their order preserved.
14
+ */
15
+ function normalizePageSchemas(pageSchemas, paddingTop) {
16
+ const items = [];
17
+ const orderMap = new Map();
18
+ pageSchemas.forEach((schema, index) => {
19
+ const localY = schema.position.y - paddingTop;
20
+ items.push({
21
+ schema: (0, helper_js_1.cloneDeep)(schema),
22
+ baseY: localY,
23
+ height: schema.height,
24
+ dynamicHeights: [schema.height], // Will be updated later
48
25
  });
49
- this.width = width;
50
- this.height = height;
51
- }
52
- setIndex(index) {
53
- this.index = index;
54
- }
55
- setSchema(schema) {
56
- this.schema = schema;
57
- }
58
- setWidth(width) {
59
- this.width = width;
60
- }
61
- setHeight(height) {
62
- this.height = height;
63
- }
64
- setPadding(padding) {
65
- this.padding = padding;
66
- }
67
- setPosition(position) {
68
- this.position = position;
69
- }
70
- insertChild(child) {
71
- const index = this.getChildCount();
72
- child.setIndex(index);
73
- this.children.splice(index, 0, child);
74
- }
75
- getChildCount() {
76
- return this.children.length;
77
- }
78
- getChild(index) {
79
- return this.children[index];
80
- }
81
- }
82
- function createPage(basePdf) {
83
- const page = new LayoutNode({ ...basePdf });
84
- page.setPadding(basePdf.padding);
85
- return page;
86
- }
87
- function createNode(arg) {
88
- const { position, width, height, schema } = arg;
89
- const node = new LayoutNode({ width, height });
90
- node.setPosition(position);
91
- node.setSchema(schema);
92
- return node;
93
- }
94
- function resortChildren(page, orderMap) {
95
- page.children = page.children
96
- .sort((a, b) => {
97
- const orderA = orderMap.get(a.schema?.name ?? '');
98
- const orderB = orderMap.get(b.schema?.name ?? '');
99
- if (orderA === undefined || orderB === undefined) {
100
- throw new Error('[@pdfme/common] order is not defined');
26
+ orderMap.set(schema.name, index);
27
+ });
28
+ // Sort by Y coordinate (preserve original order for same position)
29
+ items.sort((a, b) => {
30
+ if (Math.abs(a.baseY - b.baseY) > EPSILON) {
31
+ return a.baseY - b.baseY;
101
32
  }
102
- return orderA - orderB;
103
- })
104
- .map((child, index) => {
105
- child.setIndex(index);
106
- return child;
33
+ return (orderMap.get(a.schema.name) ?? 0) - (orderMap.get(b.schema.name) ?? 0);
107
34
  });
35
+ return { items, orderMap };
108
36
  }
109
- async function createOnePage(arg) {
110
- const { basePdf, schemaPage, orderMap, input, options, _cache, getDynamicHeights } = arg;
111
- const page = createPage(basePdf);
112
- const schemaPositions = [];
113
- const sortedSchemaEntries = (0, helper_js_1.cloneDeep)(schemaPage).sort((a, b) => a.position.y - b.position.y);
114
- const diffMap = new Map();
115
- for (const schema of sortedSchemaEntries) {
116
- const { position, width } = schema;
117
- const opt = { schema, basePdf, options, _cache };
118
- const value = (schema.readOnly ? schema.content : input?.[schema.name]) || '';
119
- const heights = await getDynamicHeights(value, opt);
120
- const heightsSum = heights.reduce((acc, cur) => acc + cur, 0);
121
- const originalHeight = schema.height;
122
- if (heightsSum !== originalHeight) {
123
- diffMap.set(position.y + originalHeight, heightsSum - originalHeight);
37
+ /**
38
+ * Place rows on pages, splitting across pages as needed.
39
+ * @returns The final global Y coordinate after placement
40
+ */
41
+ function placeRowsOnPages(schema, dynamicHeights, startGlobalY, contentHeight, paddingTop, pages) {
42
+ let currentRowIndex = 0;
43
+ let currentPageIndex = Math.floor(startGlobalY / contentHeight);
44
+ let currentYInPage = startGlobalY % contentHeight;
45
+ if (currentYInPage < 0)
46
+ currentYInPage = 0;
47
+ let actualGlobalEndY = 0;
48
+ const isSplittable = dynamicHeights.length > 1;
49
+ while (currentRowIndex < dynamicHeights.length) {
50
+ // Ensure page exists
51
+ while (pages.length <= currentPageIndex)
52
+ pages.push([]);
53
+ const spaceLeft = contentHeight - currentYInPage;
54
+ const rowHeight = dynamicHeights[currentRowIndex];
55
+ // If row doesn't fit, move to next page
56
+ if (rowHeight > spaceLeft + EPSILON) {
57
+ const isAtPageStart = Math.abs(spaceLeft - contentHeight) <= EPSILON;
58
+ if (!isAtPageStart) {
59
+ currentPageIndex++;
60
+ currentYInPage = 0;
61
+ continue;
62
+ }
63
+ // Force placement for oversized rows that don't fit even on a fresh page
124
64
  }
125
- heights.forEach((height, index) => {
126
- let y = schema.position.y + heights.reduce((acc, cur, i) => (i < index ? acc + cur : acc), 0);
127
- for (const [diffY, diff] of diffMap.entries()) {
128
- if (diffY <= schema.position.y) {
129
- y += diff;
130
- }
65
+ // Pack as many rows as possible on this page
66
+ let chunkHeight = 0;
67
+ const startRowIndex = currentRowIndex;
68
+ while (currentRowIndex < dynamicHeights.length) {
69
+ const h = dynamicHeights[currentRowIndex];
70
+ if (currentYInPage + chunkHeight + h <= contentHeight + EPSILON) {
71
+ chunkHeight += h;
72
+ currentRowIndex++;
131
73
  }
132
- const node = createNode({ schema, position: { ...position, y }, width, height });
133
- schemaPositions.push(y + height + basePdf.padding[2]);
134
- page.insertChild(node);
135
- });
136
- }
137
- const pageHeight = Math.max(...schemaPositions, basePdf.height - basePdf.padding[2]);
138
- page.setHeight(pageHeight);
139
- resortChildren(page, orderMap);
140
- return page;
141
- }
142
- function breakIntoPages(arg) {
143
- const { longPage, orderMap, basePdf } = arg;
144
- const pages = [createPage(basePdf)];
145
- const [paddingTop, , paddingBottom] = basePdf.padding;
146
- const yAdjustments = [];
147
- const getPageHeight = (pageIndex) => basePdf.height - paddingBottom - (pageIndex > 0 ? paddingTop : 0);
148
- const calculateNewY = (y, pageIndex) => {
149
- const newY = y - pageIndex * (basePdf.height - paddingTop - paddingBottom);
150
- while (pages.length <= pageIndex) {
151
- if (!pages[pageIndex]) {
152
- pages.push(createPage(basePdf));
153
- yAdjustments.push({ page: pageIndex, value: (newY - paddingTop) * -1 });
74
+ else {
75
+ break;
154
76
  }
155
77
  }
156
- return newY + (yAdjustments.find((adj) => adj.page === pageIndex)?.value || 0);
157
- };
158
- const calculateTargetPageIndex = (y) => {
159
- let accumulatedHeight = 0;
160
- let pageIndex = 0;
161
- while (true) {
162
- const currentPageHeight = getPageHeight(pageIndex);
163
- if (y <= accumulatedHeight + currentPageHeight) {
164
- return pageIndex;
165
- }
166
- accumulatedHeight += currentPageHeight;
167
- pageIndex++;
78
+ // Don't leave header alone on a page without any data rows
79
+ // If only header fits and there are data rows remaining, move everything to next page
80
+ // BUT: if already at page top, don't move (prevents infinite loop when data row is too large)
81
+ const isAtPageTop = currentYInPage <= EPSILON;
82
+ if (isSplittable &&
83
+ startRowIndex === 0 &&
84
+ currentRowIndex === 1 &&
85
+ dynamicHeights.length > 1 &&
86
+ !isAtPageTop) {
87
+ currentRowIndex = 0;
88
+ currentPageIndex++;
89
+ currentYInPage = 0;
90
+ continue;
168
91
  }
169
- };
170
- const children = longPage.children.sort((a, b) => a.position.y - b.position.y);
171
- let currentPageIndex = 0;
172
- for (let i = 0; i < children.length; i++) {
173
- const { schema, position, height, width } = children[i];
174
- const { y, x } = position;
175
- let targetPageIndex = calculateTargetPageIndex(y);
176
- if (targetPageIndex < currentPageIndex) {
177
- targetPageIndex = currentPageIndex;
92
+ // Force at least one row to prevent infinite loop
93
+ if (currentRowIndex === startRowIndex) {
94
+ chunkHeight += dynamicHeights[currentRowIndex];
95
+ currentRowIndex++;
178
96
  }
179
- let newY = calculateNewY(y, targetPageIndex);
180
- while (newY + height > basePdf.height - paddingBottom) {
181
- const currentPageContentHeight = getPageHeight(targetPageIndex + 1);
182
- if (height > currentPageContentHeight) {
183
- targetPageIndex++;
184
- newY = calculateNewY(y, targetPageIndex);
185
- break;
186
- }
187
- targetPageIndex++;
188
- newY = calculateNewY(y, targetPageIndex);
97
+ // Create schema for this chunk
98
+ const newSchema = {
99
+ ...schema,
100
+ height: chunkHeight,
101
+ position: { ...schema.position, y: currentYInPage + paddingTop },
102
+ };
103
+ // Set bodyRange for splittable elements
104
+ // dynamicHeights[0] = header row, dynamicHeights[1] = body[0]
105
+ // So subtract 1 to convert to body index
106
+ if (isSplittable) {
107
+ newSchema.__bodyRange = {
108
+ start: startRowIndex === 0 ? 0 : startRowIndex - 1,
109
+ end: currentRowIndex - 1,
110
+ };
111
+ newSchema.__isSplit = startRowIndex > 0;
112
+ }
113
+ pages[currentPageIndex].push(newSchema);
114
+ // Update position
115
+ currentYInPage += chunkHeight;
116
+ if (currentYInPage >= contentHeight - EPSILON) {
117
+ currentPageIndex++;
118
+ currentYInPage = 0;
189
119
  }
190
- currentPageIndex = targetPageIndex;
191
- if (!schema)
192
- throw new Error('[@pdfme/common] schema is undefined');
193
- const clonedElement = createNode({ schema, position: { x, y: newY }, width, height });
194
- pages[targetPageIndex].insertChild(clonedElement);
120
+ actualGlobalEndY = currentPageIndex * contentHeight + currentYInPage;
195
121
  }
196
- pages.forEach((page) => resortChildren(page, orderMap));
197
- return pages;
122
+ return actualGlobalEndY;
198
123
  }
199
- function createNewTemplate(pages, basePdf) {
200
- const newTemplate = {
201
- schemas: Array.from({ length: pages.length }, () => []),
202
- basePdf: basePdf,
203
- };
204
- const nameToSchemas = new Map();
205
- (0, helper_js_1.cloneDeep)(pages).forEach((page, pageIndex) => {
206
- page.children.forEach((child) => {
207
- const { schema } = child;
208
- if (!schema)
209
- throw new Error('[@pdfme/common] schema is undefined');
210
- const name = schema.name;
211
- if (!nameToSchemas.has(name)) {
212
- nameToSchemas.set(name, []);
213
- }
214
- nameToSchemas.get(name).push(child);
215
- const sameNameSchemas = page.children.filter((c) => c.schema?.name === name);
216
- const start = nameToSchemas.get(name).length - sameNameSchemas.length;
217
- if (sameNameSchemas.length > 0) {
218
- if (!sameNameSchemas[0].schema) {
219
- throw new Error('[@pdfme/common] schema is undefined');
220
- }
221
- // Use the first schema to get the schema and position
222
- const schema = sameNameSchemas[0].schema;
223
- const height = sameNameSchemas.reduce((acc, cur) => acc + cur.height, 0);
224
- const position = sameNameSchemas[0].position;
225
- // Currently, __bodyRange exists for table schemas, but if we make it more abstract,
226
- // it could be used for other schemas as well to render schemas that have been split by page breaks, starting from the middle.
227
- schema.__bodyRange = {
228
- start: Math.max(start - 1, 0),
229
- end: start + sameNameSchemas.length - 1,
230
- };
231
- // Currently, this is used to determine whether to display the header when a table is split.
232
- schema.__isSplit = start > 0;
233
- const newSchema = Object.assign({}, schema, { position, height });
234
- const index = newTemplate.schemas[pageIndex].findIndex((s) => s.name === name);
235
- if (index !== -1) {
236
- newTemplate.schemas[pageIndex][index] = newSchema;
237
- }
238
- else {
239
- newTemplate.schemas[pageIndex].push(newSchema);
240
- }
241
- }
242
- });
124
+ /** Sort elements within each page by their original order */
125
+ function sortPagesByOrder(pages, orderMap) {
126
+ pages.forEach((page) => {
127
+ page.sort((a, b) => (orderMap.get(a.name) ?? 0) - (orderMap.get(b.name) ?? 0));
243
128
  });
244
- return newTemplate;
245
129
  }
246
- function flattenSchemasWithOffset(templateSchemas, basePdf) {
247
- const flatSchemas = [];
248
- const orderMap = new Map();
249
- let globalOrder = 0;
250
- const [paddingTop, , paddingBottom] = basePdf.padding;
251
- const getPageHeight = (pageIndex) => basePdf.height - paddingBottom - (pageIndex > 0 ? paddingTop : 0);
252
- let yOffset = 0;
253
- templateSchemas.forEach((schemaPage, pageIndex) => {
254
- if (pageIndex > 0)
255
- yOffset += getPageHeight(pageIndex - 1);
256
- schemaPage.forEach((schema) => {
257
- const clonedSchema = (0, helper_js_1.cloneDeep)(schema);
258
- clonedSchema.position = { ...clonedSchema.position, y: clonedSchema.position.y + yOffset };
259
- flatSchemas.push(clonedSchema);
260
- if (!orderMap.has(schema.name)) {
261
- orderMap.set(schema.name, globalOrder++);
262
- }
263
- });
264
- });
265
- return { flatSchemas, orderMap };
130
+ /** Remove trailing empty pages */
131
+ function removeTrailingEmptyPages(pages) {
132
+ while (pages.length > 1 && pages[pages.length - 1].length === 0) {
133
+ pages.pop();
134
+ }
266
135
  }
136
+ /**
137
+ * Process a single template page that has dynamic content.
138
+ * Uses the same layout algorithm as the original implementation,
139
+ * but scoped to a single page's schemas.
140
+ */
141
+ function processDynamicPage(items, orderMap, contentHeight, paddingTop) {
142
+ const pages = [];
143
+ let totalYOffset = 0;
144
+ for (const item of items) {
145
+ const currentGlobalStartY = item.baseY + totalYOffset;
146
+ const actualGlobalEndY = placeRowsOnPages(item.schema, item.dynamicHeights, currentGlobalStartY, contentHeight, paddingTop, pages);
147
+ // Update offset: difference between actual and original end position
148
+ const originalGlobalEndY = item.baseY + item.height;
149
+ totalYOffset = actualGlobalEndY - originalGlobalEndY;
150
+ }
151
+ sortPagesByOrder(pages, orderMap);
152
+ removeTrailingEmptyPages(pages);
153
+ return pages;
154
+ }
155
+ /**
156
+ * Process a template containing tables with dynamic heights
157
+ * and generate a new template with proper page breaks.
158
+ *
159
+ * Processing is done page-by-page:
160
+ * - Pages with height changes are processed with full layout calculations
161
+ * - Pages without height changes are copied as-is (no offset propagation between pages)
162
+ *
163
+ * This reduces computation cost by:
164
+ * 1. Limiting layout calculations to pages that need them
165
+ * 2. Avoiding cross-page offset propagation for static pages
166
+ */
267
167
  const getDynamicTemplate = async (arg) => {
268
- const { template, ...rest } = arg;
168
+ const { template, input, options, _cache, getDynamicHeights } = arg;
269
169
  const basePdf = template.basePdf;
270
170
  if (!(0, helper_js_1.isBlankPdf)(basePdf)) {
271
171
  return template;
272
172
  }
273
- const { flatSchemas, orderMap } = flattenSchemasWithOffset(template.schemas, basePdf);
274
- const longPage = await createOnePage({
275
- basePdf,
276
- schemaPage: flatSchemas,
277
- orderMap,
278
- ...rest,
279
- });
280
- const pages = breakIntoPages({ longPage, basePdf, orderMap });
281
- return createNewTemplate(pages, basePdf);
173
+ const contentHeight = getContentHeight(basePdf);
174
+ const paddingTop = basePdf.padding[0];
175
+ const resultPages = [];
176
+ const PARALLEL_LIMIT = 10;
177
+ // Process each template page independently
178
+ for (let pageIndex = 0; pageIndex < template.schemas.length; pageIndex++) {
179
+ const pageSchemas = template.schemas[pageIndex];
180
+ // Normalize this page's schemas
181
+ const { items, orderMap } = normalizePageSchemas(pageSchemas, paddingTop);
182
+ // Calculate dynamic heights for this page's schemas with concurrency limit
183
+ for (let i = 0; i < items.length; i += PARALLEL_LIMIT) {
184
+ const chunk = items.slice(i, i + PARALLEL_LIMIT);
185
+ const chunkResults = await Promise.all(chunk.map((item) => {
186
+ const value = getSchemaValue(item.schema, input);
187
+ return getDynamicHeights(value, {
188
+ schema: item.schema,
189
+ basePdf,
190
+ options,
191
+ _cache,
192
+ }).then((heights) => (heights.length === 0 ? [0] : heights));
193
+ }));
194
+ // Update items with calculated heights
195
+ for (let j = 0; j < chunkResults.length; j++) {
196
+ items[i + j].dynamicHeights = chunkResults[j];
197
+ }
198
+ }
199
+ // Process all pages independently (no cross-page offset propagation)
200
+ const processedPages = processDynamicPage(items, orderMap, contentHeight, paddingTop);
201
+ resultPages.push(...processedPages);
202
+ }
203
+ removeTrailingEmptyPages(resultPages);
204
+ // Check if anything changed - return original template if not
205
+ if (resultPages.length === template.schemas.length) {
206
+ let unchanged = true;
207
+ for (let i = 0; i < resultPages.length && unchanged; i++) {
208
+ if (resultPages[i].length !== template.schemas[i].length) {
209
+ unchanged = false;
210
+ break;
211
+ }
212
+ for (let j = 0; j < resultPages[i].length && unchanged; j++) {
213
+ const orig = template.schemas[i][j];
214
+ const result = resultPages[i][j];
215
+ if (Math.abs(orig.height - result.height) > EPSILON ||
216
+ Math.abs(orig.position.y - result.position.y) > EPSILON) {
217
+ unchanged = false;
218
+ }
219
+ }
220
+ }
221
+ if (unchanged) {
222
+ return template;
223
+ }
224
+ }
225
+ return { basePdf, schemas: resultPages };
282
226
  };
283
227
  exports.getDynamicTemplate = getDynamicTemplate;
284
228
  //# sourceMappingURL=dynamicTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamicTemplate.js","sourceRoot":"","sources":["../../../src/dynamicTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamicTemplate.js","sourceRoot":"","sources":["../../../src/dynamicTemplate.ts"],"names":[],"mappings":"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"}
@@ -11,5 +11,17 @@ interface ModifyTemplateForDynamicTableArg {
11
11
  _cache: Map<string | number, unknown>;
12
12
  }) => Promise<number[]>;
13
13
  }
14
+ /**
15
+ * Process a template containing tables with dynamic heights
16
+ * and generate a new template with proper page breaks.
17
+ *
18
+ * Processing is done page-by-page:
19
+ * - Pages with height changes are processed with full layout calculations
20
+ * - Pages without height changes are copied as-is (no offset propagation between pages)
21
+ *
22
+ * This reduces computation cost by:
23
+ * 1. Limiting layout calculations to pages that need them
24
+ * 2. Avoiding cross-page offset propagation for static pages
25
+ */
14
26
  export declare const getDynamicTemplate: (arg: ModifyTemplateForDynamicTableArg) => Promise<Template>;
15
27
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pdfme/common",
3
- "version": "5.5.7-dev.3",
3
+ "version": "5.5.7-dev.4",
4
4
  "sideEffects": false,
5
5
  "author": "hand-dot",
6
6
  "license": "MIT",