pdfbox pdf转图片,图片长宽大小与pdf保持一致

本文解析了如何使用Apache PDFBox库将PDF转换为图片,重点在于确定如何设置scale参数以确保图片与PDF页面的长宽比例一致。通过源码分析,发现scale值应为PDF pt到px的转换比例1.333333...,并给出了示例代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

需要将pdf转图片,用作预览,图片需要与pdf页的长宽大小保持一致。

依赖

org.apache.pdfbox:pdfbox:2.0.26

分析过程

pdfbox源码中,设置图片长宽大小的方法如下:

public BufferedImage PDFRenderer.renderImage(int pageIndex, float scale);

我们要分析的是scale参数设置为多少才能保证图片的长宽大小与pdf一致。
分析源码可以看到,pdf的长宽单位是pt, 图片的长宽单位是px,如下图:
在这里插入图片描述
因为pt与px的关系是 pt = px * 0.75,所以scale = pt / 0.75,也就是 scale = pt * 1.333333...

示例代码

public static List<File> pdfToImagePath(String filePath, String fileName) {
    List<File> previewFileList = new ArrayList<>();
    try {
      PDDocument doc = PDDocument.load(new File(filePath, fileName));
      PDFRenderer renderer = new PDFRenderer(doc);
      int pageCount = doc.getNumberOfPages();
      for (int i = 0; i < pageCount; i++) {
        // 1.3333f保持pdf页的长和宽
        BufferedImage image = renderer.renderImage(i, 1.3333f);
        File imgFile =
            new File(
                filePath + "/" + fileName.substring(0, fileName.indexOf(".")) + "_" + i + ".jpg");
        ImageIO.write(image, "PNG", imgFile);
        previewFileList.add(imgFile);
      }
    } catch (IOException e) {
      log.warn("pdf 转图片失败", e);
    }
    return previewFileList;
  }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打不死的小闫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值