Redaction
Redaction
このページでは、PDFページからコンテンツを永続的に削除する方法について説明します。Aspose.PDF TypeScript 用のFOSSは、2つのレダクションワークフローを提供します。コミット前に確認できる2段階のマーク→適用フローと、1回の呼び出しで即座に実行するフローです。両方とも、単一ページの場合はPageで、文書全体の場合はDocumentで利用できます。
レダクションのマークと適用
Page.AddRedact()は矩形領域を/Redactアノテーションでマークします――その下のコンテンツは変更されず、コピーや選択が可能なままです。実際に削除が行われるのはPage.ApplyRedactions()が実行されたときだけです。ページ上のすべての/Redactマークに対してコンテンツストリームを書き換え、各マークのオーバーレイ(/IC塗りと/OverlayText)を描画し、マークを削除し、適用されたレダクション数を返します。ApplyRedactions()が呼び出された後に追加されたマークは適用されません。
page.AddRedact({
rect: [220, 550, 460, 566],
fill: [0, 0, 0],
overlayText: '[REDACTED]',
align: 'center',
fontSize: 9,
textColor: [1, 1, 1],
});
const applied = page.ApplyRedactions();
console.log('Redactions applied:', applied);即時レダクション
Page.Redact() と Page.RedactText() はマークと適用を単一の呼び出しに統合します:覆われたテキストや画像を実際に削除し、削除により孤立したリソースを除去し、各領域の上に不透明なマーカーボックスを描画します――別個の ApplyRedactions() ステップはなく、事前にレビューするものも残りません。Page.Redact() は明示的な Rect 領域のリストを受け取ります;Page.RedactText() は検索文字列または RegExp のすべての出現箇所を検出してレダクションを行い、Page.SearchAnnotationText() の検索と同様の方法です。両者とも、マーカー color を制御する RedactOptions オブジェクト、scrubMetadata するかどうか、そしてレダクション領域と重なるものを keepAnnotations するかどうかを受け取ります。
レビュー工程なしでコンテンツを即座に削除するため、マークをコミット前に検査できる必要がある場合は AddRedact() + ApplyRedactions() を、領域や検索語がすでに安全に削除できることが分かっている場合は Redact() / RedactText() を使用してください。
文書全体のレダクション
同じ2つのワークフローが Document に存在し、すべてのページを一度に対象とします: Document.MarkRedactText() はすべてのページで検索語の出現箇所をすべてマークし、Document.ApplyRedactions() は文書内のすべてのマークを適用し、Document.Redact() / Document.RedactText() は単一ページの領域または文書全体の検索語を即座にレダクトし、Page と同等の機能を鏡像します。
ヒントとベストプラクティス
AddRedact()+ApplyRedactions()を使用すると、レダクションが有効になる前にレビュー可能です。Redact()/RedactText()は、領域が即座に削除しても安全と確認済みの場合に使用します。ApplyRedactions()を呼び出す前に、ページのすべてのAddRedact()マークを追加してください。後から追加されたマークはその呼び出しに含まれず、適用されません。- レダクトされたコンテンツが文書メタデータ(
/Infoまたは XMP)にも存在する可能性がある場合は、RedactOptions/ApplyRedactionsOptionsにscrubMetadata: trueを渡してください。 RedactText()とMarkRedactText()はSearchAnnotationText()/Searchと同じマッチングルールで検索するため、そこで一致しない検索文字列はレダクトにも失敗します。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
| 削除マークは効果がありません | Page.ApplyRedactions() は呼び出されませんでした | まずすべてのマークに対して Page.AddRedact() を呼び出し、次に Page.ApplyRedactions() を一度呼び出します |
| マーク後もコンテンツは復元可能です | そのマークは AddRedact()(マークのみ)を使用し、続く ApplyRedactions() 呼び出しがありません | ApplyRedactions() を呼び出すか、Redact() / RedactText() を使用してワンコール削除を行います |
| 編集されたテキストが抽出された文書のメタデータに再び表示されます | scrubMetadata が設定されていませんでした | options オブジェクトに { scrubMetadata: true } を渡します |
ApplyRedactions() は 0 を返します | 呼び出された時点で、ページに /Redact のマークは存在しませんでした | AddRedact()(または MarkRedactText())が最初に実行され、同じページを対象にしたことを確認してください |
FAQ
AddRedact と Redact の違いは何ですか?
AddRedact() は領域をマークするだけで、ApplyRedactions() が実行されるまでコンテンツは残っており、コピーや選択が可能です。Redact() は同じ呼び出しでコンテンツを削除し、別途適用ステップはありません。
座標を指定せずにテキスト検索でレダクトできますか?
はい。RedactText() は検索文字列または RegExp のすべての出現箇所を見つけ、即座にレダクトします。MarkRedactText() は同様に動作しますが、マッチ箇所をマークするだけで、後の ApplyRedactions() 呼び出しまで残します。
レダクションは文書全体に適用されますか、それともページ単位でのみ適用されますか?
両方です。Page.Redact() / Page.ApplyRedactions() とそれらの兄弟は1ページ単位で動作し、Document.Redact() / Document.ApplyRedactions() とそれらの兄弟は全ページにわたって動作します。
レダクトされた領域の近くにある注釈も削除されますか?
それは、あなたが放っておく場合のみです。オプションオブジェクトで keepAnnotations: true を渡すと、削除される代わりに、編集された領域と重なるアノテーションを保持できます。
API Reference 概要
| クラス/メソッド | 説明 |
|---|---|
Page.AddRedact() | 矩形領域を/Redactアノテーションでマークし、まだコンテンツは削除しないでください |
Page.ApplyRedactions() | ページ上のすべてのマークされた領域を破壊的に削除し、適用された件数を返す |
Page.Redact() | 別途の適用ステップなしで、指定された領域のコンテンツを即座に削除する |
Page.RedactText() | 検索文字列またはRegExpのすべての出現箇所を見つけ、即座にマスク処理する |
Page.MarkRedactText() | 検索文字列またはRegExpのすべての出現箇所を(適用せずに)検索してマークする |
Document.ApplyRedactions() | 文書全体にわたってすべての/Redactマークを適用する |
Document.Redact() / Document.RedactText() | 1ページ上の領域や、すべてのページにわたる検索語を即座にマスク処理する |
Document.MarkRedactText() | すべてのページにわたって検索語のすべての出現箇所をマークする |