@memberjunction/core-actions 5.23.0 → 5.25.0
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.
- package/dist/custom/files/add-document-content.action.d.ts +20 -0
- package/dist/custom/files/add-document-content.action.d.ts.map +1 -0
- package/dist/custom/files/add-document-content.action.js +74 -0
- package/dist/custom/files/add-document-content.action.js.map +1 -0
- package/dist/custom/files/base-file-storage.action.d.ts +6 -9
- package/dist/custom/files/base-file-storage.action.d.ts.map +1 -1
- package/dist/custom/files/base-file-storage.action.js +14 -39
- package/dist/custom/files/base-file-storage.action.js.map +1 -1
- package/dist/custom/files/create-document.action.d.ts +19 -0
- package/dist/custom/files/create-document.action.d.ts.map +1 -0
- package/dist/custom/files/create-document.action.js +65 -0
- package/dist/custom/files/create-document.action.js.map +1 -0
- package/dist/custom/files/excel-reader.action.js +1 -1
- package/dist/custom/files/excel-reader.action.js.map +1 -1
- package/dist/custom/files/finalize-document.action.d.ts +21 -0
- package/dist/custom/files/finalize-document.action.d.ts.map +1 -0
- package/dist/custom/files/finalize-document.action.js +94 -0
- package/dist/custom/files/finalize-document.action.js.map +1 -0
- package/dist/custom/files/index.d.ts +5 -0
- package/dist/custom/files/index.d.ts.map +1 -1
- package/dist/custom/files/index.js +6 -0
- package/dist/custom/files/index.js.map +1 -1
- package/dist/custom/files/list-storage-providers.action.d.ts.map +1 -1
- package/dist/custom/files/list-storage-providers.action.js +6 -33
- package/dist/custom/files/list-storage-providers.action.js.map +1 -1
- package/dist/custom/files/modify-document-section.action.d.ts +19 -0
- package/dist/custom/files/modify-document-section.action.d.ts.map +1 -0
- package/dist/custom/files/modify-document-section.action.js +85 -0
- package/dist/custom/files/modify-document-section.action.js.map +1 -0
- package/dist/custom/files/pdf-extractor.action.d.ts +8 -14
- package/dist/custom/files/pdf-extractor.action.d.ts.map +1 -1
- package/dist/custom/files/pdf-extractor.action.js +89 -91
- package/dist/custom/files/pdf-extractor.action.js.map +1 -1
- package/dist/custom/files/preview-document.action.d.ts +17 -0
- package/dist/custom/files/preview-document.action.d.ts.map +1 -0
- package/dist/custom/files/preview-document.action.js +50 -0
- package/dist/custom/files/preview-document.action.js.map +1 -0
- package/dist/custom/geo/scheduled-geocoding.action.d.ts +135 -0
- package/dist/custom/geo/scheduled-geocoding.action.d.ts.map +1 -0
- package/dist/custom/geo/scheduled-geocoding.action.js +428 -0
- package/dist/custom/geo/scheduled-geocoding.action.js.map +1 -0
- package/dist/custom/search/search.action.d.ts +67 -0
- package/dist/custom/search/search.action.d.ts.map +1 -0
- package/dist/custom/search/search.action.js +211 -0
- package/dist/custom/search/search.action.js.map +1 -0
- package/dist/custom/utilities/artifact-builder-service.d.ts +139 -0
- package/dist/custom/utilities/artifact-builder-service.d.ts.map +1 -0
- package/dist/custom/utilities/artifact-builder-service.js +338 -0
- package/dist/custom/utilities/artifact-builder-service.js.map +1 -0
- package/dist/custom/utilities/base-file-handler.d.ts +25 -3
- package/dist/custom/utilities/base-file-handler.d.ts.map +1 -1
- package/dist/custom/utilities/base-file-handler.js +81 -28
- package/dist/custom/utilities/base-file-handler.js.map +1 -1
- package/dist/custom/utilities/docx-renderer.d.ts +61 -0
- package/dist/custom/utilities/docx-renderer.d.ts.map +1 -0
- package/dist/custom/utilities/docx-renderer.js +409 -0
- package/dist/custom/utilities/docx-renderer.js.map +1 -0
- package/dist/custom/utilities/pdf-renderer.d.ts +53 -0
- package/dist/custom/utilities/pdf-renderer.d.ts.map +1 -0
- package/dist/custom/utilities/pdf-renderer.js +315 -0
- package/dist/custom/utilities/pdf-renderer.js.map +1 -0
- package/dist/custom/utilities/xlsx-renderer.d.ts +120 -0
- package/dist/custom/utilities/xlsx-renderer.d.ts.map +1 -0
- package/dist/custom/utilities/xlsx-renderer.js +165 -0
- package/dist/custom/utilities/xlsx-renderer.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +31 -27
- package/dist/custom/files/excel-writer.action.d.ts +0 -88
- package/dist/custom/files/excel-writer.action.d.ts.map +0 -1
- package/dist/custom/files/excel-writer.action.js +0 -326
- package/dist/custom/files/excel-writer.action.js.map +0 -1
- package/dist/custom/files/pdf-generator.action.d.ts +0 -66
- package/dist/custom/files/pdf-generator.action.d.ts.map +0 -1
- package/dist/custom/files/pdf-generator.action.js +0 -254
- package/dist/custom/files/pdf-generator.action.js.map +0 -1
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX rendering engine extracted from WordGeneratorAction.
|
|
3
|
+
* Used by both the single-shot Word Generator action and the incremental ArtifactBuilderService.
|
|
4
|
+
*/
|
|
5
|
+
import { AlignmentType, Document, HeadingLevel, ImageRun, Packer, Paragraph, Table, TableCell, TableRow, TextRun, WidthType, convertInchesToTwip, } from "docx";
|
|
6
|
+
import { Parser } from 'htmlparser2';
|
|
7
|
+
export const DEFAULT_WORD_OPTIONS = {
|
|
8
|
+
pageSize: 'Letter',
|
|
9
|
+
orientation: 'portrait',
|
|
10
|
+
margins: { top: 1, bottom: 1, left: 1, right: 1 },
|
|
11
|
+
defaultFontSize: 24,
|
|
12
|
+
defaultFont: 'Calibri',
|
|
13
|
+
};
|
|
14
|
+
// ── Rendering ─────────────────────────────────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* Render an array of DocxSection to a DOCX buffer.
|
|
17
|
+
*/
|
|
18
|
+
export async function renderDocxFromSections(sections, options) {
|
|
19
|
+
const children = [];
|
|
20
|
+
for (const section of sections) {
|
|
21
|
+
if (section.heading) {
|
|
22
|
+
children.push(buildHeading(section.heading, section.level ?? 1, options));
|
|
23
|
+
}
|
|
24
|
+
for (const item of section.content ?? []) {
|
|
25
|
+
const built = buildContentItem(item, options);
|
|
26
|
+
if (built)
|
|
27
|
+
children.push(...built);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const doc = new Document({
|
|
31
|
+
sections: [{
|
|
32
|
+
properties: {
|
|
33
|
+
page: {
|
|
34
|
+
size: {
|
|
35
|
+
width: options.pageSize === 'A4' ? 11906 : 12240,
|
|
36
|
+
height: options.pageSize === 'A4' ? 16838 : 15840,
|
|
37
|
+
orientation: options.orientation === 'landscape' ? 'landscape' : 'portrait',
|
|
38
|
+
},
|
|
39
|
+
margin: {
|
|
40
|
+
top: convertInchesToTwip(options.margins.top),
|
|
41
|
+
bottom: convertInchesToTwip(options.margins.bottom),
|
|
42
|
+
left: convertInchesToTwip(options.margins.left),
|
|
43
|
+
right: convertInchesToTwip(options.margins.right),
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
children,
|
|
48
|
+
}],
|
|
49
|
+
});
|
|
50
|
+
return Packer.toBuffer(doc);
|
|
51
|
+
}
|
|
52
|
+
// ── Element builders ──────────────────────────────────────────────────────────
|
|
53
|
+
function buildHeading(text, level, options) {
|
|
54
|
+
const levelMap = {
|
|
55
|
+
1: HeadingLevel.HEADING_1,
|
|
56
|
+
2: HeadingLevel.HEADING_2,
|
|
57
|
+
3: HeadingLevel.HEADING_3,
|
|
58
|
+
4: HeadingLevel.HEADING_4,
|
|
59
|
+
5: HeadingLevel.HEADING_5,
|
|
60
|
+
6: HeadingLevel.HEADING_6,
|
|
61
|
+
};
|
|
62
|
+
return new Paragraph({
|
|
63
|
+
heading: levelMap[level] ?? HeadingLevel.HEADING_1,
|
|
64
|
+
children: [new TextRun({ text, font: options.defaultFont })],
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function buildContentItem(item, options) {
|
|
68
|
+
switch (item.type) {
|
|
69
|
+
case 'paragraph': return [buildParagraph(item, options)];
|
|
70
|
+
case 'list': return buildList(item, options);
|
|
71
|
+
case 'table': return [buildTable(item, options)];
|
|
72
|
+
case 'image': return buildImage(item, options);
|
|
73
|
+
default: return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function buildParagraph(item, options) {
|
|
77
|
+
return new Paragraph({
|
|
78
|
+
alignment: resolveAlignment(item.align),
|
|
79
|
+
children: [new TextRun({
|
|
80
|
+
text: item.text,
|
|
81
|
+
bold: item.bold,
|
|
82
|
+
italics: item.italic,
|
|
83
|
+
font: options.defaultFont,
|
|
84
|
+
size: options.defaultFontSize,
|
|
85
|
+
})],
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function buildList(item, options) {
|
|
89
|
+
return item.items.map(text => new Paragraph({
|
|
90
|
+
numbering: item.ordered
|
|
91
|
+
? { reference: 'ordered-list', level: 0 }
|
|
92
|
+
: undefined,
|
|
93
|
+
bullet: item.ordered ? undefined : { level: 0 },
|
|
94
|
+
children: [new TextRun({
|
|
95
|
+
text,
|
|
96
|
+
font: options.defaultFont,
|
|
97
|
+
size: options.defaultFontSize,
|
|
98
|
+
})],
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
function buildTable(item, options) {
|
|
102
|
+
const colCount = Math.max(item.headers.length, ...item.rows.map(r => r.length));
|
|
103
|
+
const headerRow = new TableRow({
|
|
104
|
+
tableHeader: true,
|
|
105
|
+
children: Array.from({ length: colCount }, (_, c) => new TableCell({
|
|
106
|
+
children: [new Paragraph({
|
|
107
|
+
children: [new TextRun({
|
|
108
|
+
text: item.headers[c] ?? '',
|
|
109
|
+
bold: true,
|
|
110
|
+
font: options.defaultFont,
|
|
111
|
+
size: options.defaultFontSize,
|
|
112
|
+
})],
|
|
113
|
+
})],
|
|
114
|
+
})),
|
|
115
|
+
});
|
|
116
|
+
const dataRows = item.rows.map(row => new TableRow({
|
|
117
|
+
children: Array.from({ length: colCount }, (_, c) => new TableCell({
|
|
118
|
+
children: [new Paragraph({
|
|
119
|
+
children: [new TextRun({
|
|
120
|
+
text: row[c] ?? '',
|
|
121
|
+
font: options.defaultFont,
|
|
122
|
+
size: options.defaultFontSize,
|
|
123
|
+
})],
|
|
124
|
+
})],
|
|
125
|
+
})),
|
|
126
|
+
}));
|
|
127
|
+
return new Table({
|
|
128
|
+
width: { size: 100, type: WidthType.PERCENTAGE },
|
|
129
|
+
rows: [headerRow, ...dataRows],
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
function buildImage(item, options) {
|
|
133
|
+
if (!item.url)
|
|
134
|
+
return null;
|
|
135
|
+
const dataUri = /^data:image\/(png|jpe?g|gif|webp);base64,(.+)$/i.exec(item.url);
|
|
136
|
+
if (!dataUri)
|
|
137
|
+
return null;
|
|
138
|
+
try {
|
|
139
|
+
const imageBuffer = Buffer.from(dataUri[2], 'base64');
|
|
140
|
+
const width = item.width ?? 400;
|
|
141
|
+
const height = item.height ?? Math.round(width * 0.6);
|
|
142
|
+
const results = [
|
|
143
|
+
new Paragraph({
|
|
144
|
+
children: [new ImageRun({
|
|
145
|
+
data: imageBuffer,
|
|
146
|
+
transformation: { width, height },
|
|
147
|
+
type: dataUri[1].replace('jpeg', 'jpg').replace('webp', 'png'),
|
|
148
|
+
})],
|
|
149
|
+
alignment: AlignmentType.CENTER,
|
|
150
|
+
}),
|
|
151
|
+
];
|
|
152
|
+
if (item.caption) {
|
|
153
|
+
results.push(new Paragraph({
|
|
154
|
+
alignment: AlignmentType.CENTER,
|
|
155
|
+
children: [new TextRun({
|
|
156
|
+
text: item.caption,
|
|
157
|
+
italics: true,
|
|
158
|
+
font: options.defaultFont,
|
|
159
|
+
size: options.defaultFontSize - 4,
|
|
160
|
+
})],
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
return results;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function resolveAlignment(align) {
|
|
170
|
+
switch ((align ?? '').toLowerCase()) {
|
|
171
|
+
case 'center': return AlignmentType.CENTER;
|
|
172
|
+
case 'right': return AlignmentType.RIGHT;
|
|
173
|
+
case 'justify': return AlignmentType.JUSTIFIED;
|
|
174
|
+
default: return AlignmentType.LEFT;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// ── Section normalizers ───────────────────────────────────────────────────────
|
|
178
|
+
/**
|
|
179
|
+
* Accepts both formats agents may produce:
|
|
180
|
+
*
|
|
181
|
+
* Structured (canonical):
|
|
182
|
+
* [{ heading: "Title", level: 1, content: [{ type: "paragraph", text: "..." }] }]
|
|
183
|
+
*
|
|
184
|
+
* Flat (what most LLM agents naturally emit):
|
|
185
|
+
* [{ type: "heading", level: 1, text: "Title" }, { type: "paragraph", text: "..." }]
|
|
186
|
+
*/
|
|
187
|
+
export function normalizeSections(items) {
|
|
188
|
+
if (items.length === 0)
|
|
189
|
+
return [];
|
|
190
|
+
const isStructured = items.some(i => 'heading' in i || 'content' in i);
|
|
191
|
+
if (isStructured) {
|
|
192
|
+
return items.map(i => normalizeStructuredSection(i));
|
|
193
|
+
}
|
|
194
|
+
return normalizeFlatItems(items);
|
|
195
|
+
}
|
|
196
|
+
function normalizeStructuredSection(raw) {
|
|
197
|
+
const section = {};
|
|
198
|
+
if (typeof raw['heading'] === 'string')
|
|
199
|
+
section.heading = raw['heading'];
|
|
200
|
+
if (typeof raw['level'] === 'number')
|
|
201
|
+
section.level = raw['level'];
|
|
202
|
+
if (Array.isArray(raw['content'])) {
|
|
203
|
+
section.content = raw['content'].map(normalizeContentItem);
|
|
204
|
+
}
|
|
205
|
+
return section;
|
|
206
|
+
}
|
|
207
|
+
function normalizeFlatItems(items) {
|
|
208
|
+
const sections = [];
|
|
209
|
+
let current = { content: [] };
|
|
210
|
+
for (const item of items) {
|
|
211
|
+
if (item['type'] === 'heading') {
|
|
212
|
+
if (current.heading !== undefined || (current.content?.length ?? 0) > 0) {
|
|
213
|
+
sections.push(current);
|
|
214
|
+
}
|
|
215
|
+
current = {
|
|
216
|
+
heading: String(item['text'] ?? item['content'] ?? item['heading'] ?? ''),
|
|
217
|
+
level: typeof item['level'] === 'number' ? item['level'] : 1,
|
|
218
|
+
content: [],
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
current.content = current.content ?? [];
|
|
223
|
+
current.content.push(normalizeContentItem(item));
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (current.heading !== undefined || (current.content?.length ?? 0) > 0) {
|
|
227
|
+
sections.push(current);
|
|
228
|
+
}
|
|
229
|
+
return sections;
|
|
230
|
+
}
|
|
231
|
+
function normalizeContentItem(raw) {
|
|
232
|
+
const type = String(raw['type'] ?? 'paragraph');
|
|
233
|
+
if (type === 'table')
|
|
234
|
+
return normalizeTable(raw);
|
|
235
|
+
if (type === 'list') {
|
|
236
|
+
return {
|
|
237
|
+
type: 'list',
|
|
238
|
+
items: Array.isArray(raw['items']) ? raw['items'] : [],
|
|
239
|
+
ordered: Boolean(raw['ordered']),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
if (type === 'image') {
|
|
243
|
+
return {
|
|
244
|
+
type: 'image',
|
|
245
|
+
url: String(raw['url'] ?? raw['src'] ?? ''),
|
|
246
|
+
width: typeof raw['width'] === 'number' ? raw['width'] : undefined,
|
|
247
|
+
height: typeof raw['height'] === 'number' ? raw['height'] : undefined,
|
|
248
|
+
caption: typeof raw['caption'] === 'string' ? raw['caption'] : undefined,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
type: 'paragraph',
|
|
253
|
+
text: String(raw['text'] ?? raw['content'] ?? ''),
|
|
254
|
+
bold: Boolean(raw['bold']),
|
|
255
|
+
italic: Boolean(raw['italic']),
|
|
256
|
+
align: typeof raw['align'] === 'string' ? raw['align'] : undefined,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
function normalizeTable(raw) {
|
|
260
|
+
const rawRows = Array.isArray(raw['rows']) ? raw['rows'] : [];
|
|
261
|
+
let headers = Array.isArray(raw['headers'])
|
|
262
|
+
? raw['headers']
|
|
263
|
+
: Array.isArray(raw['columns']) ? raw['columns'] : [];
|
|
264
|
+
let rows = rawRows;
|
|
265
|
+
if (headers.length === 0 && rawRows.length > 0) {
|
|
266
|
+
headers = rawRows[0];
|
|
267
|
+
rows = rawRows.slice(1);
|
|
268
|
+
}
|
|
269
|
+
return { type: 'table', headers, rows };
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Lightweight HTML → structured sections converter using htmlparser2.
|
|
273
|
+
*/
|
|
274
|
+
export function htmlToSections(html) {
|
|
275
|
+
const sections = [];
|
|
276
|
+
let currentSection = { content: [] };
|
|
277
|
+
const tagStack = [];
|
|
278
|
+
let boldDepth = 0;
|
|
279
|
+
let italicDepth = 0;
|
|
280
|
+
let inParagraph = false;
|
|
281
|
+
let paragraphText = '';
|
|
282
|
+
let inListItem = false;
|
|
283
|
+
let listItemText = '';
|
|
284
|
+
let listItems = [];
|
|
285
|
+
let listOrdered = false;
|
|
286
|
+
let inCell = false;
|
|
287
|
+
let cellText = '';
|
|
288
|
+
let currentRow = [];
|
|
289
|
+
let tableHeaders = [];
|
|
290
|
+
let tableRows = [];
|
|
291
|
+
let inThead = false;
|
|
292
|
+
let inTable = false;
|
|
293
|
+
const flushSection = () => {
|
|
294
|
+
if (currentSection.heading || (currentSection.content?.length ?? 0) > 0) {
|
|
295
|
+
sections.push(currentSection);
|
|
296
|
+
}
|
|
297
|
+
currentSection = { content: [] };
|
|
298
|
+
};
|
|
299
|
+
const parser = new Parser({
|
|
300
|
+
onopentag(name) {
|
|
301
|
+
tagStack.push(name);
|
|
302
|
+
if (/^h[1-6]$/.test(name)) {
|
|
303
|
+
flushSection();
|
|
304
|
+
currentSection.level = parseInt(name[1]);
|
|
305
|
+
currentSection.heading = '';
|
|
306
|
+
}
|
|
307
|
+
else if (name === 'p') {
|
|
308
|
+
inParagraph = true;
|
|
309
|
+
paragraphText = '';
|
|
310
|
+
}
|
|
311
|
+
else if (name === 'strong' || name === 'b') {
|
|
312
|
+
boldDepth++;
|
|
313
|
+
}
|
|
314
|
+
else if (name === 'em' || name === 'i') {
|
|
315
|
+
italicDepth++;
|
|
316
|
+
}
|
|
317
|
+
else if (name === 'ul' || name === 'ol') {
|
|
318
|
+
listItems = [];
|
|
319
|
+
listOrdered = name === 'ol';
|
|
320
|
+
}
|
|
321
|
+
else if (name === 'li') {
|
|
322
|
+
inListItem = true;
|
|
323
|
+
listItemText = '';
|
|
324
|
+
}
|
|
325
|
+
else if (name === 'table') {
|
|
326
|
+
inTable = true;
|
|
327
|
+
tableHeaders = [];
|
|
328
|
+
tableRows = [];
|
|
329
|
+
}
|
|
330
|
+
else if (name === 'thead') {
|
|
331
|
+
inThead = true;
|
|
332
|
+
}
|
|
333
|
+
else if (name === 'th' || name === 'td') {
|
|
334
|
+
inCell = true;
|
|
335
|
+
cellText = '';
|
|
336
|
+
}
|
|
337
|
+
else if (name === 'tr') {
|
|
338
|
+
currentRow = [];
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
ontext(text) {
|
|
342
|
+
const t = text.replace(/\s+/g, ' ');
|
|
343
|
+
if (inCell) {
|
|
344
|
+
cellText += t;
|
|
345
|
+
}
|
|
346
|
+
else if (inListItem) {
|
|
347
|
+
listItemText += t;
|
|
348
|
+
}
|
|
349
|
+
else if (inParagraph) {
|
|
350
|
+
paragraphText += t;
|
|
351
|
+
}
|
|
352
|
+
else if (currentSection.heading !== undefined && tagStack.some(tag => /^h[1-6]$/.test(tag))) {
|
|
353
|
+
currentSection.heading = (currentSection.heading ?? '') + t;
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
onclosetag(name) {
|
|
357
|
+
tagStack.pop();
|
|
358
|
+
if (/^h[1-6]$/.test(name)) { /* heading text already accumulated */ }
|
|
359
|
+
else if (name === 'p' && inParagraph) {
|
|
360
|
+
const text = paragraphText.trim();
|
|
361
|
+
if (text)
|
|
362
|
+
currentSection.content.push({ type: 'paragraph', text, bold: boldDepth > 0, italic: italicDepth > 0 });
|
|
363
|
+
inParagraph = false;
|
|
364
|
+
paragraphText = '';
|
|
365
|
+
}
|
|
366
|
+
else if (name === 'strong' || name === 'b') {
|
|
367
|
+
boldDepth = Math.max(0, boldDepth - 1);
|
|
368
|
+
}
|
|
369
|
+
else if (name === 'em' || name === 'i') {
|
|
370
|
+
italicDepth = Math.max(0, italicDepth - 1);
|
|
371
|
+
}
|
|
372
|
+
else if (name === 'li' && inListItem) {
|
|
373
|
+
if (listItemText.trim())
|
|
374
|
+
listItems.push(listItemText.trim());
|
|
375
|
+
inListItem = false;
|
|
376
|
+
listItemText = '';
|
|
377
|
+
}
|
|
378
|
+
else if (name === 'ul' || name === 'ol') {
|
|
379
|
+
if (listItems.length)
|
|
380
|
+
currentSection.content.push({ type: 'list', items: listItems, ordered: listOrdered });
|
|
381
|
+
listItems = [];
|
|
382
|
+
}
|
|
383
|
+
else if (name === 'th' || name === 'td') {
|
|
384
|
+
currentRow.push(cellText.trim());
|
|
385
|
+
inCell = false;
|
|
386
|
+
cellText = '';
|
|
387
|
+
}
|
|
388
|
+
else if (name === 'tr') {
|
|
389
|
+
if (inThead)
|
|
390
|
+
tableHeaders = currentRow;
|
|
391
|
+
else
|
|
392
|
+
tableRows.push(currentRow);
|
|
393
|
+
currentRow = [];
|
|
394
|
+
}
|
|
395
|
+
else if (name === 'thead') {
|
|
396
|
+
inThead = false;
|
|
397
|
+
}
|
|
398
|
+
else if (name === 'table' && inTable) {
|
|
399
|
+
currentSection.content.push({ type: 'table', headers: tableHeaders, rows: tableRows });
|
|
400
|
+
inTable = false;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}, { decodeEntities: true });
|
|
404
|
+
parser.write(html);
|
|
405
|
+
parser.end();
|
|
406
|
+
flushSection();
|
|
407
|
+
return sections;
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=docx-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-renderer.js","sourceRoot":"","sources":["../../../src/custom/utilities/docx-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface PDFOptions {
|
|
2
|
+
margin: {
|
|
3
|
+
top: number;
|
|
4
|
+
bottom: number;
|
|
5
|
+
left: number;
|
|
6
|
+
right: number;
|
|
7
|
+
};
|
|
8
|
+
fontSize: number;
|
|
9
|
+
font: string;
|
|
10
|
+
orientation: 'portrait' | 'landscape';
|
|
11
|
+
size: string;
|
|
12
|
+
}
|
|
13
|
+
export type PDFNodeType = {
|
|
14
|
+
type: 'heading';
|
|
15
|
+
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
16
|
+
text: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'paragraph';
|
|
19
|
+
text: string;
|
|
20
|
+
bold?: boolean;
|
|
21
|
+
italic?: boolean;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'list';
|
|
24
|
+
items: string[];
|
|
25
|
+
ordered: boolean;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'table';
|
|
28
|
+
headers: string[];
|
|
29
|
+
rows: string[][];
|
|
30
|
+
} | {
|
|
31
|
+
type: 'image';
|
|
32
|
+
src: string;
|
|
33
|
+
alt?: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'hr';
|
|
36
|
+
} | {
|
|
37
|
+
type: 'br';
|
|
38
|
+
};
|
|
39
|
+
export declare const DEFAULT_PDF_OPTIONS: PDFOptions;
|
|
40
|
+
/**
|
|
41
|
+
* Render an array of PDFNodeType nodes to a PDF buffer using pdfkit.
|
|
42
|
+
*/
|
|
43
|
+
export declare function renderPDFFromNodes(nodes: PDFNodeType[], options: PDFOptions): Promise<Buffer>;
|
|
44
|
+
/**
|
|
45
|
+
* Render an HTML string to a PDF buffer.
|
|
46
|
+
* If contentType is 'markdown', converts to HTML first using the provided marked function.
|
|
47
|
+
*/
|
|
48
|
+
export declare function renderPDFFromHTML(htmlContent: string, options: PDFOptions): Promise<Buffer>;
|
|
49
|
+
/**
|
|
50
|
+
* Parse an HTML string into a flat list of renderable nodes using htmlparser2.
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseHTML(html: string): PDFNodeType[];
|
|
53
|
+
//# sourceMappingURL=pdf-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-renderer.d.ts","sourceRoot":"","sources":["../../../src/custom/utilities/pdf-renderer.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,GAAG,WAAW,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAErB,eAAO,MAAM,mBAAmB,EAAE,UAMjC,CAAC;AAIF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB7F;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB;AA6HD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CA2IrD"}
|