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/01/18 19:24:58 UTC

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

Author: tilman
Date: Thu Jan 18 19:24:58 2018
New Revision: 1821545

URL: http://svn.apache.org/viewvc?rev=1821545&view=rev
Log:
PDFBOX-3353: add logging, simplify

Modified:
    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/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=1821545&r1=1821544&r2=1821545&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 Thu Jan 18 19:24:58 2018
@@ -18,11 +18,13 @@
 package org.apache.pdfbox.pdmodel.interactive.annotation.handlers;
 
 import java.io.IOException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
-import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationSquareCircle;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationSquare;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceContentStream;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDBorderStyleDictionary;
 
@@ -32,7 +34,8 @@ import org.apache.pdfbox.pdmodel.interac
  */
 public class PDSquareAppearanceHandler extends PDAbstractAppearanceHandler
 {
-    
+    private static final Log LOG = LogFactory.getLog(PDSquareAppearanceHandler.class);
+        
     public PDSquareAppearanceHandler(PDAnnotation annotation)
     {
         super(annotation);
@@ -52,31 +55,33 @@ public class PDSquareAppearanceHandler e
         float lineWidth = getLineWidth();
         try
         {
-            PDAppearanceContentStream contentStream = getNormalAppearanceAsContentStream();
-            contentStream.setStrokingColorOnDemand(getColor());
-            boolean hasBackground = contentStream
-                    .setNonStrokingColorOnDemand(((PDAnnotationSquareCircle) getAnnotation()).getInteriorColor());
-
-            handleOpacity(((PDAnnotationSquareCircle) getAnnotation()).getConstantOpacity());
-            
-            contentStream.setBorderLine(lineWidth, ((PDAnnotationSquareCircle) getAnnotation()).getBorderStyle());
-            
-            // the differences rectangle
-            // TODO: this only works for border effect solid. Cloudy needs a different approach.
-            setRectDifference(lineWidth);
-            
-            // Acrobat applies a padding to each side of the bbox so the line is completely within
-            // the bbox.
-            PDRectangle borderEdge = getPaddedRectangle(getRectangle(),lineWidth/2);
-            contentStream.addRect(borderEdge.getLowerLeftX() , borderEdge.getLowerLeftY(),
-                    borderEdge.getWidth(), borderEdge.getHeight());
-            
-            contentStream.drawShape(lineWidth, hasBackground);
-            
-            contentStream.close();
-        } catch (IOException e)
+            PDAnnotationSquare annotation = (PDAnnotationSquare) getAnnotation();
+            try (PDAppearanceContentStream contentStream = getNormalAppearanceAsContentStream())
+            {
+                contentStream.setStrokingColorOnDemand(getColor());
+                boolean hasBackground = contentStream
+                        .setNonStrokingColorOnDemand(annotation.getInteriorColor());
+                
+                handleOpacity(annotation.getConstantOpacity());
+                
+                contentStream.setBorderLine(lineWidth, annotation.getBorderStyle());
+                
+                // the differences rectangle
+                // TODO: this only works for border effect solid. Cloudy needs a different approach.
+                setRectDifference(lineWidth);
+                
+                // Acrobat applies a padding to each side of the bbox so the line is completely within
+                // the bbox.
+                PDRectangle borderEdge = getPaddedRectangle(getRectangle(),lineWidth/2);
+                contentStream.addRect(borderEdge.getLowerLeftX(), borderEdge.getLowerLeftY(),
+                        borderEdge.getWidth(), borderEdge.getHeight());
+                
+                contentStream.drawShape(lineWidth, hasBackground);
+            }
+        }
+        catch (IOException e)
         {
-            e.printStackTrace();
+            LOG.error(e);
         }
     }
 
@@ -109,7 +114,7 @@ public class PDSquareAppearanceHandler e
     // here and removed from the individual handlers.
     float getLineWidth()
     {
-        PDAnnotationSquareCircle annotation = (PDAnnotationSquareCircle) getAnnotation();
+        PDAnnotationSquare annotation = (PDAnnotationSquare) getAnnotation();
 
         PDBorderStyleDictionary bs = annotation.getBorderStyle();