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 2016/05/20 10:37:13 UTC

svn commit: r1744691 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java test/java/org/apache/pdfbox/pdmodel/interactive/form/TestListBox.java

Author: msahyoun
Date: Fri May 20 10:37:13 2016
New Revision: 1744691

URL: http://svn.apache.org/viewvc?rev=1744691&view=rev
Log:
PDFBOX-3356: always generate/update the appearance stream when the field value changes regardless of NeedAppearances being set to true.

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestListBox.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java?rev=1744691&r1=1744690&r2=1744691&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java Fri May 20 10:37:13 2016
@@ -220,10 +220,7 @@ public abstract class PDTerminalField ex
      */
     protected final void applyChange() throws IOException
     {
-        if (!getAcroForm().getNeedAppearances())
-        {
-            constructAppearances();
-        }
+        constructAppearances();
         // if we supported JavaScript we would raise a field changed event here
     }
     

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestListBox.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestListBox.java?rev=1744691&r1=1744690&r2=1744691&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestListBox.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestListBox.java Fri May 20 10:37:13 2016
@@ -28,6 +28,12 @@ import junit.framework.TestSuite;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDResources;
+import org.apache.pdfbox.pdmodel.common.PDRectangle;
+import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDType1Font;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
 
 /**
  * This will test the functionality of choice fields in PDFBox.
@@ -95,11 +101,38 @@ public class TestListBox extends TestCas
         try
         {
             doc = new PDDocument();
+            PDPage page = new PDPage(PDRectangle.A4);
+            doc.addPage(page);
             PDAcroForm form = new PDAcroForm( doc );
+            
+            // Adobe Acrobat uses Helvetica as a default font and 
+            // stores that under the name '/Helv' in the resources dictionary
+            PDFont font = PDType1Font.HELVETICA;
+            PDResources resources = new PDResources();
+            resources.put(COSName.getPDFName("Helv"), font);
+            
+            // Add and set the resources and default appearance at the form level
+            form.setDefaultResources(resources);
+            
+            // Acrobat sets the font size on the form level to be
+            // auto sized as default. This is done by setting the font size to '0'
+            String defaultAppearanceString = "/Helv 0 Tf 0 g";
+            form.setDefaultAppearance(defaultAppearanceString);
+            
             PDChoice choice = new PDListBox(form);
             
-            // appearance construction is not implemented, so turn on NeedAppearances
-            form.setNeedAppearances(true);
+            choice.setDefaultAppearance("/Helv 12 Tf 0g");
+            
+            
+            // Specify the annotation associated with the field
+            PDAnnotationWidget widget = choice.getWidgets().get(0);
+            PDRectangle rect = new PDRectangle(50, 750, 200, 50);
+            widget.setRectangle(rect);
+            widget.setPage(page);
+            
+            // Add the annotation to the page
+            page.getAnnotations().add(widget);
+            
             
             // test that there are no nulls returned for an empty field
             // only specific methods are tested here