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.