在 NodeJs 中使用 REST API 比较 PDF 文件

您可以在云端以编程方式比较两个或多个 PDF 文档。通过比较,您可以识别文档中的相似点和不同点。在本文中,您将学习如何在 Node.js 中使用 REST API 比较 PDF 文件。

本文应涵盖以下主题:

文档比较 REST API 和 Node.js SDK

我将使用 GroupDocs.Comparison Cloud 的 Node.js SDK API 来比较 PDF 文档。它允许您比较两个或多个文档并找出不同之处。结果,它创建了一个包含差异的结果文件。它还使您能够接受或拒绝检索到的更改。您可以轻松地将它集成到您现有的 Node.js 应用程序中,以比较文档、电子表格、演示文稿、Visio 图表、电子邮件和许多其他格式的文件。它还提供 .NET、Java、PHP、Python 和 Ruby SDK 作为 Cloud API 的文档比较家族成员

您可以在控制台中使用以下命令将 GroupDocs.Comparison Cloud 安装到您的 Node.js 应用程序:

npm install groupdocs-comparison-cloud --save

在执行上述步骤之前,请从 dashboard 获取您的 Client ID 和 Secret。获得 ID 和密码后,添加如下所示的代码:

global.clientId = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
global.clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";
global.myStorage = "";

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

在 Node.js 中使用 REST API 比较 PDF 文件

您可以按照下面给出的简单步骤以编程方式比较您的 PDF 文档:

  1. 上传PDF文件至云端
  2. 使用 Node.js 比较 PDF 文件
  3. 下载 生成的 PDF 文件

上传 PDF 文件

首先,使用以下代码示例将源文件和目标 PDF 文件上传到云端:

// 构造FileApi
let fileApi = groupdocs_comparison_cloud.FileApi.fromConfig(config);
let resourcesFolder = 'C:\\Files\\';

fs.readdir(resourcesFolder, (err, files) => {
  files.forEach(file => {
    // 一个一个地读取文件
    fs.readFile(resourcesFolder + file, (err, fileStream) => {
      // 创建上传文件请求
      let request = new groupdocs_comparison_cloud.UploadFileRequest(file, fileStream, myStorage);
      // 上传文件
      fileApi.uploadFile(request)
        .then(function (response) {
          console.log(file + " uploaded: " + response.uploaded.length);
        })
        .catch(function (error) {
          console.log("Error: " + error.message);
        });
    });
  });
});

因此,上传的 PDF 文件将在云端仪表板的 文件部分 中可用。

使用 Node.js 比较 PDF 文件

您可以按照以下步骤以编程方式比较两个 PDF 文档:

  • 创建 CompareApi 的实例
  • 设置源 .pdf 文件
  • 设置目标 .pdf 文件
  • 定义比较选项
  • 分配源文件和目标文件
  • 设置输出文件路径
  • 创建比较请求
  • 通过调用 CompareApi.comparisons() 方法获取结果

以下代码示例展示了如何在 Node.js 中使用 REST API 比较两个 PDF 文件。

// 初始化接口
let 比较Api = groupdocs_comparison_cloud.CompareApi.fromKeys(clientId, clientSecret);

// 源文件
let source = new groupdocs_comparison_cloud.FileInfo();
source.filePath = "source.pdf";

// 目标文件
let target = new groupdocs_comparison_cloud.FileInfo();
target.filePath = "target.pdf";

// 定义比较选项
let options = new groupdocs_comparison_cloud.ComparisonOptions();
options.sourceFile = source;
options.targetFiles = [target];
options.outputPath = "比较d/result.pdf";

// 创建比较请求
let request = new groupdocs_comparison_cloud.ComparisonsRequest(options);

// 比较
let response = await 比较Api.comparisons(request);
console.log("Output file link: " + response.href);
使用 Node.js 比较 PDF 文件

使用 Node.js 比较 PDF 文件

生成的文件还在文档末尾包含一个摘要页面,如下所示:

在 Node.js 中使用 REST API 比较 PDF 文件

下载结果文件

上面的代码示例会将差异保存在云端新创建的 PDF 文件中。您可以使用以下代码示例下载它:

