You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2013/11/17 18:27:41 UTC

svn commit: r1542768 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox: filter/JBIG2Filter.java pdfviewer/PageDrawer.java pdmodel/PDPage.java pdmodel/PDPageable.java pdmodel/graphics/xobject/PDXObjectImage.java

Author: lehmi
Date: Sun Nov 17 17:27:41 2013
New Revision: 1542768

URL: http://svn.apache.org/r1542768
Log:
PDFBOX-1687: added some graphics.dispose calls and a new dispose method in PageDrawer to release used resources

Modified:
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java?rev=1542768&r1=1542767&r2=1542768&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java Sun Nov 17 17:27:41 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.pdfbox.filter;
 
+import java.awt.Graphics;
 import java.awt.image.BufferedImage;
 import java.awt.image.DataBuffer;
 import java.awt.image.DataBufferByte;
@@ -98,7 +99,9 @@ public class JBIG2Filter implements Filt
                 }
                 BufferedImage packedImage = 
                         new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
-                packedImage.getGraphics().drawImage(bi, 0, 0, null);
+                Graphics graphics = packedImage.getGraphics();  
+                graphics.drawImage(bi, 0, 0, null);
+                graphics.dispose();
                 bi = packedImage;
             }
             DataBuffer dBuf = bi.getData().getDataBuffer();

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java?rev=1542768&r1=1542767&r2=1542768&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java Sun Nov 17 17:27:41 2013
@@ -163,6 +163,17 @@ public class PageDrawer extends PDFStrea
     }
 
     /**
+     * Remove all cached resources.
+     */
+    public void dispose()
+    {
+        graphics = null;
+        linePath = null;
+        page = null;
+        pageSize = null;
+    }
+
+    /**
      * You should override this method if you want to perform an action when a
      * text is being processed.
      *

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java?rev=1542768&r1=1542767&r2=1542768&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java Sun Nov 17 17:27:41 2013
@@ -799,7 +799,8 @@ public class PDPage implements COSObject
         graphics.scale( scaling, scaling );
         PageDrawer drawer = new PageDrawer();
         drawer.drawPage( graphics, this, pageDimension );
-
+        drawer.dispose();
+        graphics.dispose();
         return retval;
     }
 
@@ -882,6 +883,7 @@ public class PDPage implements COSObject
             PageDrawer drawer = new PageDrawer();
             PDRectangle cropBox = findCropBox();
             drawer.drawPage( graphics, this, cropBox.createDimension() );
+            drawer.dispose();
             return PAGE_EXISTS;
         }
         catch( IOException io )

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java?rev=1542768&r1=1542767&r2=1542768&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java Sun Nov 17 17:27:41 2013
@@ -195,6 +195,7 @@ public class PDPageable implements Pagea
                 PDRectangle cropBox = page.findCropBox();
                 PageDrawer drawer = new PageDrawer();
                 drawer.drawPage( graphics, page, cropBox.createDimension() );
+                drawer.dispose();
                 return PAGE_EXISTS;
             }
             catch( IOException io )

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=1542768&r1=1542767&r2=1542768&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java Sun Nov 17 17:27:41 2013
@@ -183,6 +183,7 @@ public abstract class PDXObjectImage ext
         // TODO DecodeArray == [1,0]
         graphics.setComposite(AlphaComposite.DstIn);
         graphics.drawImage(baseImage, null, 0, 0);
+        graphics.dispose();
         return stencilMask;
     }
     
@@ -205,6 +206,7 @@ public abstract class PDXObjectImage ext
     	   	 graphics.drawImage(baseImage, 0, 0, maskImage.getWidth(), maskImage.getHeight(), 0, 0, baseImage.getWidth(), baseImage.getHeight(), null);   
     	   	 graphics.setComposite(AlphaComposite.DstIn);
     	   	 graphics.drawImage(maskImage, null, 0, 0);
+    	   	 graphics.dispose();
     	   	 return newImage;
         }
         else