使用 Node.js 从 PDF 文件中提取图像

PDF 文档按原样保留包括图像和文本在内的内容。在某些情况下,我们可能需要从 PDF acrobat 文件中提取图像以重新使用它们。我们可以在云端以编程方式轻松提取嵌入 PDF 文档的特定页面中的所有图像或图像。在本文中,我们将学习如何在 Node.js 中使用 REST API 从 PDF 文件中提取图像。

在本文中从 pdf 中提取照片应涵盖以下主题:

图像提取器 REST API 和 Node.js SDK

为了从 PDF 文档中提取图像,我们将使用 GroupDocs.Parser Cloud 的 Node.js SDK API。它允许通过模板从所有流行文档格式 中提取文本、图像和数据解析。请在控制台中使用以下命令安装它:

npm install groupdocs-parser-cloud

在执行上述步骤之前,请从仪表板获取您的客户端 ID 和密码。获得 ID 和密码后,添加如下所示的代码:

// 此代码示例演示如何在代码中添加您的客户端 ID 和密码。
global.clientId = '659fe7da-715b-4744-a0f7-cf469a392b73';
global.clientSecret = 'b377c36cfa28fa69960ebac6b6e36421';
global.myStorage = "";

const configuration = new groupdocs_parser_cloud.Configuration(clientId, clientSecret);
configuration.apiBaseUrl = "https://api.groupdocs.cloud";

在 Node.js 中使用 REST API 从 PDF 中提取图像

我们可以按照下面提到的简单步骤从 PDF 文档中提取图像:

上传文件

首先,我们将使用下面给出的代码示例将包含图像的 PDF 文档上传到云端:

// 此代码示例演示如何在 node.js 中将 PDF 上传到云端 
// 构造FileApi
let fileApi = groupdocs_parser_cloud.FileApi.fromConfig(configuration);

// 输入文件路径
let resourcesFolder = 'C:\\Files\\Parser\\sample.pdf';
fs.readFile(resourcesFolder, (err, fileStream) => {
  // 上传文件请求
  let request = new groupdocs_parser_cloud.UploadFileRequest("sample.pdf", fileStream, myStorage);
  // 上传文件
  fileApi.uploadFile(request);
});

因此,上传的 PDF 文件将在云端仪表板的 文件部分 中可用。此文件可用于从 pdf 中提取图像。

从 Node.js 中的 PDF 文件中提取所有图像

现在,我们将按照以下步骤以编程方式从上传的 PDF 文件中提取所有图像:

  • 首先,创建一个 ParseApi 实例。
  • 接下来,提供上传的 PDF 文件路径。
  • 然后,定义 ImageOptions 并分配文件。
  • 之后,创建带有 ImageOptions 作为参数的 ImagesRequest。
  • 最后,通过调用 images() 方法提取图像。

以下代码示例展示了如何使用 Node.js 中的 REST API 从 PDF 文件中提取所有图像。

// 此代码示例演示了如何在 Node.js 中从 PDF 中提取所有图像。
//接口初始化
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);

// 输入文件路径
let fileInfo = new groupdocs_parser_cloud.FileInfo();
fileInfo.filePath = "sample.pdf";

// 定义图像选项
let options = new groupdocs_parser_cloud.ImagesOptions();
options.fileInfo = fileInfo;

// 图片请求
let request = new groupdocs_parser_cloud.ImagesRequest(options);

// 提取图像
let result = await parseApi.images(request);

// 显示结果
let images = result.images;
images.forEach(image => {
  console.log("Image path in storage: " + image.path);
  console.log("Download url: " + image.downloadUrl);
  console.log("Image format: " + image.fileFormat + ". Page index: " + image.pageIndex);
});
在 Node.js 中使用 REST API 从 PDF 中提取图像

在 Node.js 中使用 REST API 从 PDF 中提取图像

下载提取的图像

上面的代码示例会将提取的图像保存在云端。我们可以使用下面给出的代码示例下载这些图像:

// 此代码示例演示如何使用 Node.js 从云端下载图像
// 构建必要的 api 实例
var folderApi = groupdocs_parser_cloud.FolderApi.fromConfig(configuration);
var fileApi = groupdocs_parser_cloud.FileApi.fromConfig(configuration);

// 获取文件列表请求
var filesListRequest = new groupdocs_parser_cloud.GetFilesListRequest("parser/images/sample_pdf/", myStorage);

// 获取文件列表
var filesList = await folderApi.getFilesList(filesListRequest);