// 构造FileApi
let fileApi = groupdocs_comparison_cloud.FileApi.fromConfig(config);

// 创建下载文件请求
let request = new groupdocs_comparison_cloud.DownloadFileRequest("compared\\result.pdf", myStorage);

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

// 保存在工作目录
fs.writeFile("C:\\Files\\result.pdf", response, "binary", function (err) { });

使用 Node.js 比较多个 PDF 文件

您可以按照下面提到的简单步骤以编程方式比较多个 PDF 文档:

  • 创建 CompareApi 的实例
  • 设置源 .pdf 文件
  • 设置多个目标 .pdf 文件
  • 创建 ComparisonOptions 实例
  • 分配源文件和目标文件
  • 设置输出文件路径
  • 创建比较请求
  • 通过调用 CompareApi.comparisons() 方法获取结果

以下代码示例展示了如何在 Node.js 中使用 REST API 比较多个 PDF 文件。

// 初始化接口
let 比较Api = groupdocs_comparison_cloud.CompareApi.fromKeys(clientId, clientSecret);

// 源文件
let source = new groupdocs_comparison_cloud.FileInfo();
source.filePath = "source.pdf";

// 目标文件 1
let target1 = new groupdocs_comparison_cloud.FileInfo();
target1.filePath = "target.pdf";

// 目标文件 2
let target2 = new groupdocs_comparison_cloud.FileInfo();
target2.filePath = "target2.pdf";

// 定义比较选项
let options = new groupdocs_comparison_cloud.ComparisonOptions();
options.sourceFile = source;
options.targetFiles = [target1, target2];
options.outputPath = "比较d/result.pdf";

// 创建比较请求
let request = new groupdocs_comparison_cloud.ComparisonsRequest(options);

// 比较
let response = await 比较Api.comparisons(request);

使用 Node.js 自定义比较结果

您可以按照下面提到的步骤以编程方式轻松自定义更改样式:

  • 创建 CompareApi 的实例
  • 设置源 .pdf 文件
  • 设置目标 .pdf 文件
  • 创建设置实例
  • 设置比较灵敏度
  • 自定义项目样式
  • 创建 ComparisonOptions 实例
  • 分配源文件和目标文件
  • 设置输出文件路径
  • 分配设置
  • 创建比较请求
  • 通过调用 CompareApi.comparisons() 方法获取结果

以下代码示例展示了如何在 Node.js 中使用 REST API 自定义比较结果。

// 初始化接口
let 比较Api = groupdocs_comparison_cloud.CompareApi.fromKeys(clientId, clientSecret);

// 源文件
let source = new groupdocs_comparison_cloud.FileInfo();
source.filePath = "source.pdf";

// 目标文件
let target = new groupdocs_comparison_cloud.FileInfo();
target.filePath = "target.pdf";

// 定义比较设置
let settings = new groupdocs_comparison_cloud.Settings();

// 比较敏感度
settings.sensitivityOfComparison = 100;

// 自定义更改样式
settings.insertedItemsStyle = new groupdocs_comparison_cloud.ItemsStyle();
settings.insertedItemsStyle.highlightColor = "14297642";
settings.insertedItemsStyle.fontColor = "16711680";
settings.insertedItemsStyle.underline = true;
settings.deletedItemsStyle = new groupdocs_comparison_cloud.ItemsStyle();
settings.deletedItemsStyle.fontColor = "14166746";
settings.deletedItemsStyle.bold = true;
settings.changedItemsStyle = new groupdocs_comparison_cloud.ItemsStyle();
settings.changedItemsStyle.fontColor = "14320170";
settings.changedItemsStyle.italic = true;

// 定义比较选项
let options = new groupdocs_comparison_cloud.ComparisonOptions();
options.sourceFile = source;
options.targetFiles = [target];
options.outputPath = "比较d/result_比较Options.pdf";
options.settings = settings;

// 创建比较请求
let request = new groupdocs_comparison_cloud.ComparisonsRequest(options);

// 比较
let response = await 比较Api.comparisons(request);

使用 Node.js 获取更改列表

