Link
Skip to main content

PDF 转 BufferedImage

将 PDF 转换为 BufferedImage 的简单示例

JPedal 可轻松地将单个 PDF 文件或包含多个 PDF 文件的目录中的页面转换为 Java 的 BufferedImage 对象。这要用到 JPedal 的 ConvertPagesToImages 类。

示例代码 - 使用文件路径将 PDF 文件转换为图像

ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
//convert.setPassword("password"); //如果需要密码
try {
    if (convert.openPDFFile()) {
        int pageCount = convert.getPageCount();
        for (int page = 1; page <= pageCount; page++) {
            BufferedImage image = convert.getPageAsImage(page);
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}
convert.closePDFfile(); 

示例代码 - 在内存中转换 PDF 文件

// 禁用所有文件缓存以减少内存使用
PdfFileReader.alwaysCacheInMemory = -1;
// bytes 是一个包含 PDF 文件数据的 byte[] 数组
ConvertPagesToImages convert = new ConvertPagesToImages(bytes);
// convert.setPassword("password"); //如果需要密码
try {
    if (convert.openPDFFile()) {
        int pageCount = convert.getPageCount();
        for (int page = 1; page <= pageCount; page++) {
            BufferedImage image = convert.getPageAsImage(page);
        }
    }
} catch (PdfException e) {
    e.printStackTrace();
}
convert.closePDFfile();

将 PDF 转换为 BufferedImage 的可定制示例

此示例支持图像放大处理,或者说 ConvertPagesToHiResImages 类提供了许多额外的选项

示例代码

ConvertPagesToHiResImages convert = new ConvertPagesToHiResImages("inputFile.pdf");
//convert.setPassword("password");
boolean isBackgroundTransparent = false;
HashMap<Integer, Object> options = new HashMap<>();
//options.put(JPedalSettings.EXTRACT_AT_BEST_QUALITY_MAXSCALING, 10); // 不要将图像缩放超过指定的倍数
//options.put(JPedalSettings.EXTRACT_AT_PAGE_SIZE, new String[]{Integer.toString(2000), Integer.toString(3000)});// 按指定尺寸提取页面(保持纵横比,尽可能做到最佳适配)
//options.put(JPedalSettings.ALLOW_PAGES_SMALLER_THAN_PAGE_SIZE, Boolean.TRUE); // 允许提取的页面小于原始页面大小  
// 完整的设置列表可以在此处找到:https://javadoc.idrsolutions.com/org/jpedal/constants/JPedalSettings.html
try {
    if (convert.openPDFFile()) {
        int pageCount = convert.getPageCount();
        for (int page = 1; page <= pageCount; page++) {
            BufferedImage image = convert.getPageAsHiResImage(page, isBackgroundTransparent, options);
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}
convert.closePDFfile();

为什么选择 JPedal?

  • 定期更新的商业库,提供全面支持且无第三方依赖项。
  • 处理 PDF 文件的速度比其他 Java PDF 库快达 3 倍。
  • 为原始设备制造商(OEM)用户提供简单的许可选项和源代码访问权限。

免费试用


Customer Downloads

Select Download