HA

使用pdfbox将文字pdf转换为图片pdf

添加pdfbox

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>3.0.5</version>
</dependency>
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>fontbox</artifactId>
    <version>3.0.5</version>
</dependency>

使用pdfbox将文字pdf转换为图片pdf

String inputPath = "input.pdf"; // 输入 PDF
String outputPath = "output_image_pdf.pdf"; // 输出图片 PDF
float dpi = 300; // 渲染分辨率

try (PDDocument document = Loader.loadPDF(new File(inputPath))) {
    PDFRenderer pdfRenderer = new PDFRenderer(document);
    PDDocument imagePdf = new PDDocument();

    for (int pageIndex = 0; pageIndex < document.getNumberOfPages(); pageIndex++) {
        // 1. 渲染为 BufferedImage
        BufferedImage bim = pdfRenderer.renderImageWithDPI(pageIndex, dpi);

        // 2. 新建 PDF 页面,尺寸与原图一致
        PDPage page = new PDPage(new PDRectangle(bim.getWidth(), bim.getHeight()));
        imagePdf.addPage(page);

        // 3. 把图片画到新 PDF 页面
        try (PDPageContentStream contentStream = new PDPageContentStream(imagePdf, page)) {
            contentStream.drawImage(
                    LosslessFactory.createFromImage(imagePdf, bim),
                    0, 0, bim.getWidth(), bim.getHeight()
            );
        }
    }

    imagePdf.save(outputPath);
    imagePdf.close();
} catch (IOException e) {
    throw new RuntimeException(e);
}

System.out.println("转换完成,输出文件:" + outputPath);