Author: ssteiner Date: Mon Feb 16 12:15:36 2015 New Revision: 1660083 URL: http://svn.apache.org/r1660083 Log: FOP-2445: PDF Linearization, fix images
Modified: xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/render/pdf/PDFPainter.java xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/svg/PDFGraphics2D.java xmlgraphics/fop/branches/Temp_PDFLinearization/test/java/org/apache/fop/pdf/PDFLinearizationTestCase.java Modified: xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/render/pdf/PDFPainter.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/render/pdf/PDFPainter.java?rev=1660083&r1=1660082&r2=1660083&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/render/pdf/PDFPainter.java (original) +++ xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/render/pdf/PDFPainter.java Mon Feb 16 12:15:36 2015 @@ -171,7 +171,9 @@ public class PDFPainter extends Abstract prepareImageMCID(structElem); } drawImageUsingURI(uri, rect); - flushPDFDoc(); + if (!getDocumentHandler().getPDFDocument().isLinearizationEnabled()) { + flushPDFDoc(); + } } } @@ -228,7 +230,9 @@ public class PDFPainter extends Abstract prepareImageMCID(structElem); } drawImageUsingDocument(doc, rect); - flushPDFDoc(); + if (!getDocumentHandler().getPDFDocument().isLinearizationEnabled()) { + flushPDFDoc(); + } } private void flushPDFDoc() throws IFException { Modified: xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/svg/PDFGraphics2D.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/svg/PDFGraphics2D.java?rev=1660083&r1=1660082&r2=1660083&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/svg/PDFGraphics2D.java (original) +++ xmlgraphics/fop/branches/Temp_PDFLinearization/src/java/org/apache/fop/svg/PDFGraphics2D.java Mon Feb 16 12:15:36 2015 @@ -475,7 +475,7 @@ public class PDFGraphics2D extends Abstr } private void flushPDFDocument() { - if (outputStream != null) { + if (outputStream != null && !pdfDoc.isLinearizationEnabled()) { try { this.pdfDoc.output(outputStream); } catch (IOException ioe) { Modified: xmlgraphics/fop/branches/Temp_PDFLinearization/test/java/org/apache/fop/pdf/PDFLinearizationTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_PDFLinearization/test/java/org/apache/fop/pdf/PDFLinearizationTestCase.java?rev=1660083&r1=1660082&r2=1660083&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_PDFLinearization/test/java/org/apache/fop/pdf/PDFLinearizationTestCase.java (original) +++ xmlgraphics/fop/branches/Temp_PDFLinearization/test/java/org/apache/fop/pdf/PDFLinearizationTestCase.java Mon Feb 16 12:15:36 2015 @@ -18,9 +18,12 @@ /* $Id$ */ package org.apache.fop.pdf; +import java.awt.Dimension; +import java.awt.Rectangle; import java.awt.geom.Rectangle2D; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -28,10 +31,18 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import javax.xml.transform.stream.StreamResult; + import org.junit.Assert; import org.junit.Test; +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.apps.FopFactory; +import org.apache.fop.fonts.FontInfo; +import org.apache.fop.render.intermediate.IFContext; import org.apache.fop.render.pdf.PDFContentGenerator; +import org.apache.fop.render.pdf.PDFDocumentHandler; +import org.apache.fop.render.pdf.PDFPainter; public class PDFLinearizationTestCase { private int objectLeast; @@ -50,7 +61,7 @@ public class PDFLinearizationTestCase { Rectangle2D.Float f = new Rectangle2D.Float(); PDFPage page = new PDFPage(resources, i, f, f, f, f); doc.registerObject(page); -// doc.registerObject(gen.getStream()); + doc.registerObject(gen.getStream()); page.setContents(gen.getStream()); } gen.flushPDFDoc(); @@ -58,6 +69,31 @@ public class PDFLinearizationTestCase { checkPDF(data); } + @Test + public void testImage() throws Exception { + String fopxconf = "<fop version=\"1.0\"><renderers>" + + "<renderer mime=\"application/pdf\">" + + "<linearization>true</linearization>" + + "</renderer></renderers></fop>"; + FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI(), + new ByteArrayInputStream(fopxconf.getBytes())); + FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); + IFContext ifContext = new IFContext(foUserAgent); + PDFDocumentHandler documentHandler = new PDFDocumentHandler(ifContext); + documentHandler.getConfigurator().configure(documentHandler); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + documentHandler.setFontInfo(new FontInfo()); + documentHandler.setResult(new StreamResult(out)); + documentHandler.startDocument(); + documentHandler.startPage(0, "", "", new Dimension()); + PDFPainter pdfPainter = new PDFPainter(documentHandler, null); + pdfPainter.drawImage("test/resources/fop/svg/logo.jpg", new Rectangle()); + documentHandler.endPage(); + Assert.assertFalse(out.toString().contains("/Subtype /Image")); + documentHandler.endDocument(); + Assert.assertTrue(out.toString().contains("/Subtype /Image")); + } + private void checkPDF(byte[] data) throws IOException { checkHintTable(data); InputStream is = new ByteArrayInputStream(data); --------------------------------------------------------------------- To unsubscribe, e-mail: fop-commits-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-commits-h...@xmlgraphics.apache.org