0
点赞
收藏
分享

微信扫一扫

通过Apache PDFBox将pdf全部转换为图片与合并pdf

時小白 2022-03-16 阅读 143

Apache PDFBox 库是一个开源、用于操作 PDF 文档的 Java 工具库。PDFBox 允许创建新的 PDF 文档、操作现有文档,以及从文档中提取内容。

获取 Apache PDFBox 下载地址,目前版本 2.0.25,核心 jar 是 pdfbox-2.0.25.jar,其他还有几个 jar 可以根据需要进行导入。

这里 jar包下载与源码学习可以下载全部的 jar 和一些命令行工具,下载 pdfbox-2.0.25-src.zip 源码可以看到文件夹 examples 里面有不少例子进行了示范。

pdf合并

package pdfUtity;

import org.apache.pdfbox.multipdf.PDFMergerUtility;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

//import org.apache.pdfbox.util.PDFMergerUtility;


public class pdfMerge {
    private static String[] getPdfs(String fileAddress) throws IOException {
        File file = new File(fileAddress);
        String[] pdfs;

        if (file.isDirectory()) {
            pdfs = file.list();
            return pdfs;
        } else {
            throw new IOException("输入的路径有问题");
        }
    }

    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        PDFMergerUtility mergePdf = new PDFMergerUtility();
        System.out.println("请输入要合并的PDF文件所在的文件夹路径");
        String fileAddress = in.nextLine();

        System.out.println("你输入的路径是:" + fileAddress);
        String destinationFileName = "javaweb2020.pdf";

        String[] pdfs = getPdfs(fileAddress);
        for (int i = 0; i < pdfs.length; i++)
            mergePdf.addSource(fileAddress + File.separator + pdfs[i]);
        mergePdf.setDestinationFileName(destinationFileName);
        System.out.println("合并比较费时间,请等待个几分钟吧!");
        mergePdf.mergeDocuments();
        System.out.print("合并完成");
    }

}
	
	
	



pdf转换为图片

package pdfUtity;/*
 * 读取 pdf,将其中的某一页另存为 png 图片
 */
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;

public class PDFSavePNG
{

    public static void main(String[] args)
    {
        try
        {
            // 打开来源 pdf
            PDDocument pdfDocument = PDDocument.load(new File("d://desktopfile//pdfs//1.pdf"));
            PDFRenderer pdfRenderer = new PDFRenderer(pdfDocument);

            for(int pageNumber=0;pageNumber<pdfDocument.getNumberOfPages();pageNumber++){

            // 提取的页码
//            int pageNumber = 0;
            // 以300 dpi 读取存入 BufferedImage 对象
            int dpi = 300;
            BufferedImage buffImage = pdfRenderer.renderImageWithDPI(pageNumber, dpi, ImageType.RGB);
            // 将 BufferedImage 写入到 png
            ImageIOUtil.writeImage(buffImage, "d://desktopfile//pdfPhotos//"+pageNumber+".png", dpi);

            // 关闭文档
            }
            pdfDocument.close();
        }
        catch (InvalidPasswordException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

    }

}

在这里插入图片描述

举报

相关推荐

0 条评论