@chenchaolong/plugin-trade-compliance-workbench 1.0.134 → 1.0.136

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-page-renderer.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/pdf-page-renderer.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAC1H,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAAohB;AACnnB,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CAQxL"}
1
+ {"version":3,"file":"pdf-page-renderer.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/pdf-page-renderer.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAC1H,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAAohB;AACnnB,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CAWxL"}
@@ -21,38 +21,60 @@ export async function renderPdfVisualPages(input) {
21
21
  const selectedPages = selectPdfVisualPages({ pageCount, maxPages: input.maxPages });
22
22
  if (!selectedPages.length)
23
23
  return { pageCount, pages: [] };
24
- const jpegPages = await renderJpegPagesWithPdftoppm(input.buffer, input.fileName, selectedPages);
25
- if (jpegPages.length === selectedPages.length)
26
- return { pageCount, pages: jpegPages };
27
24
  const screenshot = await parser.getScreenshot({ partial: selectedPages, desiredWidth: input.desiredWidth ?? 1000, imageBuffer: true, imageDataUrl: false });
28
25
  const images = Array.isArray(screenshot.pages) ? screenshot.pages : [];
29
- return { pageCount, pages: images.map((page) => { const pageNumber = Number(page.pageNumber ?? page.page ?? page.num ?? 0); const buffer = Buffer.from(page.data ?? page.buffer ?? []); return pageNumber && buffer.length ? { pageNumber, fileName: pageImageName(input.fileName, pageNumber), mimeType: 'image/png', buffer } : null; }).filter((page) => Boolean(page)) };
26
+ const pngPages = images.map((page) => { const pageNumber = Number(page.pageNumber ?? page.page ?? page.num ?? 0); const buffer = Buffer.from(page.data ?? page.buffer ?? []); return pageNumber && buffer.length ? { pageNumber, fileName: pageImageName(input.fileName, pageNumber), mimeType: 'image/png', buffer } : null; }).filter((page) => Boolean(page));
27
+ if (pngPages.length === selectedPages.length)
28
+ return { pageCount, pages: pngPages };
29
+ const jpegPages = await renderJpegPagesWithPdftoppm(input.buffer, input.fileName, selectedPages);
30
+ return { pageCount, pages: jpegPages };
30
31
  }
31
32
  finally {
32
33
  await parser.destroy();
33
34
  }
34
35
  }
35
- async function renderJpegPagesWithPdftoppm(buffer, fileName, selectedPages) { const pdftoppm = await findPdftoppm(); if (!pdftoppm)
36
- return []; const directory = await mkdtemp(join(tmpdir(), 'tcw-pdf-pages-')); try {
37
- const pdfPath = join(directory, 'source.pdf');
38
- await writeFile(pdfPath, buffer);
39
- const pages = [];
40
- for (const pageNumber of selectedPages) {
41
- const prefix = join(directory, `page-${pageNumber}`);
42
- await execFileAsync(pdftoppm, ['-jpeg', '-r', '110', '-f', String(pageNumber), '-l', String(pageNumber), pdfPath, prefix], { timeout: 30_000, maxBuffer: 1024 * 1024 });
43
- const rendered = (await readdir(directory)).find(name => name.startsWith(`page-${pageNumber}-`) && name.endsWith('.jpg'));
44
- if (!rendered)
45
- return [];
46
- pages.push({ pageNumber, fileName: pageImageName(fileName, pageNumber, 'jpg'), mimeType: 'image/jpeg', buffer: await readFile(join(directory, rendered)) });
36
+ async function renderJpegPagesWithPdftoppm(buffer, fileName, selectedPages) {
37
+ const pdftoppm = await findPdftoppm();
38
+ if (!pdftoppm)
39
+ return [];
40
+ const directory = await mkdtemp(join(tmpdir(), 'tcw-pdf-pages-'));
41
+ try {
42
+ const pdfPath = join(directory, 'source.pdf');
43
+ await writeFile(pdfPath, buffer);
44
+ const pages = [];
45
+ // Render each contiguous range in one process. Starting pdftoppm once per
46
+ // page made ordinary contracts slow enough to exceed the host action timeout.
47
+ for (const range of contiguousRanges(selectedPages)) {
48
+ const prefix = join(directory, `pages-${range.start}-${range.end}`);
49
+ await execFileAsync(pdftoppm, ['-jpeg', '-r', '110', '-f', String(range.start), '-l', String(range.end), pdfPath, prefix], { timeout: 30_000, maxBuffer: 1024 * 1024 });
50
+ const renderedFiles = await readdir(directory);
51
+ for (const pageNumber of selectedPages.filter(page => page >= range.start && page <= range.end)) {
52
+ const rendered = renderedFiles.find(name => name.startsWith(`pages-${range.start}-${range.end}-`) && name.endsWith(`-${pageNumber}.jpg`));
53
+ if (!rendered)
54
+ return [];
55
+ pages.push({ pageNumber, fileName: pageImageName(fileName, pageNumber, 'jpg'), mimeType: 'image/jpeg', buffer: await readFile(join(directory, rendered)) });
56
+ }
57
+ }
58
+ return pages.sort((left, right) => left.pageNumber - right.pageNumber);
59
+ }
60
+ catch {
61
+ return [];
62
+ }
63
+ finally {
64
+ await rm(directory, { recursive: true, force: true });
47
65
  }
48
- return pages;
49
66
  }
50
- catch {
51
- return [];
67
+ function contiguousRanges(pageNumbers) {
68
+ const ranges = [];
69
+ for (const pageNumber of [...new Set(pageNumbers)].sort((left, right) => left - right)) {
70
+ const previous = ranges[ranges.length - 1];
71
+ if (previous && pageNumber === previous.end + 1)
72
+ previous.end = pageNumber;
73
+ else
74
+ ranges.push({ start: pageNumber, end: pageNumber });
75
+ }
76
+ return ranges;
52
77
  }
53
- finally {
54
- await rm(directory, { recursive: true, force: true });
55
- } }
56
78
  async function findPdftoppm() { const candidates = [process.env.TRADE_COMPLIANCE_PDFTOPPM_PATH, 'pdftoppm', '/opt/homebrew/bin/pdftoppm', '/usr/local/bin/pdftoppm', '/usr/bin/pdftoppm'].filter((value) => Boolean(value)); for (const candidate of candidates) {
57
79
  try {
58
80
  await execFileAsync(candidate, ['-v'], { timeout: 5_000, maxBuffer: 128 * 1024 });
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-page-renderer.js","sourceRoot":"","sources":["../../../src/lib/adapters/pdf-page-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf-page-renderer.js","sourceRoot":"","sources":["../../../src/lib/adapters/pdf-page-renderer.ts"],"names":[],"mappings":"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"}