Skip to content

Commit 2ab73bc

Browse files
Add new test for append mode on documents with full compression
DEVSIX-1428
1 parent f42396e commit 2ab73bc

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ This file is part of the iText (R) project.
4444

4545
import com.itextpdf.io.image.ImageDataFactory;
4646
import com.itextpdf.io.source.DeflaterOutputStream;
47+
import com.itextpdf.kernel.font.PdfFontFactory;
48+
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
4749
import com.itextpdf.kernel.pdf.navigation.PdfDestination;
4850
import com.itextpdf.kernel.utils.CompareTool;
4951
import com.itextpdf.test.ExtendedITextTest;
@@ -55,6 +57,7 @@ This file is part of the iText (R) project.
5557

5658
import java.io.ByteArrayOutputStream;
5759
import java.io.IOException;
60+
import java.nio.charset.StandardCharsets;
5861

5962
import static org.junit.Assert.*;
6063

@@ -303,6 +306,31 @@ public void testFreeReference() throws IOException, InterruptedException {
303306
assertNull(new CompareTool().compareByContent(destinationFolder + "freeReference.pdf", sourceFolder + "cmp_freeReference.pdf", destinationFolder, "diff_"));
304307
}
305308

309+
@Test
310+
public void fullCompressionAppendMode() throws IOException, InterruptedException {
311+
PdfWriter writer = new PdfWriter(destinationFolder + "fullCompressionAppendMode.pdf",
312+
new WriterProperties()
313+
.setFullCompressionMode(true)
314+
.setCompressionLevel(CompressionConstants.NO_COMPRESSION));
315+
PdfDocument pdfDocument = new PdfDocument(new PdfReader(sourceFolder + "fullCompressionDoc.pdf"), writer,
316+
new StampingProperties().useAppendMode());
317+
318+
PdfPage page = pdfDocument.getPage(1);
319+
PdfStream contentStream = new PdfStream();
320+
String contentStr = new String(pdfDocument.getPage(1).getFirstContentStream().getBytes(), StandardCharsets.US_ASCII);
321+
contentStream.setData(contentStr.replace("/F1 16", "/F1 24").getBytes(StandardCharsets.US_ASCII));
322+
page.getPdfObject().put(PdfName.Contents, contentStream);
323+
page.setModified();
324+
325+
pdfDocument.close();
326+
327+
assertNull(new CompareTool().compareByContent(destinationFolder + "fullCompressionAppendMode.pdf", sourceFolder + "cmp_fullCompressionAppendMode.pdf", destinationFolder, "diff_"));
328+
329+
PdfDocument assertDoc = new PdfDocument(new PdfReader(destinationFolder + "fullCompressionAppendMode.pdf"));
330+
Assert.assertTrue(assertDoc.getPdfObject(9).isStream());
331+
Assert.assertEquals(1, ((PdfDictionary)assertDoc.getPdfObject(9)).getAsNumber(PdfName.N).intValue());
332+
}
333+
306334
@Test
307335
public void checkAndResolveCircularReferences() throws IOException, InterruptedException {
308336
PdfDocument pdfDocument = new PdfDocument(new PdfReader(sourceFolder + "datasheet.pdf"), new PdfWriter(destinationFolder + "datasheet_mode.pdf"));

0 commit comments

Comments
 (0)