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 2017/07/05 16:11:17 UTC

svn commit: r1800894 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Overlay.java

Author: tilman
Date: Wed Jul  5 16:11:17 2017
New Revision: 1800894

URL: http://svn.apache.org/viewvc?rev=1800894&view=rev
Log:
PDFBOX-3852: avoid identical resources, as suggested by ryuukei

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Overlay.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Overlay.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Overlay.java?rev=1800894&r1=1800893&r2=1800894&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Overlay.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Overlay.java Wed Jul  5 16:11:17 2017
@@ -102,12 +102,20 @@ public class Overlay
     public PDDocument overlay(Map<Integer, String> specificPageOverlayFile)
             throws IOException
     {
+        Map<String, PDDocument> loadedDocuments = new HashMap<String, PDDocument>();
+        Map<PDDocument, LayoutPage> layouts = new HashMap<PDDocument, LayoutPage>();
         loadPDFs();
         for (Map.Entry<Integer, String> e : specificPageOverlayFile.entrySet())
         {
-            PDDocument doc = loadPDF(e.getValue());
+            PDDocument doc = loadedDocuments.get(e.getValue());
+            if (doc == null)
+            {
+                doc = loadPDF(e.getValue());
+                loadedDocuments.put(e.getValue(), doc);
+                layouts.put(doc, getLayoutPage(doc));
+            }
             specificPageOverlay.put(e.getKey(), doc);
-            specificPageOverlayPage.put(e.getKey(), getLayoutPage(doc));
+            specificPageOverlayPage.put(e.getKey(), layouts.get(doc));
         }
         processPages(inputPDFDocument);
         return inputPDFDocument;