You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2020/12/12 18:29:52 UTC

svn commit: r1884361 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/interactive/form/ test/java/org/apache/pdfbox/pdmodel/interactive/form/

Author: msahyoun
Date: Sat Dec 12 18:29:51 2020
New Revision: 1884361

URL: http://svn.apache.org/viewvc?rev=1884361&view=rev
Log:
PDFBOX-5043: avoid StringIndexOutOfBoundsException; skip generation for PMD widgets

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormGenerateAppearancesTest.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java?rev=1884361&r1=1884360&r2=1884361&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java Sat Dec 12 18:29:51 2020
@@ -185,6 +185,12 @@ class AppearanceGeneratorHelper
 
         for (PDAnnotationWidget widget : field.getWidgets())
         {
+            if (widget.getCOSObject().containsKey("PMD"))
+            {
+                LOG.warn("widget of field " + field.getFullyQualifiedName() + " is a PaperMetaData widet, no appearance stream created");
+                continue;
+            }
+
             // some fields have the /Da at the widget level if the 
             // widgets differ in layout.
             PDDefaultAppearanceString acroFormAppearance = defaultAppearance;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java?rev=1884361&r1=1884360&r2=1884361&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java Sat Dec 12 18:29:51 2020
@@ -206,7 +206,8 @@ class PlainText
                     while (true)
                     {
                         splitOffset--;
-                        String substring = word.trim().substring(0, splitOffset);
+
+                        String substring = word.substring(0, splitOffset);
                         float substringWidth = font.getStringWidth(substring) * scale;
                         if (substringWidth < width)
                         {

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormGenerateAppearancesTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormGenerateAppearancesTest.java?rev=1884361&r1=1884360&r2=1884361&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormGenerateAppearancesTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormGenerateAppearancesTest.java Sat Dec 12 18:29:51 2020
@@ -63,4 +63,21 @@ public class PDAcroFormGenerateAppearanc
             assertDoesNotThrow(() -> catalog.getAcroForm(), "Getting the AcroForm shall not throw an exception");
         }
     }
+
+    /**
+     * PDFBOX-5043 PaperMetaData
+     * @throws IOException
+     */
+    @Test
+    public void test5043PaperMetaData() throws IOException
+    {
+        String sourceUrl = "https://issues.apache.org/jira/secure/attachment/13016992/PDFBOX-3891-5.pdf";
+
+        try (PDDocument testPdf = Loader.loadPDF(new URL(sourceUrl).openStream()))
+        {
+            PDDocumentCatalog catalog = testPdf.getDocumentCatalog();
+
+            assertDoesNotThrow(() -> catalog.getAcroForm(), "Getting the AcroForm shall not throw an exception");
+        }
+    }
 }