import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
public class ShrinkPDF {
public ShrinkPDF() {
}
public static void main(String[] args) {
try {
PDDocument pdDocument = new PDDocument();
PDDocument oDocument = PDDocument.load(new File("docs/in.pdf"));
PDFRenderer pdfRenderer = new PDFRenderer(oDocument);
int numberOfPages = oDocument.getNumberOfPages();
PDPage page = null;
for (int i = 0; i < numberOfPages; i++) {
page = new PDPage(PDRectangle.LETTER);
BufferedImage bim = pdfRenderer.renderImageWithDPI(i, 300, ImageType.RGB);
PDImageXObject pdImage = JPEGFactory.createFromImage(pdDocument, bim);
PDPageContentStream contentStream = new PDPageContentStream(pdDocument, page);
float newHeight = PDRectangle.LETTER.getHeight();
float newWidth = PDRectangle.LETTER.getWidth();
contentStream.drawImage(pdImage, 0, 0, newWidth, newHeight);
contentStream.close();
pdDocument.addPage(page);
}
pdDocument.save("docs/out.pdf");
pdDocument.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
All one can think and do in a short time is to think what one already knows and to do as one has always done!
Shrink a PDF document in size - Apache PDFBox example
In this example we are taking a large PDF document, then reducing the size by simply converting each page to an image and then adding them back as pages to generate a new PDF document. This is helpful when you need to send them to a printer with specific page size.
No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.