Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reduce PDF file size programmatically in Java?

Tags:

java

pdf

itext

Document document = new Document(reader.getPageSizeWithRotation(1));
PdfCopy writer = new PdfCopy(document, new FileOutputStream(outFile));
document.open();
PdfImportedPage page = writer.getImportedPage(reader, ++i);
writer.setFullCompression();
writer.addPage(page);
document.close();
writer.close();

I am using iText to split and merger the PDF, I need your help to reduce (compress) the output PDF size programmatically. Please let me know the steps to achieve the same.

like image 388
jcrshankar Avatar asked Jan 16 '13 09:01

jcrshankar


Video Answer


2 Answers

use iText

PdfReader reader = new PdfReader(new FileInputStream("input.pdf"));
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf"));
int total = reader.getNumberOfPages() + 1;
for ( int i=1; i<total; i++) {
   reader.setPageContent(i + 1, reader.getPageContent(i + 1));
}
stamper.setFullCompression();
stamper.close();
like image 173
Mauro Braggio Avatar answered Sep 23 '22 18:09

Mauro Braggio


Also change the PdfCopy to PdfSmartCopy. It will eliminate duplicate streams which have the same hash (md5).

like image 32
VahidN Avatar answered Sep 20 '22 18:09

VahidN