Merge pull request #21616 from calixteman/fix/pdf-editor-indirect-default-resources

Preserve indirect AcroForm resources
This commit is contained in:
calixteman 2026-07-21 21:45:13 +02:00 committed by GitHub
commit 0c8f67059e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 1 deletions

View File

@ -2899,7 +2899,7 @@ class PDFEditor {
acroForm.set("SigFlags", this.acroFormSigFlags);
}
acroForm.setIfArray("CO", this.acroFormCalculationOrder);
acroForm.setIfDict("DR", this.acroFormDefaultResources);
acroForm.setIfDefined("DR", this.acroFormDefaultResources);
if (this.acroFormDefaultAppearance) {
acroForm.set("DA", this.acroFormDefaultAppearance);
}

View File

@ -7629,6 +7629,34 @@ small scripts as well as for`);
await loadingTask.destroy();
});
it("preserves indirect AcroForm default resources", async function () {
const pdfData = assemblePdf([
"1 0 obj\n<< /Type /Catalog /Pages 2 0 R " +
"/AcroForm 6 0 R >>\nendobj\n",
"2 0 obj\n<< /Type /Pages /Kids [3 0 R] /Count 1 >>\nendobj\n",
"3 0 obj\n<< /Type /Page /Parent 2 0 R " +
"/MediaBox [0 0 100 100] /Annots [4 0 R] >>\nendobj\n",
"4 0 obj\n<< /Type /Annot /Subtype /Widget /FT /Tx /T (field) " +
"/Rect [0 0 20 10] >>\nendobj\n",
"5 0 obj\n<< /Font << /Helv 7 0 R >> >>\nendobj\n",
"6 0 obj\n<< /Fields [4 0 R] /DR 5 0 R " +
"/DA (/Helv 10 Tf) >>\nendobj\n",
"7 0 obj\n<< /Type /Font /Subtype /Type1 " +
"/BaseFont /Helvetica >>\nendobj\n",
]);
let loadingTask = getDocument({ data: pdfData });
let pdfDoc = await loadingTask.promise;
const data = await pdfDoc.extractPages([{ document: null }]);
expect(countMarker(data, "/DR ")).toEqual(1);
await loadingTask.destroy();
loadingTask = getDocument({ data });
pdfDoc = await loadingTask.promise;
expect(Object.keys(await pdfDoc.getFieldObjects())).toEqual(["field"]);
await loadingTask.destroy();
});
it("extract page 2 and check AcroForm Fields T entries", async function () {
let loadingTask = getDocument(
buildGetDocumentParams("form_two_pages.pdf")