FOP-2971: Update unique name inside patterns
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop-pdf-images/trunk@1881983 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java b/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java
index 81de3ee..7d48472 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java
@@ -191,7 +191,8 @@
}
OutputStream out = stream.getBufferOutputStream();
- if (originalStream.getItem(COSName.SUBTYPE) == COSName.FORM && adapter.uniqueName != null) {
+ if ((originalStream.getItem(COSName.TYPE) == COSName.PATTERN
+ || originalStream.getItem(COSName.SUBTYPE) == COSName.FORM) && adapter.uniqueName != null) {
PDFWriter writer = new PDFWriter(adapter.uniqueName, adapter.currentMCID);
try {
String newStream = writer.writeText(new PDStream(originalStream));
diff --git a/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java b/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
index 7b7c6fe..bbfcc13 100644
--- a/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
@@ -124,6 +124,7 @@
private static final String TYPE0TT = "test/resources/type0tt.pdf";
private static final String TYPE0CFF = "test/resources/type0cff.pdf";
private static final String ACCESSIBLERADIOBUTTONS = "test/resources/accessibleradiobuttons.pdf";
+ private static final String PATTERN = "test/resources/pattern.pdf";
private static PDFPage getPDFPage(PDFDocument doc) {
final Rectangle2D r = new Rectangle2D.Double();
@@ -673,13 +674,17 @@
}
@Test
- public void testRewriteOfForms() throws Exception {
+ public void testRewriteOfForms() throws IOException {
+ Assert.assertTrue(getPDFToPDF(ACCESSIBLERADIOBUTTONS).contains("/F15106079 12 Tf"));
+ }
+
+ private String getPDFToPDF(String pdf) throws IOException {
PDFDocument pdfdoc = new PDFDocument("");
PDFPage pdfpage = getPDFPage(pdfdoc);
pdfpage.setDocument(pdfdoc);
pdfpage.setObjectNumber(1);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap(), new HashMap<Integer, PDFArray>());
- PDDocument doc = PDDocument.load(new File(ACCESSIBLERADIOBUTTONS));
+ PDDocument doc = PDDocument.load(new File(pdf));
PDPage page = doc.getPage(0);
AffineTransform at = new AffineTransform();
Rectangle r = new Rectangle(0, 1650, 842000, 595000);
@@ -691,8 +696,13 @@
filterMap.put("default", filterList);
pdfdoc.setFilterMap(filterMap);
pdfdoc.output(os);
- Assert.assertTrue(os.toString("UTF-8").contains("/F15106079 12 Tf"));
doc.close();
+ return os.toString("UTF-8");
+ }
+
+ @Test
+ public void testRewriteOfPatternForms() throws IOException {
+ Assert.assertTrue(getPDFToPDF(PATTERN).contains("/R1106079 gs\n1 1 m"));
}
@Test
diff --git a/test/resources/pattern.pdf b/test/resources/pattern.pdf
new file mode 100644
index 0000000..474fb83
--- /dev/null
+++ b/test/resources/pattern.pdf
Binary files differ