You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by lb...@apache.org on 2013/03/16 18:51:33 UTC

svn commit: r1457280 - in /xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox: AbstractPDFBoxHandler.java PDFBoxAdapter.java PDFBoxImageHandler.java

Author: lbernardo
Date: Sat Mar 16 17:51:32 2013
New Revision: 1457280

URL: http://svn.apache.org/r1457280
Log:
FOP-2216: PDF forms are offset; patch submitted by Simon Steiner

Modified:
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java?rev=1457280&r1=1457279&r2=1457280&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java Sat Mar 16 17:51:32 2013
@@ -19,6 +19,7 @@
 
 package org.apache.fop.render.pdf.pdfbox;
 
+import java.awt.geom.AffineTransform;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
@@ -63,7 +64,7 @@ public abstract class AbstractPDFBoxHand
             = Collections.synchronizedMap(new WeakHashMap<Object, Cache<String, Map<Object, Object>>>());
 
     protected PDFFormXObject createFormForPDF(ImagePDF image,
-            PDFPage targetPage, FOUserAgent userAgent) throws IOException {
+            PDFPage targetPage, FOUserAgent userAgent, AffineTransform at) throws IOException {
 
         EventBroadcaster eventBroadcaster = userAgent.getEventBroadcaster();
         String originalImageUri = image.getInfo().getOriginalURI();
@@ -104,7 +105,7 @@ public abstract class AbstractPDFBoxHand
 
         PDFBoxAdapter adapter = new PDFBoxAdapter(targetPage, objectCache);
         PDFFormXObject form = adapter.createFormFromPDFBoxPage(pddoc, page, originalImageUri,
-                eventBroadcaster);
+                eventBroadcaster, at);
         return form;
     }
 

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java?rev=1457280&r1=1457279&r2=1457280&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java Sat Mar 16 17:51:32 2013
@@ -298,12 +298,13 @@ class PDFBoxAdapter {
      * @param sourceDoc the source PDF the given page to be copied belongs to
      * @param page the page to transform into a Form XObject
      * @param key value to use as key for the Form XObject
+     * @param atdoc adjustment for form
      * @return the Form XObject
      * @throws IOException if an I/O error occurs
      */
     public PDFFormXObject createFormFromPDFBoxPage(PDDocument sourceDoc, PDPage page, String key,
-            EventBroadcaster eventBroadcaster) throws IOException {
-        handleAcroForm(sourceDoc, page, eventBroadcaster);
+            EventBroadcaster eventBroadcaster, AffineTransform atdoc) throws IOException {
+        handleAcroForm(sourceDoc, page, eventBroadcaster, atdoc);
 
         PDResources sourcePageResources = page.findResources();
         PDFDictionary pageResources = null;
@@ -406,7 +407,7 @@ class PDFBoxAdapter {
     }
 
     private void handleAcroForm(PDDocument sourceDoc, PDPage page,
-            EventBroadcaster eventBroadcaster) throws IOException {
+            EventBroadcaster eventBroadcaster, AffineTransform at) throws IOException {
         PDDocumentCatalog srcCatalog = sourceDoc.getDocumentCatalog();
         PDAcroForm srcAcroForm = srcCatalog.getAcroForm();
         List pageWidgets = getWidgets(page);
@@ -414,6 +415,12 @@ class PDFBoxAdapter {
             return;
         }
 
+        for (Object obj : pageWidgets) {
+            PDAnnotation annot = (PDAnnotation)obj;
+            PDRectangle rect = annot.getRectangle();
+            rect.move((float)at.getTranslateX(), (float)at.getTranslateY());
+        }
+
         //Pseudo-cache the target page in place of the original source page.
         //This essentially replaces the original page reference with the target page.
         COSObject cosPage = null;

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java?rev=1457280&r1=1457279&r2=1457280&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java Sat Mar 16 17:51:32 2013
@@ -20,6 +20,7 @@
 package org.apache.fop.render.pdf.pdfbox;
 
 import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
 import java.io.IOException;
 
 import org.apache.commons.logging.Log;
@@ -54,16 +55,18 @@ public class PDFBoxImageHandler extends 
         PDFContentGenerator generator = pdfContext.getGenerator();
         ImagePDF pdfImage = (ImagePDF)image;
 
+        float x = (float)pos.getX() / 1000f;
+        float y = (float)pos.getY() / 1000f;
+        float w = (float)pos.getWidth() / 1000f;
+        float h = (float)pos.getHeight() / 1000f;
+
+        AffineTransform formadjust = generator.getAffineTransform();
         PDFFormXObject form = createFormForPDF(pdfImage, pdfContext.getPage(),
-                pdfContext.getUserAgent());
+                pdfContext.getUserAgent(), formadjust);
         if (form == null) {
             return;
         }
 
-        float x = (float)pos.getX() / 1000f;
-        float y = (float)pos.getY() / 1000f;
-        float w = (float)pos.getWidth() / 1000f;
-        float h = (float)pos.getHeight() / 1000f;
         generator.placeImage(x, y, w, h, form);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org