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

PDF(便携式文档格式)是当今最常用的文件类型之一。通常用于分发只读文档,保留页面布局。在各种情况下,我们可能需要比较两个或多个PDF文档的内容,或者比较同一文档的多个版本。我们可以轻松地以编程方式比较 PDF 文档,以确定相似点和不同点。在本文中,我们将学习如何在 Python 中使用 REST API 比较 PDF 文件。

本文应涵盖以下主题:

用于比较 PDF 文件和 Python SDK 的 REST API

为了比较 PDF 文档,我们将使用 GroupDocs.Comparison Cloud 的 Python SDK API。它允许您比较 支持的格式 的两个或多个文档并找出差异。请在控制台中使用以下命令安装它:

pip install groupdocs_comparison_cloud

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

# 此代码示例演示如何设置客户端 ID 和密码。
client_id = "659fe7da-715b-4744-a0f7-cf469a392b73"
client_secret = "b377c36cfa28fa69960ebac6b6e36421"

configuration = groupdocs_comparison_cloud.Configuration(client_id, client_secret)
configuration.api_base_url = "https://api.groupdocs.cloud"
my_storage = ""

在 Python 中使用 REST API 比较两个 PDF 文件

我们可以按照下面给出的简单步骤来比较云端的 PDF 文档:

  1. 上传PDF文件到云端
  2. 比较 PDF 文件
  3. 下载 生成的 PDF 文件

上传 PDF 文件

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

# 此代码示例演示如何将 PDF 文件上传到云端。
# 创建 API 实例
file_api = groupdocs_comparison_cloud.FileApi.from_config(configuration)

# 上传示例文件
for filename in glob.iglob("C:\\Files\\*.pdf", recursive=True):
    destFile = filename.replace("C:\\Files\\", "", 1)            
    file_api.upload_file(groupdocs_comparison_cloud.UploadFileRequest(destFile, filename))
    print("Uploaded file: "+ destFile)

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

使用 Python 比较 PDF 文件

我们可以按照下面给出的步骤以编程方式比较两个 PDF 文档:

  • 首先,创建 CompareApi 的实例。
  • 接下来,创建 FileInfo 的一个实例。
  • 然后,设置源 PDF 文件路径。
  • 之后,创建 FileInfo 的另一个实例。
  • 然后,设置目标 PDF 文件路径。
  • 接下来,创建 ComparisonOptions 的一个实例。
  • 然后,分配源文件和目标文件。
  • 另外,设置输出文件路径。
  • 之后,使用 ComparisonOptions 对象创建 ComparisonsRequest 的实例
  • 最后,通过将 ComparisonsRequest 作为参数调用 CompareApi.comparisons() 方法来获取结果。

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

# 此代码示例演示如何比较两个 PDF 文件。
# 创建 API 实例
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)

# 输入源文件
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# 目标文件
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

# 定义比较选项
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"

# 创建比较请求
request = groupdocs_comparison_cloud.ComparisonsRequest(options)

# 比较
response = api_instance.comparisons(request)
在 Python 中使用 REST API 比较两个 PDF 文件

在 Python 中使用 REST API 比较两个 PDF 文件。

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

摘要页面。

显示总删除或插入元素的摘要页面。

下载结果文件

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

# 此代码示例演示如何下载生成的文件。
# 创建 API 实例
file_api = groupdocs_comparison_cloud.FileApi.from_config(configuration)

# 创建下载文件请求
request = groupdocs_comparison_cloud.DownloadFileRequest("result.pdf", my_storage)

# 下载文件
response = file_api.download_file(request)

# 将下载的文件移动到您的工作目录
shutil.move(response, "C:\\Files\\") 

在 Python 中比较多个 PDF 文件

我们可以按照以下步骤比较多个 PDF 文档:

  • 首先,创建 CompareApi 的实例。
  • 接下来,创建 FileInfo 的实例并设置源 PDF 文件路径。
  • 然后,创建另一个 FileInfo 实例并设置目标 PDF 文件路径。
  • 之后,重复上述步骤添加更多的目标文件。
  • 接下来,创建 ComparisonOptions 的一个实例。
  • 然后,分配源/目标文件并设置输出文件路径。
  • 之后,使用 ComparisonOptions 对象创建 ComparisonsRequest 的实例
  • 最后,通过以 ComparisonsRequest 作为参数调用 CompareApi.comparisons() 方法来获取结果。

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

# 此代码示例演示了如何比较多个 PDF 文件。
# 创建必要的 API 实例
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)

# 来源PDF
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# 目标 PDF 1
target1 = groupdocs_comparison_cloud.FileInfo()
target1.file_path = "target.pdf"

# 目标 PDF 2
target2 = groupdocs_comparison_cloud.FileInfo()
target2.file_path = "target2.pdf"

# 定义比较选项
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target1, target2]
options.output_path = "result.pdf"

# 创建比较请求并进行比较
request = groupdocs_comparison_cloud.ComparisonsRequest(options)
response = api_instance.comparisons(request)

在 Python 中自定义比较结果

