OpenPDF shrink PDF

195 Views Asked by At

Setup: Creating OpenPDF from multipage TIFF with adding each TIFF page as com.lowagie.text.Image

...
com.lowagie.text.Document pdfDocument = new com.lowagie.text.Document();
com.lowagie.text.Image image01 = getPage(pageNumber);
document.add(image01);
...

The Problem: The file size

Question: How to reduce file size?

1

There are 1 best solutions below

0
hiaclibe On

Hope that helps someone out there. I used following

com.lowagie.text.pdf.PdfStamper.setFullCompression();
com.lowagie.text.pdf.PdfStamper.getWriter().setFullCompression();
com.lowagie.text.pdf.PdfWriter.setFullCompression();
com.lowagie.text.pdf.PdfWriter.setCompressionLevel(com.lowagie.text.pdf.PdfStream.BEST_COMPRESSION);

And instead using

Image image = Image.getInstance(((java.io.File) singlePageTiff).getAbsolutePath());
//or
Image image = Image.getInstance((java.awt.image.BufferedImage) pageImage, null, forceBlackAndWhite);

I used a compressed Image

java.awt.image.BufferedImage pageImage = ...
int width = pageImage.getWidth(); 
int height  = pageImage.getHeight();
boolean reverseBits = false;
int typeCCITT = com.lowagie.text.Image.CCITTG4; 
//see com.lowagie.text.Image.CCITT_BLACKIS1; 
int parameters = 0;          
byte[] data = ((java.awt.image.DataBufferByte) pageImage.getRaster().getDataBuffer()).getData();
Objects.requireNonNull(data);
int[] transparency = null;
byte[] g4 = com.lowagie.text.pdf.codec.CCITTG4Encoder.compress(data, width, height);
com.lowagie.text.Image image = com.lowagie.text.Image.getInstance(width, height, reverseBits, typeCCITT, parameters, g4, transparency);