Skip to content

Commit 9561a1a

Browse files
author
glenn.volckaert
committed
Exclude OCG dictionaries from duplication verification
Add test case to verifie OCG copying behaviour DEVSIX-6093
1 parent b7e566d commit 9561a1a

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

kernel/src/main/java/com/itextpdf/kernel/pdf/PdfWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ protected PdfObject copyObject(PdfObject obj, PdfDocument documentTo, boolean al
285285
}
286286

287287
SerializedObjectContent serializedContent = null;
288-
if (properties.smartMode && tryToFindDuplicate && !checkTypeOfPdfDictionary(obj, PdfName.Page)) {
288+
if (properties.smartMode && tryToFindDuplicate && !checkTypeOfPdfDictionary(obj, PdfName.Page) && !checkTypeOfPdfDictionary(obj, PdfName.OCG)) {
289289
serializedContent = smartModeSerializer.serializeObject(obj);
290290
PdfIndirectReference objectRef = smartModeSerializer.getSavedSerializedObject(serializedContent);
291291
if (objectRef != null) {

kernel/src/test/java/com/itextpdf/kernel/utils/PdfMergerTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,27 @@ public void mergePdfDocumentsWithCopingOutlinesTest() throws IOException, Interr
519519
Assert.assertNull(new CompareTool().compareByContent(mergedDocument, cmpDocument, destinationFolder));
520520
}
521521

522+
@Test
523+
public void MergeWithSameNamedOCGTest() throws IOException, InterruptedException {
524+
String firstPdfDocument = sourceFolder + "sameNamdOCGSource.pdf";
525+
String secondPdfDocument = sourceFolder + "doc2.pdf";
526+
String cmpDocument = sourceFolder + "cmp_MergeWithSameNamedOCG.pdf";
527+
String mergedDocument = destinationFolder + "mergeWithSameNamedOCG.pdf";
528+
529+
try (PdfDocument documentA = new PdfDocument(new PdfReader(firstPdfDocument));
530+
PdfDocument documentB = new PdfDocument(new PdfReader(secondPdfDocument));
531+
PdfDocument mergedPdf = new PdfDocument(new PdfWriter(mergedDocument))) {
532+
mergedPdf.getWriter().setSmartMode(true);
533+
PdfMerger merger = new PdfMerger(mergedPdf, false, true);
534+
merger.merge(documentA, 1, documentA.getNumberOfPages());
535+
merger.merge(documentB, 1, documentB.getNumberOfPages());
536+
537+
merger.close();
538+
}
539+
540+
Assert.assertNull(new CompareTool().compareByContent(mergedDocument, cmpDocument, destinationFolder));
541+
}
542+
522543
private void mergePdfs(List<File> sources, String destination) throws IOException {
523544
PdfDocument mergedDoc = new PdfDocument(new PdfWriter(destination));
524545
PdfMerger merger = new PdfMerger(mergedDoc);

0 commit comments

Comments
 (0)