You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2018/08/29 17:01:39 UTC

svn commit: r1839592 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel: ./ interactive/annotation/handlers/

Author: tilman
Date: Wed Aug 29 17:01:39 2018
New Revision: 1839592

URL: http://svn.apache.org/viewvc?rev=1839592&view=rev
Log:
PDFBOX-3353: include border array into setBorderLine

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAppearanceContentStream.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDCircleAppearanceHandler.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDLinkAppearanceHandler.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDPolygonAppearanceHandler.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAppearanceContentStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAppearanceContentStream.java?rev=1839592&r1=1839591&r2=1839592&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAppearanceContentStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAppearanceContentStream.java Wed Aug 29 17:01:39 2018
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdmodel;
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.OutputStream;
+import org.apache.pdfbox.cos.COSArray;
 
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
@@ -188,7 +189,18 @@ public final class PDAppearanceContentSt
         //Or call the appropriate setNonStrokingColor() method from the base class?
     }
 
-    public void setBorderLine(float lineWidth, PDBorderStyleDictionary bs) throws IOException
+    /**
+     * Convenience method for annotations: sets the line with and dash style.
+     *
+     * @param lineWidth The line width.
+     * @param bs The border style, may be null.
+     * @param border The border array, must have at least three entries. This is
+     * only used if the border style is null.
+     *
+     * @throws IOException If there is an error writing to the content stream.
+     */
+    public void setBorderLine(float lineWidth, PDBorderStyleDictionary bs,
+                                               COSArray border) throws IOException
     {
         // Can't use PDBorderStyleDictionary.getDashStyle() as
         // this will return a default dash style if non is existing
@@ -197,6 +209,10 @@ public final class PDAppearanceContentSt
         {
             setLineDashPattern(bs.getDashStyle().getDashArray(), 0);
         }
+        else if (bs == null && border.size() > 3 && border.getObject(3) instanceof COSArray)
+        {
+            setLineDashPattern(((COSArray) border.getObject(3)).toFloatArray(), 0);
+        }
         setLineWidthOnDemand(lineWidth);
     }
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDCircleAppearanceHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDCircleAppearanceHandler.java?rev=1839592&r1=1839591&r2=1839592&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDCircleAppearanceHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDCircleAppearanceHandler.java Wed Aug 29 17:01:39 2018
@@ -65,7 +65,7 @@ public class PDCircleAppearanceHandler e
 
             setOpacity(contentStream, annotation.getConstantOpacity());
 
-            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle());
+            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle(), annotation.getBorder());
             PDBorderEffectDictionary borderEffect = annotation.getBorderEffect();
 
             // Acrobat applies a padding to each side of the bbox so the line is completely within

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDLinkAppearanceHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDLinkAppearanceHandler.java?rev=1839592&r1=1839591&r2=1839592&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDLinkAppearanceHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDLinkAppearanceHandler.java Wed Aug 29 17:01:39 2018
@@ -75,17 +75,7 @@ public class PDLinkAppearanceHandler ext
             }
             boolean hasStroke = contentStream.setStrokingColorOnDemand(color);
 
-            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle());
-            //TODO find better way to do this. Either pass border array to
-            // setBorderLine(), or use AnnotationBorder class
-            if (annotation.getBorderStyle() == null)
-            {
-                COSArray border = annotation.getBorder();
-                if (border.size() > 3 && border.getObject(3) instanceof COSArray)
-                {
-                    contentStream.setLineDashPattern(((COSArray) border.getObject(3)).toFloatArray(), 0);
-                }
-            }
+            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle(), annotation.getBorder());
 
             // the differences rectangle
             // TODO: this only works for border effect solid. Cloudy needs a different approach.

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDPolygonAppearanceHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDPolygonAppearanceHandler.java?rev=1839592&r1=1839591&r2=1839592&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDPolygonAppearanceHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDPolygonAppearanceHandler.java Wed Aug 29 17:01:39 2018
@@ -100,17 +100,7 @@ public class PDPolygonAppearanceHandler
 
             setOpacity(contentStream, annotation.getConstantOpacity());
 
-            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle());
-            //TODO find better way to do this. Either pass border array to
-            // setBorderLine(), or use AnnotationBorder class
-            if (annotation.getBorderStyle() == null)
-            {
-                COSArray border = annotation.getBorder();
-                if (border.size() > 3 && border.getObject(3) instanceof COSArray)
-                {
-                    contentStream.setLineDashPattern(((COSArray) border.getObject(3)).toFloatArray(), 0);
-                }
-            }
+            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle(), annotation.getBorder());
 
             PDBorderEffectDictionary borderEffect = annotation.getBorderEffect();
             if (borderEffect != null && borderEffect.getStyle().equals(PDBorderEffectDictionary.STYLE_CLOUDY))

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java?rev=1839592&r1=1839591&r2=1839592&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java Wed Aug 29 17:01:39 2018
@@ -67,7 +67,7 @@ public class PDSquareAppearanceHandler e
 
             setOpacity(contentStream, annotation.getConstantOpacity());
 
-            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle());                
+            contentStream.setBorderLine(lineWidth, annotation.getBorderStyle(), annotation.getBorder());                
             PDBorderEffectDictionary borderEffect = annotation.getBorderEffect();
 
             if (borderEffect != null && borderEffect.getStyle().equals(PDBorderEffectDictionary.STYLE_CLOUDY))