通过执行以下简单步骤以编程方式比较 PDF 文档后,您可以获得已发现差异的完整列表:

  • 创建 CompareApi 的实例
  • 设置源 .pdf 文件
  • 设置目标 .pdf 文件
  • 定义比较选项
  • 创建比较请求
  • 通过调用 CompareApi.comparisons() 方法获取结果
  • 一一显示所有变化

以下代码示例展示了如何在 Node.js 中使用 REST API 获取更改列表。

// 初始化接口
let compareApi = groupdocs_comparison_cloud.CompareApi.fromKeys(clientId, clientSecret);

// 源文件
let source = new groupdocs_comparison_cloud.FileInfo();
source.filePath = "source.pdf";

// 目标文件
let target = new groupdocs_comparison_cloud.FileInfo();
target.filePath = "target.pdf";

// 定义比较选项
let options = new groupdocs_comparison_cloud.ComparisonOptions();
options.sourceFile = source;
options.targetFiles = [target];
options.outputPath = "compared/result.pdf";

// 创建比较请求
let request = new groupdocs_comparison_cloud.PostChangesRequest(options);
let changes = await compareApi.postChanges(request);

console.log("Changes count: " + changes.length);

changes.forEach(change => {
  console.log(change.id + 1 +"- Target Text: " + change.targetText + ", Text: " + change.text + ", Type: " + change.type);
});
使用 Node.js 获取更改列表

使用 Node.js 获取更改列表

使用 Node.js 比较和保存密码和元数据 {#Compare-and-Save-with-Password-&-Metadata-using-Nodejs}

请按照下面提到的步骤对生成的文件进行密码保护,并将其与元数据一起保存:

  • 创建 CompareApi 的实例
  • 设置源 .pdf 文件
  • 设置目标 .pdf 文件
  • 创建设置实例
  • 设置元数据和密码
  • 创建 ComparisonOptions 实例
  • 分配源文件和目标文件
  • 设置输出文件路径
  • 分配设置
  • 创建比较请求
  • 通过调用 CompareApi.comparisons() 方法获取结果

以下代码示例显示了如何使用 Node.js 中的 REST API 保存包含密码和元数据的结果文件。

// 初始化接口
let 比较Api = groupdocs_comparison_cloud.CompareApi.fromKeys(clientId, clientSecret);

// 源文件
let source = new groupdocs_comparison_cloud.FileInfo();
source.filePath = "source.pdf";

// 目标文件
let target = new groupdocs_comparison_cloud.FileInfo();
target.filePath = "target.pdf";

let settings = new groupdocs_comparison_cloud.Settings();

// 设置元数据
settings.metadata = new groupdocs_comparison_cloud.Metadata();
settings.metadata.author = "Author";
settings.metadata.company = "GroupDocs";
settings.metadata.lastSaveBy = "Last saved by";
settings.cloneMetadata = groupdocs_comparison_cloud.Settings.CloneMetadataEnum.FileAuthor;

// 设置密码
settings.password = "password";
settings.passwordSaveOption = groupdocs_comparison_cloud.Settings.PasswordSaveOptionEnum.User;

// 定义比较选项
let options = new groupdocs_comparison_cloud.ComparisonOptions();
options.sourceFile = source;
options.targetFiles = [target];
options.outputPath = "比较d/result_Metadata.pdf";
options.settings = settings;

// 创建比较请求
let request = new groupdocs_comparison_cloud.ComparisonsRequest(options);

// 比较
let response = await 比较Api.comparisons(request);

在线试用

请试用以下使用上述 API 开发的免费在线 PDF 比较工具。 https://products.groupdocs.app/comparison/pdf

结论

在本文中,您了解了如何比较云端的 PDF 文档。您还学习了如何比较多个 PDF 文件、自定义更改样式和获取更改列表。此外,您还学习了如何以编程方式将多个 PDF 文件上传到云端,然后从云端下载生成的文件。您可以使用 文档 了解有关 GroupDocs.Comparison Cloud API 的更多信息。我们还提供了一个 API 参考 部分,让您可以直接通过浏览器可视化我们的 API 并与之交互。如有任何歧义,请随时在论坛上与我们联系。

也可以看看