如何保存和编辑 PDF 修订历史

This article was translated from English: Does it need improvement?
Translated
View the article in English

PDF 修订历史指的是一种功能或能力,它允许你跟踪和管理随着时间推移对 PDF 文档所做的更改。它通常用于多个用户协作处理一个文档的情况,你需要维护文档的修订记录,包括谁在何时做了修改。

在数字签名方面,IronPdf 具有管理修订历史和回滚到特定版本的功能。

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

保存并签署 PDF 修订迭代

在下面的示例中,我们打开一个 PDF 文件,进行各种编辑,然后在保存前签名。对于签名权限,我们只允许将填写表格作为未来的编辑内容,否则签名将因任何其他编辑而失效。

然后,我们将调用 SaveAsRevision 将修订保存到历史记录,然后将新文档保存到磁盘。

请注意
为提高 PDF 导出性能,我们将 TrackChanges 选项设置为 false。要使用增量保存功能,必须将该选项设置为 true。

:path=/static-assets/pdf/content-code-examples/how-to/signing-revision.cs
using IronPdf;
using IronPdf.Rendering;

// Import PDF and enable TrackChanges
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf", TrackChanges: ChangeTrackingModes.EnableChangeTracking);
// ... various edits ...
pdf.SignWithFile("/assets/IronSignature.p12", "password", null, IronPdf.Signing.SignaturePermissions.FormFillingAllowed);

PdfDocument pdfWithRevision = pdf.SaveAsRevision();

pdfWithRevision.SaveAs("annual_census_2.pdf");
Imports IronPdf
Imports IronPdf.Rendering

' Import PDF and enable TrackChanges
Private pdf As PdfDocument = PdfDocument.FromFile("annual_census.pdf", TrackChanges:= ChangeTrackingModes.EnableChangeTracking)
' ... various edits ...
pdf.SignWithFile("/assets/IronSignature.p12", "password", Nothing, IronPdf.Signing.SignaturePermissions.FormFillingAllowed)

Dim pdfWithRevision As PdfDocument = pdf.SaveAsRevision()

pdfWithRevision.SaveAs("annual_census_2.pdf")
VB   C#

了解签名的增量保存

有些查看器(如 Chrome 浏览器)只显示一个版本,而 PDF 文件则可以存储文档的先前版本,类似于 Git 的提交历史。在更高级的 PDF 阅读器(如 Adobe Acrobat)中就能看到这种功能。

在处理 PDF 签名时,了解这一点很重要,因为签署 PDF 的操作适用于 PDF 的当前迭代。您的 PDF 可能有较早迭代的签名,也可能有一些未签名的版本。我们可以形象地举例说明如下:

PDF 文档迭代证书 A证书 B证书 C证书 D
0 (第一次保存)
1
2
3
(仅限表格字段编辑)

(仅限表格字段编辑)
4 (仅编辑表格字段)
5
(不允许进一步编辑)

(不允许进一步编辑)

(不允许进一步编辑)

上面是一份经过 6 次不同迭代的文档。这份文档可能会在公司各部门之间传递审批,直到迭代 3 最终完成。在这次迭代中,人员 A 和人员 B 都签署了该文档,并设置了 "仅限表单字段编辑 "权限。这意味着允许填写 PDF 文档中的表单字段,但对文档的任何其他更改都会导致他们的签名无效。

在上面的示例中,我们可以假设 C 君填写了表单,并将其发送回 A 君、B 君和 D 君,他们都在最后一次签名时使用了 "不允许编辑 "权限。由于在此文档中没有采取任何无效操作,因此当我们运行 IronPDF 的签名方法时,将得到 true

回滚到旧版本

要回滚到 PDF 以前的版本,可以使用 GetRevision 方法。这将会遗忘此修订版之后所做的任何更改,包括更新的签名。要做到这一点,请使用

:path=/static-assets/pdf/content-code-examples/how-to/signing-revert-revision.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("report.pdf");

int versions = pdf.RevisionCount; // total revisions

PdfDocument rolledBackPdf = pdf.GetRevision(2);
rolledBackPdf.SaveAs("report-draft.pdf");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("report.pdf")

Private versions As Integer = pdf.RevisionCount ' total revisions

Private rolledBackPdf As PdfDocument = pdf.GetRevision(2)
rolledBackPdf.SaveAs("report-draft.pdf")
VB   C#