Merge pull request #14114 from Snuffleupagus/issue-14110

[api-minor] Include the /Lang-property in the `documentInfo`, and use it in the viewer (issue 14110)
This commit is contained in:
Brendan Dahl 2021-10-19 08:08:08 -07:00 committed by GitHub
commit b66239d6dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 0 deletions

View File

@ -89,6 +89,15 @@ class Catalog {
); );
} }
get lang() {
const lang = this._catDict.get("Lang");
return shadow(
this,
"lang",
typeof lang === "string" ? stringToPDFString(lang) : null
);
}
/** /**
* @type {boolean} `true` for pure XFA documents, * @type {boolean} `true` for pure XFA documents,
* `false` for XFA Foreground documents. * `false` for XFA Foreground documents.

View File

@ -1160,6 +1160,7 @@ class PDFDocument {
const docInfo = { const docInfo = {
PDFFormatVersion: version, PDFFormatVersion: version,
Language: this.catalog.lang,
IsLinearized: !!this.linearization, IsLinearized: !!this.linearization,
IsAcroFormPresent: this.formInfo.hasAcroForm, IsAcroFormPresent: this.formInfo.hasAcroForm,
IsXFAPresent: this.formInfo.hasXfa, IsXFAPresent: this.formInfo.hasXfa,

View File

@ -1165,6 +1165,7 @@ describe("api", function () {
expect(info.Custom).toEqual(undefined); expect(info.Custom).toEqual(undefined);
// The following are PDF.js specific, non-standard, properties. // The following are PDF.js specific, non-standard, properties.
expect(info.PDFFormatVersion).toEqual("1.7"); expect(info.PDFFormatVersion).toEqual("1.7");
expect(info.Language).toEqual("en");
expect(info.IsLinearized).toEqual(false); expect(info.IsLinearized).toEqual(false);
expect(info.IsAcroFormPresent).toEqual(false); expect(info.IsAcroFormPresent).toEqual(false);
expect(info.IsXFAPresent).toEqual(false); expect(info.IsXFAPresent).toEqual(false);
@ -1199,6 +1200,7 @@ describe("api", function () {
); );
// The following are PDF.js specific, non-standard, properties. // The following are PDF.js specific, non-standard, properties.
expect(info.PDFFormatVersion).toEqual("1.4"); expect(info.PDFFormatVersion).toEqual("1.4");
expect(info.Language).toEqual(null);
expect(info.IsLinearized).toEqual(false); expect(info.IsLinearized).toEqual(false);
expect(info.IsAcroFormPresent).toEqual(false); expect(info.IsAcroFormPresent).toEqual(false);
expect(info.IsXFAPresent).toEqual(false); expect(info.IsXFAPresent).toEqual(false);
@ -1220,6 +1222,7 @@ describe("api", function () {
// The following are PDF.js specific, non-standard, properties. // The following are PDF.js specific, non-standard, properties.
expect(info.PDFFormatVersion).toEqual(null); expect(info.PDFFormatVersion).toEqual(null);
expect(info.Language).toEqual(null);
expect(info.IsLinearized).toEqual(false); expect(info.IsLinearized).toEqual(false);
expect(info.IsAcroFormPresent).toEqual(false); expect(info.IsAcroFormPresent).toEqual(false);
expect(info.IsXFAPresent).toEqual(false); expect(info.IsXFAPresent).toEqual(false);

View File

@ -812,6 +812,7 @@ const PDFViewerApplication = {
const { container } = this.appConfig.errorWrapper; const { container } = this.appConfig.errorWrapper;
container.hidden = true; container.hidden = true;
} }
this.appConfig.viewerContainer.removeAttribute("lang");
if (!this.pdfLoadingTask) { if (!this.pdfLoadingTask) {
return; return;
@ -1536,6 +1537,9 @@ const PDFViewerApplication = {
`(PDF.js: ${version || "-"})` `(PDF.js: ${version || "-"})`
); );
if (info.Language) {
this.appConfig.viewerContainer.lang = info.Language;
}
let pdfTitle = info?.Title; let pdfTitle = info?.Title;
const metadataTitle = metadata?.get("dc:title"); const metadataTitle = metadata?.get("dc:title");