pdfbox-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "DerekLiu (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (PDFBOX-4445) Need fix accessibility issue
Date Mon, 28 Jan 2019 04:52:00 GMT

     [ https://issues.apache.org/jira/browse/PDFBOX-4445?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

DerekLiu updated PDFBOX-4445:
-----------------------------
    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?
{code}
 .../java/org/apache/pdfbox/multipdf/PDFMergerUtility.java | 15 +++++++++++++++
 .../main/java/org/apache/pdfbox/pdfparser/COSParser.java  |  3 +++
 2 files changed, 18 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)
                 {
diff --git a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
index 8ca955ed2..b2b28b258 100644
--- a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
+++ b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
@@ -721,6 +721,9 @@ public class COSParser extends BaseParser
                                     }
                                 }
 
+                                if( fileOffset == null ) {
+                                  continue;
+                                }
                                 List<COSObject> stmObjects = objToBeParsed.get(fileOffset);
                                 if (stmObjects == null)
                                 {

{code}

  was:
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?
{code}
 .../main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java | 10 ++++++++++
 .../src/main/java/org/apache/pdfbox/pdfparser/COSParser.java   |  3 +++
 2 files changed, 13 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..472729ea4 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
@@ -428,6 +429,15 @@ public class PDFMergerUtility
                 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)
                 {
diff --git a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
index 8ca955ed2..b2b28b258 100644
--- a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
+++ b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
@@ -721,6 +721,9 @@ public class COSParser extends BaseParser
                                     }
                                 }
 
+                                if( fileOffset == null ) {
+                                  continue;
+                                }
                                 List<COSObject> stmObjects = objToBeParsed.get(fileOffset);
                                 if (stmObjects == null)
                                 {

{code}


> Need fix accessibility issue
> ----------------------------
>
>                 Key: PDFBOX-4445
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-4445
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Utilities
>    Affects Versions: 3.0.0 PDFBox
>            Reporter: DerekLiu
>            Priority: Major
>
> 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?
> {code}
>  .../java/org/apache/pdfbox/multipdf/PDFMergerUtility.java | 15 +++++++++++++++
>  .../main/java/org/apache/pdfbox/pdfparser/COSParser.java  |  3 +++
>  2 files changed, 18 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)
>                  {
> diff --git a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
> index 8ca955ed2..b2b28b258 100644
> --- a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
> +++ b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
> @@ -721,6 +721,9 @@ public class COSParser extends BaseParser
>                                      }
>                                  }
>  
> +                                if( fileOffset == null ) {
> +                                  continue;
> +                                }
>                                  List<COSObject> stmObjects = objToBeParsed.get(fileOffset);
>                                  if (stmObjects == null)
>                                  {
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org


Mime
View raw message