我们可以按照以下步骤自定义比较过程中发现的变化样式:

  • 首先,创建 CompareApi 的实例。
  • 接下来,创建 FileInfo 的实例并设置源 PDF 文件路径。
  • 然后,创建另一个 FileInfo 实例并设置目标 PDF 文件路径。
  • 接下来,创建设置的实例。
  • 然后,设置比较敏感度和各种属性来自定义Item的样式。
  • 接下来,创建 ComparisonOptions 的一个实例。
  • 然后,分配源/目标文件并设置输出文件路径。
  • 之后,使用 ComparisonOptions 对象创建 ComparisonsRequest 的实例
  • 最后,通过将 ComparisonsRequest 作为参数调用 CompareApi.comparisons() 方法来获取结果。

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

# 此代码示例演示如何自定义比较结果。
# 创建必要的 API 实例
api_instance = groupdocs_comparison_cloud.比较Api.from_keys(client_id, client_secret)

# 来源PDF
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# 目标PDF
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

settings = groupdocs_comparison_cloud.Settings()

# 比较灵敏度
settings.sensitivity_of_comparison = 100

# 为更改自定义样式
settings.inserted_items_style = groupdocs_comparison_cloud.ItemsStyle()
settings.inserted_items_style.highlight_color = "14297642"
settings.inserted_items_style.font_color = "16711680"
settings.inserted_items_style.underline = True
settings.deleted_items_style = groupdocs_comparison_cloud.ItemsStyle()
settings.deleted_items_style.font_color = "14166746"
settings.deleted_items_style.bold = True
settings.changed_items_style = groupdocs_comparison_cloud.ItemsStyle()
settings.changed_items_style.font_color = "14320170"
settings.changed_items_style.italic = True

# 定义比较选项
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
options.settings = settings

# 创建比较请求
request = groupdocs_comparison_cloud.ComparisonsRequest(options)

# 比较
response = api_instance.comparisons(request)

获取 Python 中的更改列表

我们可以按照以下给出的步骤获取在比较 PDF 文件期间发现的所有更改的列表:

  • 首先,创建 CompareApi 的实例。
  • 接下来,创建 FileInfo 的实例并设置源 PDF 文件路径。
  • 然后,创建另一个 FileInfo 实例并设置目标 PDF 文件路径。
  • 接下来,创建 ComparisonOptions 的一个实例。
  • 然后,分配源/目标文件并设置输出文件路径。
  • 之后,使用 ComparisonOptions 对象创建 PostChangesRequest 实例
  • 最后,通过以 ComparisonsRequest 作为参数调用 CompareApi.post\changes() 方法来获取结果。

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

# 此代码示例演示如何获取所有更改的列表。
# 创建必要的 API 实例
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)

# 来源PDF
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# 目标PDF
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

# 定义比较选项
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"

# 创建发布更改请求
request = groupdocs_comparison_cloud.PostChangesRequest(options)
# 发布更改
response = api_instance.post_changes(request)

# 显示变化
for change in response:
  print("Change # " + str(change.id + 1) + "- Target Text: " + str(change.target_text) + ", Text: " + str(change.text) + ", Type: " + str(change.type));
获取 Python 中的更改列表

获取 Python 中的更改列表。

在 Python 中比较和保存密码和元数据

我们可以按照以下步骤对生成的文件进行密码保护并将其与元数据一起保存:

  • 首先,创建 CompareApi 的实例。
  • 接下来,创建 FileInfo 的实例并设置源 PDF 文件路径。
  • 然后,创建另一个 FileInfo 实例并设置目标 PDF 文件路径。
  • 接下来,创建设置的实例。
  • 然后,创建元数据的实例。
  • 之后,设置各种元数据属性,如作者、公司、上次\保存\作者等。
  • 然后,设置密码和密码\保存\选项。
  • 接下来,创建 ComparisonOptions 的一个实例。
  • 然后,分配源/目标文件并设置输出文件路径。
  • 之后,使用 ComparisonOptions 对象创建 ComparisonsRequest 的实例
  • 最后,通过将 ComparisonsRequest 作为参数调用 CompareApi.comparisons() 方法来获取结果。

以下代码示例显示了如何使用 Python 中的 REST API 保存带有密码和元数据的结果文件。

# 此代码示例演示如何使用密码和元数据保存生成的文件。
# 创建必要的 API 实例
api_instance = groupdocs_comparison_cloud.比较Api.from_keys(client_id, client_secret)

# 来源PDF
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# 目标PDF
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

settings = groupdocs_comparison_cloud.Settings()
# 设置元数据
settings.meta_data = groupdocs_comparison_cloud.Metadata()
settings.meta_data.author = "Tom"
settings.meta_data.company = "GroupDocs"
settings.meta_data.last_save_by = "Jack"

#Set password
settings.password_save_option = "User"
settings.password = "password"

# 定义比较选项
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
options.settings = settings

# 创建比较请求
request = groupdocs_comparison_cloud.ComparisonsRequest(options)

# 比较
response = api_instance.comparisons(request)

在线试用

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

结论

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

也可以看看