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 2021/07/25 18:45:09 UTC
svn commit: r1891795 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java
Author: tilman
Date: Sun Jul 25 18:45:08 2021
New Revision: 1891795
URL: http://svn.apache.org/viewvc?rev=1891795&view=rev
Log:
PDFBOX-4892: keep pageTree ref locally to speed up page access + simplify code, as suggested by valerybokov
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java?rev=1891795&r1=1891794&r2=1891795&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java Sun Jul 25 18:45:08 2021
@@ -32,6 +32,7 @@ import org.apache.commons.logging.LogFac
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDPageTree;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.blend.BlendMode;
@@ -78,6 +79,8 @@ public class PDFRenderer
private float imageDownscalingOptimizationThreshold = 0.5f;
+ private final PDPageTree pageTree;
+
/**
* Creates a new PDFRenderer.
* @param document the document to render
@@ -85,6 +88,7 @@ public class PDFRenderer
public PDFRenderer(PDDocument document)
{
this.document = document;
+ this.pageTree = document.getPages();
if (!kcmsLogged)
{
@@ -281,7 +285,7 @@ public class PDFRenderer
public BufferedImage renderImage(int pageIndex, float scale, ImageType imageType, RenderDestination destination)
throws IOException
{
- PDPage page = document.getPage(pageIndex);
+ PDPage page = pageTree.get(pageIndex);
PDRectangle cropbBox = page.getCropBox();
float widthPt = cropbBox.getWidth();
@@ -300,7 +304,7 @@ public class PDFRenderer
int rotationAngle = page.getRotation();
- int bimType = imageType.toBufferedImageType();
+ int bimType;
if (imageType != ImageType.ARGB && hasBlendMode(page))
{
// PDFBOX-4095: if the PDF has blending on the top level, draw on transparent background
@@ -309,6 +313,10 @@ public class PDFRenderer
// Finally when the page has been rendered, PDF.js draws the RGBA canvas on a white canvas.
bimType = BufferedImage.TYPE_INT_ARGB;
}
+ else
+ {
+ bimType = imageType.toBufferedImageType();
+ }
// swap width and height
BufferedImage image;
@@ -440,7 +448,7 @@ public class PDFRenderer
public void renderPageToGraphics(int pageIndex, Graphics2D graphics, float scaleX, float scaleY, RenderDestination destination)
throws IOException
{
- PDPage page = document.getPage(pageIndex);
+ PDPage page = pageTree.get(pageIndex);
// TODO need width/height calculations? should these be in PageDrawer?
transform(graphics, page, scaleX, scaleY);