PDF 是最流行的文件格式之一,几乎每个企业和行业都在使用它。 PDF 文档可以包含多种内容,包括格式化文本、图像、注释等。通常需要从 PDF 文件中提取内容。在本文的此处,我们将讨论如何使用 Java 以编程方式从 PDF 文档中提取图像。

从 PDF 文件中提取图像的 Java API

GroupDocs 为 Java 开发人员提供了 GroupDocs.Parser,用于从 PDF 文件中提取图像。除了 PDF 文件外,相同的 API 还支持从各种其他文档格式(如文字处理文档、电子表格、电子书、演示文稿、电子邮件、ZIP 存档和许多其他文档格式 中解析和提取图像.

下载或配置

您可以从 下载部分 下载 JAR 文件,或者只获取基于 maven 的 Java 应用程序的 pom.xml 的存储库和依赖项配置。

<repository>
    <id>groupdocs-artifacts-repository</id>
    <name>GroupDocs Artifacts Repository</name>
    <url>https://releases.groupdocs.com/java/repo/</url>
</repository>
<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-parser</artifactId>
    <version>22.11</version>
</dependency>

在 Java 中从 PDF 文档中提取图像的步骤

以下分步说明如何使用几行 Java 代码从 PDF 文件中获取图像。

  1. 创建一个新项目。
  2. 如上所述下载 API 或更新到最新的 API 版本。
  3. 导入以下类:
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageImageArea;
  1. 使用 Parser 类加载 PDF 文档。
// 加载PDF文件
try (Parser parser = new Parser("path/document.pdf")) {
    // 图像提取代码在这里。
}
  1. 使用 getImages 方法从文档中提取所有图像。
// 从加载的文件中提取图像
Iterable<PageImageArea> images = parser.getImages();
  1. 访问集合中的每个图像并使用 save 方法保存它。
// 使用扩展名保存文件
for (PageImageArea image : images)  {
    image.save(String.format("path/image_%d" + image.getFileType().getExtension(), imageCounter++));
}

图像可以保存为各种不同的图像格式,如 PNG、JPG、BMP、WebP 或 GIF。

Java完整代码——从PDF中提取图像

这是完整的源代码,它允许您从提供的 PDF 文件中获取所有图像。

// 用Java从PDF文件中提取图像
try (Parser parser = new Parser("path/document.pdf")) 
{
    // 获取图像
    Iterable<PageImageArea> images = parser.getImages();
    
    // 检查是否支持图像提取
    if (images == null) 
    {
        System.out.println("Images extraction isn't supported");
        return;
    }
    
    int imageCounter = 0;
    // 迭代提取的图像
    for (PageImageArea image : images) 
    {
        image.save(String.format("path/image_%d" + image.getFileType().getExtension(), imageCounter++));
    }
}

结果

示例 PDF 文档

具有要提取的图像的 PDF 文档。

提取图像

从 PDF 中提取图像。

如果您需要,还可以在另一篇文章中解释如何用 Java 从 PDF 文档的任何特定页面中提取图像

阅读更多

您可以使用其 文档 探索更多关于数据提取 Java API 的信息。您可以通过我们的 论坛 与我们分享您的疑问。

也可以看看