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