svn commit: r1900953 - in /xmlgraphics/fop-pdf-images/trunk: src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java test/java/org/apache/fop/render/pdf/pdfbox/PDFClonerTestCase.java

[email protected] Mon, 16 May 2022 11:51:53 -0000
Newsgroups gmane.text.xml.fop.cvs
Message-ID <[email protected]>
Author: ssteiner
Date: Mon May 16 11:51:53 2022
New Revision: 1900953

URL: http://svn.apache.org/viewvc?rev=1900953&view=rev
Log:
FOP-3073: Preserve bytes when cloning string

Modified:
    xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java
    xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/pdfbox/PDFClonerTestCase.java

Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java?rev=1900953&r1=1900952&r2=1900953&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java Mon May 16 11:51:53 2022
@@ -165,7 +165,7 @@ public class PDFCloner {
             return cacheClonedObject(keyBase, new PDFString(bytes));
         } else {
             if (PDFString.isUSASCII(bytes)) {
-                return cacheClonedObject(keyBase, string.getString());
+                return cacheClonedObject(keyBase, new String(string.getBytes(), PDFDocument.ENCODING));
             } else {
                 return cacheClonedObject(keyBase, bytes);
             }

Modified: xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/pdfbox/PDFClonerTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/pdfbox/PDFClonerTestCase.java?rev=1900953&r1=1900952&r2=1900953&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/pdfbox/PDFClonerTestCase.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/pdfbox/PDFClonerTestCase.java Mon May 16 11:51:53 2022
@@ -18,7 +18,9 @@
 /* $Id$ */
 package org.apache.fop.render.pdf.pdfbox;
 
+import java.awt.geom.Rectangle2D;
 import java.io.IOException;
+import java.util.HashMap;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -28,6 +30,11 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSStream;
+import org.apache.pdfbox.cos.COSString;
+
+import org.apache.fop.pdf.PDFDocument;
+import org.apache.fop.pdf.PDFPage;
+import org.apache.fop.pdf.PDFResources;
 
 public class PDFClonerTestCase {
     @Test
@@ -46,4 +53,15 @@ public class PDFClonerTestCase {
         root.setItem(COSName.C, array);
         return root;
     }
+
+    @Test
+    public void testString() throws IOException {
+        COSString string = new COSString(new byte[]{(byte) 127, (byte) 127});
+        PDFDocument doc = new PDFDocument("");
+        Rectangle2D r = new Rectangle2D.Double();
+        PDFPage page = new PDFPage(new PDFResources(doc), 0, r, r, r, r);
+        PDFBoxAdapter adapter = new PDFBoxAdapter(page, new HashMap<>(), null, new HashMap<>());
+        String cloned = (String) new PDFCloner(adapter).cloneForNewDocument(string);
+        Assert.assertArrayEquals(cloned.getBytes(PDFDocument.ENCODING), string.getBytes());
+    }
 }