Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFShading.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFShading.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFShading.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFShading.java Mon Mar 26 17:39:20 2012 @@ -342,8 +342,7 @@ public class PDFShading extends PDFObjec int vectorSize; int tempInt; StringBuffer p = new StringBuffer(128); - p.append(getObjectID() - + "<< \n/ShadingType " + this.shadingType + " \n"); + p.append("<<\n/ShadingType " + this.shadingType + " \n"); if (this.colorSpace != null) { p.append("/ColorSpace /" + this.colorSpace.getName() + " \n"); @@ -528,7 +527,7 @@ public class PDFShading extends PDFObjec } - p.append(">> \nendobj\n"); + p.append(">>"); return (p.toString()); }
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStream.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStream.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStream.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStream.java Mon Mar 26 17:39:20 2012 @@ -21,6 +21,7 @@ package org.apache.fop.pdf; import java.io.IOException; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.io.Writer; /** @@ -44,16 +45,33 @@ public class PDFStream extends AbstractP * Create an empty stream object */ public PDFStream() { - super(); + setUp(); + } + + public PDFStream(PDFDictionary dictionary) { + super(dictionary); + setUp(); + } + + public PDFStream(PDFDictionary dictionary, boolean encodeOnTheFly) { + super(dictionary, encodeOnTheFly); + setUp(); + } + + public PDFStream(boolean encodeOnTheFly) { + super(encodeOnTheFly); + setUp(); + } + + private void setUp() { try { data = StreamCacheFactory.getInstance().createStreamCache(); - this.streamWriter = new java.io.OutputStreamWriter( + this.streamWriter = new OutputStreamWriter( getBufferOutputStream(), PDFDocument.ENCODING); //Buffer to minimize calls to the converter this.streamWriter = new java.io.BufferedWriter(this.streamWriter); - } catch (IOException ex) { - //TODO throw the exception and catch it elsewhere - ex.printStackTrace(); + } catch (IOException e) { + throw new RuntimeException(e); } } @@ -136,7 +154,7 @@ public class PDFStream extends AbstractP /** * {@inheritDoc} */ - protected int output(OutputStream stream) throws IOException { + public int output(OutputStream stream) throws IOException { final int len = super.output(stream); //Now that the data has been written, it can be discarded. Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFStructElem.java Mon Mar 26 17:39:20 2012 @@ -31,7 +31,7 @@ import org.apache.fop.util.LanguageTags; /** * Class representing a PDF Structure Element. */ -public class PDFStructElem extends PDFDictionary implements StructureTreeElement { +public class PDFStructElem extends PDFDictionary implements StructureTreeElement, CompressedObject { private PDFStructElem parentElement; Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFT1Stream.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFT1Stream.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFT1Stream.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFT1Stream.java Mon Mar 26 17:39:20 2012 @@ -46,7 +46,7 @@ public class PDFT1Stream extends Abstrac * byte arrays around so much * {@inheritDoc} */ - protected int output(java.io.OutputStream stream) + public int output(java.io.OutputStream stream) throws java.io.IOException { if (pfb == null) { throw new IllegalStateException("pfb must not be null at this point"); Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFTTFStream.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFTTFStream.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFTTFStream.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFTTFStream.java Mon Mar 26 17:39:20 2012 @@ -53,7 +53,7 @@ public class PDFTTFStream extends Abstra * byte arrays around so much * {@inheritDoc} */ - protected int output(java.io.OutputStream stream) + public int output(java.io.OutputStream stream) throws java.io.IOException { if (log.isDebugEnabled()) { log.debug("Writing " + origLength + " bytes of TTF font data"); Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFText.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFText.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFText.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFText.java Mon Mar 26 17:39:20 2012 @@ -60,11 +60,9 @@ public class PDFText extends PDFObject { "The text of this PDFText must not be empty"); } StringBuffer sb = new StringBuffer(64); - sb.append(getObjectID()); sb.append("("); sb.append(escapeText(getText())); sb.append(")"); - sb.append("\nendobj\n"); return sb.toString(); } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFUri.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFUri.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFUri.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFUri.java Mon Mar 26 17:39:20 2012 @@ -55,8 +55,7 @@ public class PDFUri extends PDFAction { /** {@inheritDoc} */ public String toPDFString() { //TODO Convert this class into a dictionary - return getObjectID() + getDictString() + "\nendobj\n"; - //throw new UnsupportedOperationException("This method should not be called"); + return getDictString(); } } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFXObject.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFXObject.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFXObject.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/PDFXObject.java Mon Mar 26 17:39:20 2012 @@ -41,6 +41,10 @@ public abstract class PDFXObject extends super(); } + protected PDFXObject(PDFDictionary dictionary) { + super(dictionary); + } + /** * Returns the XObject's name. * @return the name of the XObject Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/Version.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/Version.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/Version.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/pdf/Version.java Mon Mar 26 17:39:20 2012 @@ -48,12 +48,13 @@ public enum Version { } /** - * Given the PDF version as a String, returns the corresponding enumerated type. The String - * should be in the format "1.x" for PDF v1.x. + * Given the PDF version as a String, returns the corresponding enumerated type. The + * String should be in the format "1.x" for PDF v1.x. * * @param version a version number * @return the corresponding Version instance - * @throws IllegalArgumentException if the argument does not correspond to any existing PDF version + * @throws IllegalArgumentException if the argument does not correspond to any + * existing PDF version */ public static Version getValueOf(String version) { for (Version pdfVersion : Version.values()) { Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java Mon Mar 26 17:39:20 2012 @@ -95,15 +95,15 @@ class PDFLogicalStructureHandler { */ PDFLogicalStructureHandler(PDFDocument pdfDoc) { this.pdfDoc = pdfDoc; - PDFStructTreeRoot structTreeRoot = pdfDoc.getFactory().makeStructTreeRoot(parentTree); - rootStructureElement = pdfDoc.getFactory().makeStructureElement( + PDFStructTreeRoot structTreeRoot = pdfDoc.makeStructTreeRoot(parentTree); + rootStructureElement = pdfDoc.makeStructureElement( FOToPDFRoleMap.mapFormattingObject("root", structTreeRoot), structTreeRoot); structTreeRoot.addKid(rootStructureElement); } PDFStructElem createPageSequence(Locale language) { - PDFStructElem structElemPart = pdfDoc.getFactory().makeStructureElement( + PDFStructElem structElemPart = pdfDoc.makeStructureElement( FOToPDFRoleMap.mapFormattingObject("page-sequence", rootStructureElement), rootStructureElement); rootStructureElement.addKid(structElemPart); Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderingUtil.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderingUtil.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderingUtil.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderingUtil.java Mon Mar 26 17:39:20 2012 @@ -385,8 +385,8 @@ class PDFRenderingUtil implements PDFCon if (maxPDFVersion == null) { this.pdfDoc = new PDFDocument(producer); } else { - VersionController controller = - VersionController.getFixedVersionController(maxPDFVersion); + VersionController controller + = VersionController.getFixedVersionController(maxPDFVersion); this.pdfDoc = new PDFDocument(producer, controller); } updateInfo(); @@ -411,6 +411,9 @@ class PDFRenderingUtil implements PDFCon log.debug("PDF/A is active. Conformance Level: " + pdfAMode); addPDFA1OutputIntent(); } + + this.pdfDoc.enableAccessibility(userAgent.isAccessibilityEnabled()); + return this.pdfDoc; } Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java (original) +++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java Mon Mar 26 17:39:20 2012 @@ -65,7 +65,7 @@ class PDFStructureTreeBuilder implements PDFStructElem parent = ancestors.getFirst(); String role = attributes.getValue("role"); PDFStructElem created; - created = pdfFactory.makeStructureElement( + created = pdfFactory.getDocument().makeStructureElement( FOToPDFRoleMap.mapFormattingObject(name, role, parent, eventBroadcaster), parent); parent.addKid(created); ancestors.addFirst(created); @@ -84,7 +84,7 @@ class PDFStructureTreeBuilder implements PDFStructElem parent = ancestors.getFirst(); String role = attributes.getValue("role"); PDFStructElem created; - created = pdfFactory.makeStructureElement( + created = pdfFactory.getDocument().makeStructureElement( FOToPDFRoleMap.mapFormattingObject(name, role, parent, eventBroadcaster), parent); parent.addKid(created); String altTextNode = attributes.getValue(ExtensionElementMapping.URI, "alt-text"); @@ -104,7 +104,7 @@ class PDFStructureTreeBuilder implements if ("#PCDATA".equals(name)) { created = new PDFStructElem.Placeholder(parent, name); } else { - created = pdfFactory.makeStructureElement( + created = pdfFactory.getDocument().makeStructureElement( FOToPDFRoleMap.mapFormattingObject(name, role, parent, eventBroadcaster), parent); } Propchange: xmlgraphics/fop/trunk/src/java/org/apache/fop/util/ColorExt.java ------------------------------------------------------------------------------ Merged /xmlgraphics/fop/branches/Temp_PDF_ObjectStreams/src/java/org/apache/fop/util/ColorExt.java:r1303414-1305418 Modified: xmlgraphics/fop/trunk/status.xml URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/status.xml?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/status.xml (original) +++ xmlgraphics/fop/trunk/status.xml Mon Mar 26 17:39:20 2012 @@ -62,6 +62,11 @@ documents. Example: the fix of marks layering will be such a case when it's done. --> <release version="FOP Trunk" date="TBD"> + <action context="Code" dev="PH,VH" type="add"> + Added support for PDF Object Streams. When accessibility is enabled and PDF version 1.5 + selected, the structure tree will be stored in object streams in order to reduce the size of + the final PDF. + </action> <action context="Code" dev="VH" type="add" fixes-bug="46962" due-to="Alexios Giotis"> Fixed deadlock in PropertyCache. </action> Modified: xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/AbstractPDFStreamTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/AbstractPDFStreamTestCase.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/AbstractPDFStreamTestCase.java (original) +++ xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/AbstractPDFStreamTestCase.java Mon Mar 26 17:39:20 2012 @@ -48,10 +48,10 @@ public class AbstractPDFStreamTestCase e encodedBytes[i++] = (byte) (in & 0xff); } } - private String startStream = "1 0 obj\n" + - "<< /Length 5 0 R /Filter /FlateDecode >>\n" + - "stream\n"; - private String endStream = "endstream\nendobj\n"; + private String startStream = "<< /Length 5 0 R /Filter /FlateDecode >>\n" + + "stream\n"; + + private String endStream = "endstream"; @Before public void setUp() { Modified: xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFEncryptionJCETestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFEncryptionJCETestCase.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFEncryptionJCETestCase.java (original) +++ xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFEncryptionJCETestCase.java Mon Mar 26 17:39:20 2012 @@ -223,8 +223,6 @@ public class PDFEncryptionJCETestCase { final String digits = "\\d+"; final String hexDigits = "\\p{XDigit}+"; - dictionary.mustContain("1" + whitespace + "0" + whitespace + "obj"); - dictionary.mustContain("/Filter" + whitespace + "/Standard\\b"); dictionary.mustContain("/V" + whitespace + "(" + digits + ")") Modified: xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFLibraryTestSuite.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFLibraryTestSuite.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFLibraryTestSuite.java (original) +++ xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFLibraryTestSuite.java Mon Mar 26 17:39:20 2012 @@ -40,7 +40,9 @@ import org.junit.runners.Suite.SuiteClas PDFNullTestCase.class, PDFNumsArrayTestCase.class, PDFRectangleTestCase.class, - PDFReferenceTestCase.class + PDFReferenceTestCase.class, + VersionTestCase.class, + VersionControllerTestCase.class }) public class PDFLibraryTestSuite { } Modified: xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java?rev=1305467&r1=1305466&r2=1305467&view=diff ============================================================================== --- xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java (original) +++ xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java Mon Mar 26 17:39:20 2012 @@ -40,10 +40,6 @@ public class PDFObjectTestCase { protected final PDFObject parent = new DummyPDFObject(); /** The test subject */ protected PDFObject pdfObjectUnderTest; - /** The string to begin describing the object <code>"1 0 obj\n"</code> */ - protected final String beginObj = "1 0 obj\n"; - /** The string to end describing the object <code>"\nendobj\n"</code> */ - protected final String endObj = "\nendobj\n"; private static class DummyPDFObject extends PDFObject { @@ -195,8 +191,7 @@ public class PDFObjectTestCase { outStream.reset(); object.setObjectNumber(1); // Test the length of the output string is returned correctly. - String string = beginObj + expectedString + endObj; - assertEquals(string.length(), object.output(outStream)); - assertEquals(string, outStream.toString()); + assertEquals(expectedString.length(), object.output(outStream)); + assertEquals(expectedString, outStream.toString()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
