C#でPDFの改訂履歴を保存・編集する方法
IronPDFはC#開発者がリビジョン履歴を使ってPDFドキュメントの変更を追跡・管理することを可能にします。 ドキュメントの共同作業時に、SaveAsRevision メソッドを使用してドキュメントの反復を保存し、GetRevision を使用して以前のバージョンにロールバックします。
クイックスタート: IronPDFで PDF のリビジョンを保存する
C#アプリケーションでIronPDFを使用してPDFのリビジョンを管理、保存します。 このガイドでは、PDF の変更を追跡および管理するための IronPDF の SaveAsRevision メソッドを使用してドキュメントのバージョンを保存する方法を説明します。 PDFファイルをロードし、すべての変更をアーカイブするために別のリビジョンとして保存します。
as-heading:3(最小限のワークフロー(5ステップ))
- IronPDFでPDFリビジョン履歴を保存および編集するためのC#ライブラリをダウンロード
SaveAsRevisionメソッドを使用して PDF バージョンを保存します。GetRevisionメソッドを使用して PDF バージョンを取得します。- リビジョン数を確認するには、
RevisionCountプロパティにアクセスします。 SaveAsを使用して最終 PDF を保存します。
PDFリビジョン・イテレーションを保存して署名するにはどうすればよいですか?
次の例では、PDFファイルを開き、さまざまな編集を行い、保存する前に署名します。 署名の許可については、将来の編集としてフォーム入力のみを許可します; それ以外では、他の編集によって署名が無効になります。
次に、SaveAsRevision を呼び出して、リビジョンを履歴に保存し、新しいドキュメントをディスクに保存します。 このアプローチは、文書の完全性と監査証跡が重要なエンタープライズ・アプリケーションで、デジタル署名ワークフローを実装する際に役立ちます。
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")
ChangeTrackingModes.EnableChangeTracking パラメータは、完全な監査証跡を維持するために不可欠です。 IronPDFを有効にすると、すべてのドキュメントの変更が別々のレイヤーとして保存され、ドキュメントの履歴をナビゲーションできるようになります。 この機能は、PDFのセキュリティと権限と統合され、許可されたユーザーだけが特定のリビジョンにアクセスできるようにします。
なぜ署名にはインクリメンタル セーブを理解することが重要なのですか?
Chromeブラウザのように1つのバージョンしか表示しないビューアもありますが、PDFファイルは、Gitのコミット履歴と同様に、ドキュメントの過去のバージョンを保存することができます。 Adobe Acrobatのような高度なPDFビューアでは、このように表示されます。 署名付きPDFを扱うとき、このインクリメンタルな保存メカニズムを理解することは非常に重要です。
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 セキュリティ機能と組み合わせると、各署名が適用された特定のドキュメントの状態でのみ有効であることを保証するため、価値があります。 これは、すべての変更の完全な監査証跡を維持しながら、不正な変更を防ぐことができます。
古いリビジョンにロールバックするには?
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")
GetRevision メソッドは、指定されたリビジョン番号までのコンテンツのみを含む新しい PDF ドキュメント インスタンスを作成します。 以下のような場面で役立ちます:
- 異なるバージョンのドキュメントを比較する必要がある
- 不正な変更により署名が無効になりました。
- 異なる承認ワークフローのために、以前のバージョンから分岐したい。
- 特定の時点におけるドキュメントの状態を示すことで、コンプライアンスを実証する必要があります。
リビジョンで作業する場合、ロールバックしても元のPDFファイルには影響しません。 このアプローチでは、データの整合性を維持しながら、文書のバージョンを柔軟に管理できます。 より高度なPDF操作のテクニックについては、IronPdfの包括的な編集機能をご覧ください。
PDFの改訂を管理するためのベストプラクティス
アプリケーションにリビジョン履歴を実装する場合は、以下のベストプラクティスを考慮してください:
1.変更の追跡を常に有効にする: 変更履歴が必要な PDF を開くときに、TrackChanges: ChangeTrackingModes.EnableChangeTracking を設定します。
2.改訂戦略を文書化する:特にマルチユーザー環境では、いつ、なぜリビジョンが保存されるかについて、明確な文書を維持しましょう。
3.アクセス制御を実装する:PDFの権限とパスワードとリビジョン履歴を組み合わせて、許可されたユーザーだけが特定のリビジョンを作成したりアクセスできるようにします。
4.定期的なエクスポート:定期的に重要なリビジョンを別ファイルにエクスポートし、長期保存します。
5.署名の互換性をテストする: 予期せぬ無効を避けるために、異なる署名のパーミッションがリビジョンワークフローとどのように相互作用するかをテストします。
これらのプラクティスとIronPdfのリビジョン管理機能を活用することで、コラボレーションプロセス全体を通してドキュメントの整合性を確保しながら、完全な監査証跡を維持する洗練されたドキュメントワークフローを作成することができます。 アプリケーションにこれらの機能を実装するための詳細については、包括的なIronPDFドキュメントを参照するか、ライセンスオプションを検索してください。
よくある質問
C#でPDFのリビジョンを保存するには?
C#でPDFのリビジョンを保存するにはIronPDFのSaveAsRevisionメソッドを使用します。PDF文書を読み込み、pdf.SaveAsRevision('revision1.pdf')を呼び出すだけで、文書に加えられたすべての変更を追跡する保存版が作成されます。
PDFの改訂履歴を追跡する目的は何ですか?
IronPDFのリビジョン履歴機能により、開発者はドキュメントの変更履歴を追跡することができ、GetRevisionメソッドを使用して以前のバージョンにロールバックすることができるコラボレーションワークフローを実現することができます。これはエンタープライズアプリケーションの監査証跡を維持するために不可欠です。
増分保存の変更追跡を有効にするにはどうすればよいですか?
IronPDFで変更の追跡を有効にするには、TrackChangesオプションをtrueに設定し、ChangeTrackingModes.EnableChangeTrackingパラメータを使用します。これにより、すべてのドキュメントの変更が別々のレイヤーとして保存され、ドキュメントの完全な履歴をナビゲーションできるようになります。
PDFに署名し、その改訂履歴を管理することはできますか?
はい、IronPDFはリビジョン履歴を維持しながらPDFに署名することができます。文書に署名すると、その署名は現在のイテレーションに適用されます。将来の編集によって署名が無効になるのを防ぐために、フォーム入力のみといった特定の権限を設定することができます。
以前のPDFバージョンを取得する方法を教えてください。
IronPDFはPDFドキュメントの以前のバージョンを取得するGetRevisionメソッドを提供します。また、RevisionCountプロパティを使用して、ドキュメントの履歴にいくつのリビジョンが存在するかを調べることができます。
新しいリビジョンを保存すると、署名はどうなりますか?
署名後にIronPDFのSaveAsRevisionメソッドを使用すると、その署名は特定のリビジョンに対して有効です。しかし、許可された権限を超えた編集(フォーム入力など)は署名を無効にし、文書の完全性を保証します。
改訂履歴はすべてのPDFビューアで表示できますか?
IronPDFはGitのコミットと同様に完全なリビジョン履歴を保存しますが、すべてのPDFビューアがこの情報を表示するわけではありません。Chromeのような基本的なビューアは現在のバージョンしか表示しませんが、Adobe Acrobatのような高度なビューアは完全なリビジョン履歴を表示できます。
インクリメンタル保存はどのようにPDFのパフォーマンスを向上させますか?
IronPDFのインクリメンタル保存機能は、ドキュメント全体を書き換えるのではなく、変更点のみを保存することで書き出しのパフォーマンスを向上させます。リビジョントラッキングが不要な場合はTrackChangesをfalseに設定することでパフォーマンスを最適化することができます。

