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