for (var count = 0; count < filesList.value.length; count++) {
  // 下载文件请求
  let request = new groupdocs_parser_cloud.DownloadFileRequest(filesList.value[count].path, myStorage);

  // 下载文件
  let response = await fileApi.downloadFile(request);

  // 将文件保存到磁盘上的文件夹
  fs.writeFile("C:\\Files\\parser\\images\\" + filesList.value[count].name, response, "binary", function (err) { });
  console.log(response);
}

这是如何从 pdf 文件导出图像,然后从云端下载它。

在 Node.js 中按页码从 PDF 文档保存图像

我们可以按照下面给出的步骤从 PDF 特定页面而不是整个文档导出图像。

  • 首先,创建一个 ParseApi 实例。
  • 接下来,提供上传的 PDF 文件路径。
  • 然后,定义 ImageOptions 并分配文件。
  • 设置起始页码和从中提取图像的总页数。
  • 之后,创建带有 ImageOptions 作为参数的 ImagesRequest。
  • 最后,通过调用 images() 方法提取图像。

以下代码示例显示了如何使用 Node.js 中的 REST API 从 PDF 文档中按页码从 pdf 文件中提取图片。请按照前面提到的步骤下载提取的图像。

// 此代码示例演示了如何在 Node.js 中从 PDF 的特定页面中提取图像。
//接口初始化
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);

// 输入文件路径
let fileInfo = new groupdocs_parser_cloud.FileInfo();
fileInfo.filePath = "sample.pdf";

// 定义图像选项
let options = new groupdocs_parser_cloud.ImagesOptions();
options.fileInfo = fileInfo;
options.startPageNumber = 1;      // Start page number
options.countPagesToExtract = 1;  // Total pages

// 图片请求
let request = new groupdocs_parser_cloud.ImagesRequest(options);

// 提取图像
let result = await parseApi.images(request);

// 显示结果
let pages = result.pages;
pages.forEach(page => {
  console.log("Page index: " + page.pageIndex);
  page.images.forEach(image => {
    console.log("Download url: " + image.downloadUrl);
    console.log("Image format: " + image.fileFormat + ". Page index: " + image.pageIndex);
  });
});

在 Node.js 中从 PDF 附件中提取图像

我们还可以按照以下步骤从容器内的文档中提取图像,作为 PDF 文件的附件。

  • 首先,创建一个 ParseApi 实例。
  • 接下来,提供上传的 PDF 文件路径。
  • 然后,定义 ImageOptions 并分配文件。
  • 接下来,定义 ContainerItemInfo 并提供内部文档的相对路径。
  • 之后,创建带有 ImageOptions 作为参数的 ImagesRequest。
  • 最后,通过调用 images() 方法提取图像。

以下代码示例展示了如何使用 Node.js 中的 REST API 从 PDF 文档中的文档中提取图像。请按照前面提到的步骤下载提取的图像。

// 此代码示例演示了如何在 Node.js 中从 PDF 附件中的文档中提取图像。
// 接口初始化
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);

// 输入文件路径
let fileInfo = new groupdocs_parser_cloud.FileInfo();
fileInfo.filePath = "PDF_with_Attachment.pdf";
fileInfo.password = "password";

// 定义图像选项
let options = new groupdocs_parser_cloud.ImagesOptions();
options.fileInfo = fileInfo;

// 容器项目
options.ContainerItemInfo = new groupdocs_parser_cloud.ContainerItemInfo();
options.ContainerItemInfo.relativePath = "template-document.pdf";

// 图片请求
let request = new groupdocs_parser_cloud.ImagesRequest(options);

// 提取图像
let result = await parseApi.images(request);

// 显示结果
let images = result.images;
images.forEach(image => {
  console.log("Image path: " + image.path);
  console.log("Image format: " + image.fileFormat + ". Page index: " + image.pageIndex);
});

在线试用

如何从pdf中免费提取图像?请尝试使用以下免费在线PDF解析工具在线提取pdf图像,该工具是使用上述API开发的。 https://products.groupdocs.app/parser/pdf

结论

在本文中,我们学习了如何:

  • 在云端使用 Node.js 从 PDF 文件中提取图像;
  • 以编程方式将 PDF 文件上传到云端;
  • 从云端下载提取的图像。

此外,您可以使用 文档 了解有关 GroupDocs.Parser Cloud API 的更多信息。我们还提供了一个 API 参考 部分,让您可以直接通过浏览器可视化我们的 API 并与之交互。如有任何歧义,请随时在论坛上与我们联系。

也可以看看