工具类-PDF转成图片

pdf转成图片工具类

  • 引入依赖
   <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.20</version>
    </dependency>
  • 工具类代码
public class PdfToImageUtil {
    /**
     * dpi越大转换后越清晰,相对转换速度越慢
     */
    private static final Integer DPI = 100;

    /**
     * 转换后的图片类型
     */
    private static final String IMG_TYPE = "png";

    /**
     * PDF转图片
     *
     * @param fileContent PDF文件的二进制流
     * @return 图片文件的二进制流
     */
    public static PdfInfo pdfToImage(byte[] fileContent) throws IOException {
        List<byte[]> result = new ArrayList<>();
        int pageCount = 0;
        try (PDDocument document = PDDocument.load(fileContent)) {
            PDFRenderer renderer = new PDFRenderer(document);
            pageCount = document.getNumberOfPages();
            for (int i = 0; i < pageCount; ++i) {
                BufferedImage bufferedImage = renderer.renderImageWithDPI(i, DPI);
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                ImageIO.write(bufferedImage, IMG_TYPE, out);
                result.add(out.toByteArray());
            }
        }
        return new PdfInfo(result, pageCount);
    }

    public static int getPageNum(byte[] bytes){
        try {
            PdfReader reader = new PdfReader(bytes);
            return reader.getNumberOfPages();
        } catch (IOException e) {
            log.error("解析pdf异常:{}", e);
        }
        return 0;
    }
}

posted @   PerfectLi  阅读(302)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示