You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/06/30 20:33:45 UTC
svn commit: r1606858 - in /pdfbox/trunk:
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphi...
Author: jahewson
Date: Mon Jun 30 18:33:45 2014
New Revision: 1606858
URL: http://svn.apache.org/r1606858
Log:
PDFBOX-2126: let Java do the GC'ing for cached resources and state
Added:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPatternDrawer.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDXObject.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/TilingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java Mon Jun 30 18:33:45 2014
@@ -42,23 +42,15 @@ import org.apache.pdfbox.pdmodel.interac
/**
* This represents a single page in a PDF document.
*
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
- *
+ * @author Ben Litchfield
*/
public class PDPage implements COSObjectable
{
-
- /**
- * Log instance.
- */
private static final Log LOG = LogFactory.getLog(PDPage.class);
-
private static final int DEFAULT_USER_SPACE_UNIT_DPI = 72;
-
private static final float MM_TO_UNITS = 1 / (10 * 2.54f) * DEFAULT_USER_SPACE_UNIT_DPI;
private COSDictionary page;
-
private PDResources pageResources;
/**
@@ -760,17 +752,13 @@ public class PDPage implements COSObject
page.setItem(COSName.ANNOTS, COSArrayList.converterToCOSArray(annots));
}
- /**
- * {@inheritDoc}
- */
+ @Override
public boolean equals(Object other)
{
return other instanceof PDPage && ((PDPage) other).getCOSObject() == this.getCOSObject();
}
- /**
- * {@inheritDoc}
- */
+ @Override
public int hashCode()
{
return this.getCOSDictionary().hashCode();
@@ -778,15 +766,12 @@ public class PDPage implements COSObject
/**
* Calling this will release all cached information.
- *
*/
- public void clear()
+ public void clearCache()
{
if (pageResources != null)
{
- pageResources.clear();
+ pageResources.clearCache();
}
- mediaBox = null;
- parent = null;
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java Mon Jun 30 18:33:45 2014
@@ -101,9 +101,8 @@ public class PDResources implements COSO
/**
* Calling this will release all cached information.
- *
*/
- public void clear()
+ public void clearCache()
{
if (fonts != null)
{
@@ -128,7 +127,7 @@ public class PDResources implements COSO
{
for(PDXObject xobject : xobjects.values())
{
- xobject.clear();
+ xobject.clearCache();
}
xobjects.clear();
xobjects = null;
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3Font.java Mon Jun 30 18:33:45 2014
@@ -120,7 +120,7 @@ public class PDType3Font extends PDFont
charProcs = null;
if (type3Resources != null)
{
- type3Resources.clear();
+ type3Resources.clearCache();
type3Resources = null;
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDXObject.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDXObject.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDXObject.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDXObject.java Mon Jun 30 18:33:45 2014
@@ -132,7 +132,7 @@ public class PDXObject implements COSObj
/**
* Calling this will release all cached information.
*/
- public void clear()
+ public void clearCache()
{
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java Mon Jun 30 18:33:45 2014
@@ -490,9 +490,9 @@ public final class PDImageXObject extend
}
@Override
- public void clear()
+ public void clearCache()
{
- super.clear();
+ super.clearCache();
cachedImage = null;
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/TilingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/TilingPaint.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/TilingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/TilingPaint.java Mon Jun 30 18:33:45 2014
@@ -34,10 +34,12 @@ import org.apache.pdfbox.rendering.PageD
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
+import org.apache.pdfbox.rendering.TilingPatternDrawer;
import org.apache.pdfbox.util.Matrix;
/**
* AWT Paint for a tiling pattern, which consists of a small repeating graphical figure.
+ *
* @author Andreas Lehmkühler
* @author John Hewson
*/
@@ -129,12 +131,12 @@ public class TilingPaint extends Texture
matrix.setValue(2, 1, matrix.getValue(2, 1) - (float)rect.getY()); // ty
}
- PageDrawer drawer = new PageDrawer(renderer);
+ // TODO: need to make it easy to use a custom TilingPatternDrawer
+ PageDrawer drawer = new TilingPatternDrawer(renderer);
PDRectangle pdRect = new PDRectangle(0, 0, width, height);
Graphics2D graphics = image.createGraphics();
drawer.drawTilingPattern(graphics, pattern, pdRect, matrix, colorSpace, color);
- drawer.dispose();
graphics.dispose();
return image;
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java Mon Jun 30 18:33:45 2014
@@ -38,7 +38,7 @@ public class PDFRenderer
// TODO keep rendering state such as caches here
private boolean clearResourcesAutomatically;
-
+
/**
* Creates a new PDFRenderer.
* @param document the document to render
@@ -51,7 +51,7 @@ public class PDFRenderer
/**
* Creates a new PDFRenderer.
* @param document the document to render
- * @param clearResourcesAutomatically indicates that all resources will be cleared automatically after rendering
+ * @param clearResourcesAutomatically true to clear cached page resources after rendering
*/
public PDFRenderer(PDDocument document, boolean clearResourcesAutomatically)
{
@@ -223,12 +223,13 @@ public class PDFRenderer
graphics.rotate((float) Math.toRadians(rotationAngle));
}
- PageDrawer drawer = new PageDrawer(this); // TODO: need to make it easy to use a custom PageDrawer
- drawer.drawPage(graphics, page, cropBox);
- drawer.dispose();
+ // TODO: need to make it easy to use a custom PageDrawer and TilingPatternDrawer
+ PageDrawer drawer = new PageDrawer(this, page);
+ drawer.drawPage(graphics, cropBox);
+
if (clearResourcesAutomatically)
{
- page.clear();
+ page.clearCache();
}
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Mon Jun 30 18:33:45 2014
@@ -40,7 +40,6 @@ import java.awt.image.Raster;
import java.awt.image.WritableRaster;
import java.io.IOException;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -89,10 +88,9 @@ import org.apache.pdfbox.util.PDFStreamE
import org.apache.pdfbox.util.ResourceLoader;
/**
- * This will paint a page in a PDF document to a graphics context.
- *
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
+ * Paints a page in a PDF document to a Graphics context.
*
+ * @author Ben Litchfield
*/
public class PageDrawer extends PDFStreamEngine
{
@@ -102,14 +100,15 @@ public class PageDrawer extends PDFStrea
// parent document renderer
private final PDFRenderer renderer;
+ private final PDPage page; // will be null if this is a TilingPatternDrawer
private Graphics2D graphics;
// clipping winding rule used for the clipping path
private int clipWindingRule = -1;
private GeneralPath linePath = new GeneralPath();
- private Map<PDFont, Glyph2D> fontGlyph2D = new HashMap<PDFont, Glyph2D>();
- private Map<PDFont, Font> awtFonts = new HashMap<PDFont, Font>();
+ private final Map<PDFont, Glyph2D> fontGlyph2D = new HashMap<PDFont, Glyph2D>();
+ private final Map<PDFont, Font> awtFonts = new HashMap<PDFont, Font>();
private int pageHeight;
@@ -118,10 +117,23 @@ public class PageDrawer extends PDFStrea
*
* @throws IOException If there is an error loading properties from the file.
*/
- public PageDrawer(PDFRenderer renderer) throws IOException
+ public PageDrawer(PDFRenderer renderer, PDPage page) throws IOException
{
super(ResourceLoader.loadProperties("org/apache/pdfbox/resources/PageDrawer.properties", true));
this.renderer = renderer;
+ this.page = page;
+ }
+
+ /**
+ * Tiling pattern constructor, loads properties from file.
+ *
+ * @throws IOException If there is an error loading properties from the file.
+ */
+ PageDrawer(PDFRenderer renderer) throws IOException
+ {
+ super(ResourceLoader.loadProperties("org/apache/pdfbox/resources/PageDrawer.properties", true));
+ this.renderer = renderer;
+ this.page = null;
}
/**
@@ -146,12 +158,11 @@ public class PageDrawer extends PDFStrea
* This will draw the page to the requested context.
*
* @param g The graphics context to draw onto.
- * @param page The page to draw.
* @param pageSize The size of the page to draw.
*
* @throws IOException If there is an IO error while drawing the page.
*/
- public void drawPage(Graphics g, PDPage page, PDRectangle pageSize) throws IOException
+ public void drawPage(Graphics g, PDRectangle pageSize) throws IOException
{
graphics = (Graphics2D) g;
pageHeight = (int)pageSize.getHeight();
@@ -243,30 +254,6 @@ public class PageDrawer extends PDFStrea
}
/**
- * Remove all cached resources.
- */
- public void dispose()
- {
- super.dispose();
- if (fontGlyph2D != null)
- {
- Iterator<Glyph2D> iter = fontGlyph2D.values().iterator();
- while (iter.hasNext())
- {
- iter.next().dispose();
- }
- fontGlyph2D.clear();
- fontGlyph2D = null;
- }
- if (awtFonts != null)
- {
- awtFonts.clear();
- }
- graphics = null;
- linePath = null;
- }
-
- /**
* You should override this method if you want to perform an action when a text is being processed.
*
* @param text The text to process
Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPatternDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPatternDrawer.java?rev=1606858&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPatternDrawer.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPatternDrawer.java Mon Jun 30 18:33:45 2014
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.rendering;
+
+import java.io.IOException;
+
+/**
+ * Tiling pattern drawer.
+ *
+ * @author John Hewson
+ */
+public class TilingPatternDrawer extends PageDrawer
+{
+ /**
+ * Tiling pattern constructor, loads properties from file.
+ *
+ * @throws java.io.IOException If there is an error loading properties from the file.
+ */
+ public TilingPatternDrawer(PDFRenderer renderer) throws IOException
+ {
+ super(renderer);
+ }
+}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java Mon Jun 30 18:33:45 2014
@@ -62,15 +62,13 @@ public class PDFStreamEngine
private static final Log LOG = LogFactory.getLog(PDFStreamEngine.class);
private final Set<String> unsupportedOperators = new HashSet<String>();
- private Map<String, OperatorProcessor> operators = new HashMap<String, OperatorProcessor>();
-
- private PDGraphicsState graphicsState;
+ private final Map<String, OperatorProcessor> operators = new HashMap<String, OperatorProcessor>();
private Matrix textMatrix;
private Matrix textLineMatrix;
- private Stack<PDGraphicsState> graphicsStack = new Stack<PDGraphicsState>();
+ private final Stack<PDGraphicsState> graphicsStack = new Stack<PDGraphicsState>();
- private Stack<PDResources> streamResourcesStack = new Stack<PDResources>();
+ private final Stack<PDResources> streamResourcesStack = new Stack<PDResources>();
private int pageRotation;
private PDRectangle drawingRectangle;
@@ -186,10 +184,10 @@ public class PDFStreamEngine
{
drawingRectangle = drawingSize;
pageRotation = rotation;
- graphicsState = new PDGraphicsState(drawingRectangle);
+ graphicsStack.clear();
+ graphicsStack.push(new PDGraphicsState(drawingRectangle));
textMatrix = null;
textLineMatrix = null;
- graphicsStack.clear();
streamResourcesStack.clear();
}
@@ -218,6 +216,13 @@ public class PDFStreamEngine
*/
public void processSubStream(PDResources resources, COSStream cosStream) throws IOException
{
+ // sanity check
+ if (drawingRectangle == null)
+ {
+ throw new IllegalStateException("Call to processSubStream() before processStream() " +
+ "or initStream()");
+ }
+
if (resources != null)
{
streamResourcesStack.push(resources);
@@ -227,7 +232,7 @@ public class PDFStreamEngine
}
finally
{
- streamResourcesStack.pop().clear();
+ streamResourcesStack.pop().clearCache();
}
}
else
@@ -286,6 +291,8 @@ public class PDFStreamEngine
// Text or Disp to represent if the values are in text or disp units (no glyph units are
// saved).
+ PDGraphicsState graphicsState = getGraphicsState();
+
final float fontSizeText = graphicsState.getTextState().getFontSize();
final float horizontalScalingText = graphicsState.getTextState().getHorizontalScaling() / 100f;
final float riseText = graphicsState.getTextState().getRise();
@@ -551,7 +558,7 @@ public class PDFStreamEngine
*/
public void saveGraphicsState()
{
- graphicsStack.push(getGraphicsState().clone());
+ graphicsStack.push(graphicsStack.peek().clone());
}
/**
@@ -559,7 +566,7 @@ public class PDFStreamEngine
*/
public void restoreGraphicsState()
{
- graphicsState = graphicsStack.pop();
+ graphicsStack.pop();
}
/**
@@ -575,15 +582,7 @@ public class PDFStreamEngine
*/
public PDGraphicsState getGraphicsState()
{
- return graphicsState;
- }
-
- /**
- * @param value The graphicsState to set.
- */
- public void setGraphicsState(PDGraphicsState value)
- {
- graphicsState = value;
+ return graphicsStack.peek();
}
/**
@@ -595,14 +594,6 @@ public class PDFStreamEngine
}
/**
- * @param value The graphicsStates to set.
- */
- public void setGraphicsStates(Map<String, PDExtendedGraphicsState> value)
- {
- streamResourcesStack.peek().setGraphicsStates(value);
- }
-
- /**
* @return Returns the textLineMatrix.
*/
public Matrix getTextLineMatrix()
@@ -686,42 +677,8 @@ public class PDFStreamEngine
protected float transformWidth(float width)
{
Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
-
- if (ctm == null)
- {
- // TODO does the CTM really need to use null?
- return width;
- }
-
float x = ctm.getValue(0, 0) + ctm.getValue(1, 0);
float y = ctm.getValue(0, 1) + ctm.getValue(1, 1);
return width * (float)Math.sqrt((x * x + y * y) * 0.5);
}
-
- /**
- * Remove all cached resources.
- */
- public void dispose()
- {
- drawingRectangle = null;
- graphicsState = null;
- textLineMatrix = null;
- textMatrix = null;
- if (graphicsStack != null)
- {
- graphicsStack.clear();
- graphicsStack = null;
- }
- if (streamResourcesStack != null)
- {
- streamResourcesStack.clear();
- streamResourcesStack = null;
- }
- if (operators != null)
- {
- operators.clear();
- operators = null;
- }
- unsupportedOperators.clear();
- }
}
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java Mon Jun 30 18:33:45 2014
@@ -96,6 +96,7 @@ public class PreflightContentStream exte
{
try
{
+ initStream(this.processeedPage.findCropBox(), 0);
processSubStream(xobj.getResources(), xobj.getCOSStream());
}
catch (ContentStreamException e)
Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java?rev=1606858&r1=1606857&r2=1606858&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java Mon Jun 30 18:33:45 2014
@@ -239,7 +239,7 @@ public class ExtractImages
System.out.println( "Writing image:" + name );
write2file( image, name, directJPEG );
- image.clear(); // PDFBOX-2101 get rid of cache ASAP
+ image.clearCache();
}
// maybe there are more images embedded in a form object
else if (xobject instanceof PDFormXObject)
@@ -250,7 +250,7 @@ public class ExtractImages
}
}
}
- resources.clear();
+ resources.clearCache();
}
// get and write the unmodified JPEG stream