diff --git a/src/postprocesser.js b/src/postprocesser.js index 87746a74a1a6d026452a87dd8519e278367c7b8e..eb57b75e000bbdd44db428f1482a527f8fd2251d 100644 --- a/src/postprocesser.js +++ b/src/postprocesser.js @@ -40,6 +40,21 @@ class PostProcesser extends EventEmitter { meta.producer = info.producer; } + // Display the title of the document in the title bar by default + // See PDF/UA 1: 7.1-9 + // See Matterhorn Protocol 1.1: Indices 07-001 & 07-002 + if (meta.title) { + this.pdfDoc.catalog.set("ViewerPreferences", + new PDFLib.PDFDictionary({ DisplayDocTitle: PDFLib.PDFBoolean.fromBool(true) }, PDFLib.PDFObjectIndex.create())); + } + + // Set the default language of the document + // See PDF/UA 1: 7.2-3 + // See Matterhorn Protocol 1.1: Index 11-006 + if (meta.lang) { + this.pdfDoc.catalog.set("Lang", PDFLib.PDFString.fromString(meta.lang)); + } + // Add meta this.addXmpMetadata(meta); this.updateInfoDict(meta); diff --git a/src/printer.js b/src/printer.js index e3e690d4ac5ad35238c8c3f30b10c0f3e22d9ccf..8c320e3e42859e1e93d8e897eadf2f7985fb9804 100644 --- a/src/printer.js +++ b/src/printer.js @@ -36,7 +36,7 @@ class Printer extends EventEmitter { async setup() { let puppeteerOptions = { headless: this.headless, - args: ["--disable-dev-shm-usage"], + args: ["--disable-dev-shm-usage", "--export-tagged-pdf"], ignoreHTTPSErrors: this.ignoreHTTPSErrors }; @@ -303,6 +303,10 @@ class Printer extends EventEmitter { if (title) { meta.title = title.textContent.trim(); } + let lang = document.querySelector("html").getAttribute("lang"); + if (lang) { + meta.lang = lang; + } let metaTags = document.querySelectorAll("meta"); [...metaTags].forEach((tag) => { if (tag.name) {