Author: lehmi
Date: Thu Dec 18 07:12:46 2025
New Revision: 1930698
Log:
PDFBOX-6036: rename test to reference the correct ticket, add test for writing
without compression
Modified:
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSWriterTest.java
Modified:
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSWriterTest.java
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSWriterTest.java
Thu Dec 18 06:49:09 2025 (r1930697)
+++
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSWriterTest.java
Thu Dec 18 07:12:46 2025 (r1930698)
@@ -153,8 +153,14 @@ class COSWriterTest
}
}
+ /**
+ * Test if overlapping object numbers are eliminated when merging pdfs.
+ *
+ * @throws IOException
+ * @throws URISyntaxException
+ */
@Test
- void testPDFBox5752() throws IOException, URISyntaxException
+ void testPDFBox6036() throws IOException, URISyntaxException
{
URL emptyURL = new URI(
"https://issues.apache.org/jira/secure/attachment/13066015/empty.pdf").toURL();
@@ -167,21 +173,40 @@ class COSWriterTest
emptyPDF = IOUtils.toByteArray(isEmpty);
roboPDF = IOUtils.toByteArray(isRobo);
}
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ // write merge result using compressed streams
+ ByteArrayOutputStream baosCompressed = new ByteArrayOutputStream();
try (PDDocument targetDoc = Loader.loadPDF(emptyPDF);
PDDocument doc2 = Loader.loadPDF(roboPDF))
{
PDPage sourcePage = doc2.getPage(0);
targetDoc.importPage(sourcePage);
- targetDoc.save(baos);
+ targetDoc.save(baosCompressed);
}
- try (PDDocument targetDoc = Loader.loadPDF(baos.toByteArray()))
+ try (PDDocument targetDoc =
Loader.loadPDF(baosCompressed.toByteArray()))
{
assertNotNull(targetDoc.getDocumentCatalog().getStructureTreeRoot());
PDResources res = targetDoc.getPage(1).getResources();
assertEquals("BCDEEE+Roboto-Regular",
res.getFont(COSName.getPDFName("F1")).getName());
assertEquals("BCDFEE+Roboto-Regular",
res.getFont(COSName.getPDFName("F2")).getName());
}
+
+ // write merge result without compressed streams
+ ByteArrayOutputStream baosUncompressed = new ByteArrayOutputStream();
+ try (PDDocument targetDoc = Loader.loadPDF(emptyPDF);
+ PDDocument doc2 = Loader.loadPDF(roboPDF))
+ {
+ PDPage sourcePage = doc2.getPage(0);
+ targetDoc.importPage(sourcePage);
+ targetDoc.save(baosUncompressed,
CompressParameters.NO_COMPRESSION);
+ }
+ try (PDDocument targetDoc =
Loader.loadPDF(baosUncompressed.toByteArray()))
+ {
+
assertNotNull(targetDoc.getDocumentCatalog().getStructureTreeRoot());
+ PDResources res = targetDoc.getPage(1).getResources();
+ assertEquals("BCDEEE+Roboto-Regular",
res.getFont(COSName.getPDFName("F1")).getName());
+ assertEquals("BCDFEE+Roboto-Regular",
res.getFont(COSName.getPDFName("F2")).getName());
+ }
+
}
}