@@ -44,6 +44,8 @@ This file is part of the iText (R) project.
44
44
45
45
import com .itextpdf .io .image .ImageDataFactory ;
46
46
import com .itextpdf .io .source .DeflaterOutputStream ;
47
+ import com .itextpdf .kernel .font .PdfFontFactory ;
48
+ import com .itextpdf .kernel .pdf .canvas .PdfCanvas ;
47
49
import com .itextpdf .kernel .pdf .navigation .PdfDestination ;
48
50
import com .itextpdf .kernel .utils .CompareTool ;
49
51
import com .itextpdf .test .ExtendedITextTest ;
@@ -55,6 +57,7 @@ This file is part of the iText (R) project.
55
57
56
58
import java .io .ByteArrayOutputStream ;
57
59
import java .io .IOException ;
60
+ import java .nio .charset .StandardCharsets ;
58
61
59
62
import static org .junit .Assert .*;
60
63
@@ -303,6 +306,31 @@ public void testFreeReference() throws IOException, InterruptedException {
303
306
assertNull (new CompareTool ().compareByContent (destinationFolder + "freeReference.pdf" , sourceFolder + "cmp_freeReference.pdf" , destinationFolder , "diff_" ));
304
307
}
305
308
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
+
306
334
@ Test
307
335
public void checkAndResolveCircularReferences () throws IOException , InterruptedException {
308
336
PdfDocument pdfDocument = new PdfDocument (new PdfReader (sourceFolder + "datasheet.pdf" ), new PdfWriter (destinationFolder + "datasheet_mode.pdf" ));
0 commit comments