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

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

PDF修订历史是指一种功能或能力,允许您跟踪和管理随时间对PDF文档所做的更改。当多个用户协作处理一个文档,并且您想要保留文档修订的记录,包括谁进行了更改以及何时进行的,这种功能通常会被使用。

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

开始使用IronPDF

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

第一步:
green arrow pointer


保存并签署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.AdditionalSignaturesAndFormFillingAllowed);

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.AdditionalSignaturesAndFormFillingAllowed)

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
(第一次保存)

(仅限表格字段编辑)

(仅限表格字段编辑)
(仅编辑表格字段)

(不允许进一步编辑)

(不允许进一步编辑)

(不允许进一步编辑)

以上是一份经过 6 次不同迭代的文档。 此文件可能在公司各部门之间流传,并在第3次迭代时得到批准并最终确定。在此迭代中,甲方和乙方在设置了“仅表单字段编辑”权限的情况下签署了该文件。 这意味着可以填写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#