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]

Reply via email to