Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.0.13, 3.0.0 PDFBox
-
None
Description
Using Adobe Acrobat Pro DC to check the accessibility issue, it reported that:
Primary language Failed Text language is specified
Title Failed Document title is showing in title bar
So we may need change the code to support it pass, could you please fix this?
.../java/org/apache/pdfbox/multipdf/PDFMergerUtility.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java index b0474f2b9..be01d32c9 100644 --- a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java +++ b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java @@ -72,6 +72,7 @@ import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocume import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem; import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDField; +import org.apache.pdfbox.pdmodel.interactive.viewerpreferences.PDViewerPreferences; /** * This class will take a list of pdf documents and merge them, saving the @@ -422,12 +423,26 @@ public class PDFMergerUtility } tobeclosed.add(sourceDoc); appendDocument(destination, sourceDoc); + + if ( destinationDocumentInformation == null && sourceDoc.getDocumentInformation() != null ) { + destinationDocumentInformation = sourceDoc.getDocumentInformation(); + destination.getDocumentCatalog().setLanguage( sourceDoc.getDocumentCatalog().getLanguage() ); + } } // optionally set meta data if (destinationDocumentInformation != null) { destination.setDocumentInformation(destinationDocumentInformation); + if ( destinationDocumentInformation.getTitle() != null ) { + if ( destination.getDocumentCatalog().getViewerPreferences() == null ) { + destination.getDocumentCatalog().setViewerPreferences( new PDViewerPreferences( new COSDictionary() ) ); + } + destination.getDocumentCatalog().getViewerPreferences().setDisplayDocTitle( true ); + } + if ( destinationDocumentInformation.getCOSObject().getString( COSName.LANG ) != null ) { + destination.getDocumentCatalog().setLanguage( destinationDocumentInformation.getCOSObject().getString( COSName.LANG ) ); + } } if (destinationMetadata != null) {