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/10/09 08:57:23 UTC

svn commit: r1882340 - in /xmlgraphics/fop-pdf-images/trunk: src/java/org/apache/fop/render/pdf/pdfbox/ test/java/org/apache/fop/render/pdf/

Author: ssteiner
Date: Fri Oct  9 08:57:22 2020
New Revision: 1882340

URL: http://svn.apache.org/viewvc?rev=1882340&view=rev
Log:
FOP-2974: Handle space in COSName

Modified:
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/UniqueName.java
    xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java?rev=1882340&r1=1882339&r2=1882340&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java Fri Oct  9 08:57:22 2020
@@ -101,7 +101,7 @@ public class MergeFontsPDFWriter extends
                     internalName = getNewFont(fontData, fontInfo, fontsToRemove.values());
                 }
                 if (fontData == null || internalName == null) {
-                    s.append("/" + key.getName(cn));
+                    key.writeName(s, cn);
                     if (op.getName().equals("Tf")) {
                         font = null;
                         oldFont = null;

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java?rev=1882340&r1=1882339&r2=1882340&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java Fri Oct  9 08:57:22 2020
@@ -104,9 +104,9 @@ public class PDFWriter {
             }
         } else if (c instanceof COSName) {
             COSName cn = (COSName)c;
-            String name = key.getName(cn);
-            s.append("/" + name);
+            key.writeName(s, cn);
             s.append(" ");
+            String name = key.getName(cn);
             if (!name.equals(cn.getName())) {
                 keyUsed = true;
             }

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java?rev=1882340&r1=1882339&r2=1882340&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java Fri Oct  9 08:57:22 2020
@@ -240,7 +240,7 @@ public class StructureTreeMerger {
         if (baseKid instanceof COSInteger) {
             COSInteger number = (COSInteger) baseKid;
             createKids(number, parentDict, parent, originatedFromTableRow);
-        } else {
+        } else if (baseKid instanceof COSDictionary) {
             COSDictionary unwrappedDict = (COSDictionary)baseKid;
             if (unwrappedDict.getDictionaryObject(COSName.S) == null) {
                 COSDictionary mcrDict = (COSDictionary)baseKid;
@@ -417,13 +417,15 @@ public class StructureTreeMerger {
         } else if (kid instanceof COSObject) {
             COSObject kidObject = (COSObject)kid;
             COSBase base = kidObject.getObject();
-            COSDictionary temp = (COSDictionary)base;
-            if (temp.getDictionaryObject(COSName.S) != null && temp.getItem(COSName.K) != null) {
+            if (base instanceof COSDictionary) {
+                COSDictionary temp = (COSDictionary) base;
+                if (temp.getDictionaryObject(COSName.S) != null && temp.getItem(COSName.K) != null) {
 
-                COSBase tempKids = temp.getItem(COSName.K);
-                findLeafKids(tempKids, kidObject);
-            } else {
-                findLeafKids(temp, parent);
+                    COSBase tempKids = temp.getItem(COSName.K);
+                    findLeafKids(tempKids, kidObject);
+                } else {
+                    findLeafKids(temp, parent);
+                }
             }
         } else if (kid instanceof COSDictionary) {
             COSDictionary kidDictionary = (COSDictionary)kid;

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/UniqueName.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/UniqueName.java?rev=1882340&r1=1882339&r2=1882340&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/UniqueName.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/UniqueName.java Fri Oct  9 08:57:22 2020
@@ -18,6 +18,8 @@
 /* $Id$ */
 package org.apache.fop.render.pdf.pdfbox;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -27,6 +29,8 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSObject;
 
+import org.apache.fop.pdf.PDFDocument;
+
 public class UniqueName {
     private String key;
     private List<COSName> resourceNames;
@@ -48,6 +52,16 @@ public class UniqueName {
         return cn.getName();
     }
 
+    protected void writeName(StringBuilder sb, COSName cn) throws IOException {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        cn.writePDF(bos);
+        String name = bos.toString(PDFDocument.ENCODING);
+        sb.append(name);
+        if (resourceNames.contains(cn)) {
+            sb.append(key);
+        }
+    }
+
     private List<COSName> getResourceNames(COSDictionary sourcePageResources) {
         List<COSName> resourceNames = new ArrayList<COSName>();
         for (COSBase e : sourcePageResources.getValues()) {

Modified: xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java?rev=1882340&r1=1882339&r2=1882340&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java Fri Oct  9 08:57:22 2020
@@ -27,6 +27,7 @@ import org.apache.pdfbox.pdmodel.PDDocum
 import org.apache.pdfbox.pdmodel.common.PDStream;
 
 import org.apache.fop.render.pdf.pdfbox.PDFWriter;
+import org.apache.fop.render.pdf.pdfbox.UniqueName;
 
 public class PDFWriterTestCase {
     @Test
@@ -79,4 +80,13 @@ public class PDFWriterTestCase {
         String out = pdfWriter.writeText(pdStream);
         Assert.assertEquals(out, text);
     }
+
+    @Test
+    public void testSpaceInName() throws IOException {
+        String text = "/a#20a a\n";
+        PDStream pdStream = new PDStream(new PDDocument(), new ByteArrayInputStream(text.getBytes("UTF-8")));
+        PDFWriter pdfWriter = new PDFWriter(new UniqueName("", null, true), 0);
+        String out = pdfWriter.writeText(pdStream);
+        Assert.assertEquals(out, text);
+    }
 }



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