pdf 2 pdf images convertion using java file.
/*
* MyPdfProject/
├── src/
│ └── MyPdfApp.java
├── lib/
│ ├── pdfbox-2.0.34.jar
│ ├── fontbox-2.0.34.jar
│ └── commons-logging-1.2.jar
*
* */
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.PDImageXObject;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PdfToImageToPdf {
public static void main(String[] args) {
String inputPdf = "C:\\Deviprasad\\PDP\\ThrithaSiddantamBooks\\telugu\\Pravakthalu-Yevaru.pdf";
String outputPdf = "C:\\Users\\04758W744\\Downloads\\Images_filename.pdf";
String imageDir = "C:\\Users\\04758W744\\Downloads\\pdf_images";
try {
// Step 1: Convert PDF to Images
PDDocument document = PDDocument.load(new File(inputPdf));
PDFRenderer pdfRenderer = new PDFRenderer(document);
File dir = new File(imageDir);
if (!dir.exists()) dir.mkdirs();
int pageCount = document.getNumberOfPages();
for (int page = 0; page < pageCount; ++page) {
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 200);
File imageFile = new File(imageDir + "/page_" + (page + 1) + ".jpg");
ImageIO.write(bim, "jpg", imageFile);
}
document.close();
System.out.println("Converted PDF to " + pageCount + " image(s)");
// Step 2: Convert Images back to PDF
PDDocument outPdf = new PDDocument();
for (int i = 1; i <= pageCount; i++) {
PDPage page = new PDPage(PDRectangle.A4);
outPdf.addPage(page);
PDImageXObject pdImage = PDImageXObject.createFromFile(imageDir + "/page_" + i + ".jpg", outPdf);
PDPageContentStream contents = new PDPageContentStream(outPdf, page);
contents.drawImage(pdImage, 0, 0, page.getMediaBox().getWidth(), page.getMediaBox().getHeight());
contents.close();
}
outPdf.save(outputPdf);
outPdf.close();
System.out.println("Saved new PDF: " + outputPdf);
} catch (IOException e) {
e.printStackTrace();
}
}
}