mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-10-01 17:29:29 +05:30
fix(pdf): hand pdfjs a file:// standardFontDataUrl; repair Windows CI tests
pdfjs validates standardFontDataUrl as a URL ending in a forward slash — our raw path with a trailing path.sep is invalid on Windows (C:\...\), failing extractText/extractImages (and every test that verifies through them) with 'Invalid factory url: must include trailing slash'. Linux and macOS passed only because / is also a valid URL slash. Convert with pathToFileURL() so every platform sends file:///.../standard_fonts/. Also escape path.sep in PDFBatchOperations' sanitizer test regex — a bare backslash made new RegExp() a syntax error on Windows.
This commit is contained in:
@@ -441,10 +441,16 @@ async function loadPdfjs() {
|
|||||||
|
|
||||||
// Points pdfjs-dist at its bundled standard font metrics so it doesn't warn
|
// Points pdfjs-dist at its bundled standard font metrics so it doesn't warn
|
||||||
// (and degrade text-extraction fidelity) when a PDF uses a standard font.
|
// (and degrade text-extraction fidelity) when a PDF uses a standard font.
|
||||||
|
// pdfjs validates this as a URL that must end with a forward slash — a raw
|
||||||
|
// Windows path (C:\...\standard_fonts\) fails that check and breaks
|
||||||
|
// extractText/extractImages on Windows, so always hand pdfjs a file:// URL.
|
||||||
function getStandardFontDataUrl() {
|
function getStandardFontDataUrl() {
|
||||||
return (
|
const dir = path.join(
|
||||||
path.join(path.dirname(require.resolve('pdfjs-dist/package.json')), 'standard_fonts') + path.sep
|
path.dirname(require.resolve('pdfjs-dist/package.json')),
|
||||||
|
'standard_fonts'
|
||||||
);
|
);
|
||||||
|
const url = require('url').pathToFileURL(dir);
|
||||||
|
return url.href.endsWith('/') ? url.href : url.href + '/';
|
||||||
}
|
}
|
||||||
|
|
||||||
async function pdfExtractText(data) {
|
async function pdfExtractText(data) {
|
||||||
|
|||||||
@@ -293,7 +293,9 @@ describe('PDFBatchOperations - runPDFBatchOperation', () => {
|
|||||||
operation: 'compress',
|
operation: 'compress',
|
||||||
outputFolder: path.join(blocker, 'child'),
|
outputFolder: path.join(blocker, 'child'),
|
||||||
data: {},
|
data: {},
|
||||||
sanitizeError: (message) => message.replace(new RegExp(path.sep, 'g'), '_SANITIZED_'),
|
// path.sep is "\" on Windows — escape it for RegExp use
|
||||||
|
sanitizeError: (message) =>
|
||||||
|
message.replace(new RegExp(path.sep.replace(/\\/g, '\\\\'), 'g'), '_SANITIZED_'),
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(completion.success).toBe(false);
|
expect(completion.success).toBe(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user