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 ss...@apache.org on 2020/01/29 09:33:35 UTC
svn commit: r1873290 - in /xmlgraphics/fop/trunk/fop-core/src:
main/java/org/apache/fop/render/pdf/PDFPainter.java
test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
Author: ssteiner
Date: Wed Jan 29 09:33:34 2020
New Revision: 1873290
URL: http://svn.apache.org/viewvc?rev=1873290&view=rev
Log:
FOP-2907: Missing bounding box on repeated image for PDF/UA
Modified:
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java?rev=1873290&r1=1873289&r2=1873290&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java Wed Jan 29 09:33:34 2020
@@ -168,6 +168,7 @@ public class PDFPainter extends Abstract
public void drawImage(String uri, Rectangle rect)
throws IFException {
PDFXObject xobject = getDocumentHandler().getPDFDocument().getXObject(uri);
+ addStructTreeBBox(rect);
if (xobject != null) {
if (accessEnabled) {
PDFStructElem structElem = (PDFStructElem) getContext().getStructureTreeElement();
@@ -177,7 +178,6 @@ public class PDFPainter extends Abstract
placeImage(rect, xobject);
}
} else {
- addStructTreeBBox(rect);
drawImageUsingURI(uri, rect);
if (!getDocumentHandler().getPDFDocument().isLinearizationEnabled()) {
flushPDFDoc();
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java?rev=1873290&r1=1873289&r2=1873290&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java Wed Jan 29 09:33:34 2020
@@ -24,9 +24,12 @@ import java.awt.Dimension;
import java.awt.Rectangle;
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
import javax.xml.transform.stream.StreamResult;
+import org.junit.Assert;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -47,9 +50,13 @@ import org.apache.fop.fonts.FontInfo;
import org.apache.fop.fonts.FontTriplet;
import org.apache.fop.fonts.MultiByteFont;
import org.apache.fop.pdf.PDFDocument;
+import org.apache.fop.pdf.PDFPage;
import org.apache.fop.pdf.PDFProfile;
+import org.apache.fop.pdf.PDFResources;
import org.apache.fop.pdf.PDFStructElem;
import org.apache.fop.pdf.PDFTextUtil;
+import org.apache.fop.pdf.PDFUAMode;
+import org.apache.fop.pdf.StandardStructureTypes;
import org.apache.fop.render.RenderingContext;
import org.apache.fop.render.intermediate.IFContext;
import org.apache.fop.render.intermediate.IFException;
@@ -218,4 +225,39 @@ public class PDFPainterTestCase {
return (Integer) invocation.getArguments()[0];
}
}
+
+ @Test
+ public void testPDFUAImage() throws IFException, IOException {
+ FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
+ foUserAgent = fopFactory.newFOUserAgent();
+ foUserAgent.setAccessibility(true);
+ IFContext ifContext = new IFContext(foUserAgent);
+ pdfDocumentHandler = new PDFDocumentHandler(ifContext);
+ pdfDocumentHandler.getStructureTreeEventHandler();
+ pdfDocumentHandler.setResult(new StreamResult(new ByteArrayOutputStream()));
+ pdfDocumentHandler.startDocument();
+ pdfDocumentHandler.startPage(0, "", "", new Dimension());
+ PDFDocument doc = pdfDocumentHandler.getPDFDocument();
+ doc.getProfile().setPDFUAMode(PDFUAMode.PDFUA_1);
+ doc.getInfo().setTitle("a");
+ PDFLogicalStructureHandler structureHandler = new PDFLogicalStructureHandler(doc);
+ structureHandler.startPage(new PDFPage(new PDFResources(doc), 0,
+ new Rectangle(), new Rectangle(), new Rectangle(), new Rectangle()));
+ PDFPainter pdfPainter = new PDFPainter(pdfDocumentHandler, structureHandler);
+ ifContext.setLanguage(Locale.US);
+ drawImage(doc, pdfPainter, ifContext);
+ String output = drawImage(doc, pdfPainter, ifContext);
+ Assert.assertTrue(output, output.contains("/BBox [0 0 0 0]"));
+ }
+
+ private String drawImage(PDFDocument doc, PDFPainter pdfPainter, IFContext ifContext)
+ throws IOException, IFException {
+ PDFStructElem structElem = new PDFStructElem(doc.getRoot(), StandardStructureTypes.InlineLevelStructure.NOTE);
+ structElem.setDocument(doc);
+ ifContext.setStructureTreeElement(structElem);
+ pdfPainter.drawImage("test/resources/images/cmyk.jpg", new Rectangle());
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ structElem.output(bos);
+ return bos.toString();
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org