Redaction
Redaction
Diese Seite behandelt das dauerhafte Entfernen von Inhalten einer PDF-Seite. Aspose.PDF FOSS für TypeScript bietet zwei Redaktions-Workflows: einen zweiphasigen Markieren-dann-Anwenden-Ablauf, den Sie vor dem Festschreiben überprüfen können, und einen sofortigen Ein-Aufruf-Ablauf. Beide sind auf Page für eine einzelne Seite und auf Document für das gesamte Dokument verfügbar.
Markieren und Anwenden von Redaktionen
Page.AddRedact() markiert einen rechteckigen Bereich mit einer /Redact-Annotation — der darunterliegende Inhalt bleibt unverändert und weiterhin kopier- und auswählbar. Es wird nichts tatsächlich entfernt, bis Page.ApplyRedactions() ausgeführt wird: Es überschreibt destruktiv den Inhalts-Stream für jede /Redact-Markierung auf der Seite, malt die Überlagerung jeder Markierung (ihre /IC-Füllung und /OverlayText), entfernt die Markierungen und gibt die Anzahl der angewendeten Redaktionen zurück. Nach dem Aufruf von ApplyRedactions() hinzugefügte Markierungen bleiben unverarbeitet.
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);Sofortige Redaktion
Page.Redact() und Page.RedactText() kombinieren Markieren und Anwenden in einem einzigen Aufruf: Sie entfernen tatsächlich den bedeckten Text und Bilder, bereinigen Ressourcen, die durch das Entfernen verwaist bleiben, und malen eine undurchsichtige Markierungsbox über jede Region — ohne einen separaten ApplyRedactions()-Schritt und ohne dass zunächst etwas zur Überprüfung bleibt. Page.Redact() nimmt eine explizite Liste von Rect-Regionen entgegen; Page.RedactText() findet und schwärzt jedes Vorkommen einer Suchzeichenkette oder RegExp, auf dieselbe Weise, wie Page.SearchAnnotationText() sucht. Beide akzeptieren ein RedactOptions-Objekt, das die Markierungs-color steuert, ob scrubMetadata durchgeführt werden soll und ob keepAnnotations überschneidende mit einer redigierten Region durchgeführt werden soll.
Da sie Inhalte sofort ohne Überprüfungsschritt entfernen, bevorzugen Sie AddRedact() + ApplyRedactions(), wenn eine Markierung vor dem Festschreiben einsehbar sein soll, und Redact() / RedactText(), wenn die Regionen oder Suchbegriffe bereits als sicher zum Entfernen gelten.
Ein ganzes Dokument redigieren
Die gleichen beiden Workflows existieren auf Document, wobei sie gleichzeitig auf jede Seite angewendet werden: Document.MarkRedactText() markiert jedes Vorkommen eines Suchbegriffs auf allen Seiten, Document.ApplyRedactions() wendet jede Markierung im Dokument an, und Document.Redact() / Document.RedactText() redigieren sofort die Regionen einer einzelnen Seite bzw. einen dokumentweiten Suchbegriff, wobei sie deren Page-Entsprechungen spiegeln.
Tipps und bewährte Verfahren
- Verwenden Sie
AddRedact()+ApplyRedactions(), wenn eine Redaktion überprüfbar sein soll, bevor sie wirksam wird; verwenden SieRedact()/RedactText(), wenn die Regionen bereits als sicher zum sofortigen Entfernen bestätigt wurden. - Fügen Sie jede
AddRedact()-Markierung für eine Seite hinzu, bevor SieApplyRedactions()aufrufen — nachträglich hinzugefügte Markierungen werden bei diesem Aufruf nicht berücksichtigt und bleiben unverwendet. - Übergeben Sie
scrubMetadata: trueinRedactOptions/ApplyRedactionsOptions, wenn der redigierte Inhalt auch in den Dokumentmetadaten (/Infooder XMP) vorhanden sein könnte. RedactText()undMarkRedactText()suchen nach denselben Übereinstimmungsregeln wieSearchAnnotationText()/Search, sodass ein Suchbegriff, der dort nicht gefunden wird, ebenfalls nicht redigiert werden kann.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| Redaktionsmarkierung hat keine Wirkung | Page.ApplyRedactions() wurde nie aufgerufen | Rufen Sie Page.AddRedact() zuerst für jede Markierung auf, dann Page.ApplyRedactions() einmal |
| Inhalt kann nach einer Markierung noch wiederhergestellt werden | Die Markierung verwendete AddRedact() (nur Markierung) ohne nachfolgenden Aufruf von ApplyRedactions() | Rufen Sie ApplyRedactions() auf, oder verwenden Sie Redact() / RedactText() für eine einmalige Entfernung |
| Redigierter Text erscheint wieder in den extrahierten Dokumentmetadaten | scrubMetadata war nicht gesetzt | Übergib { scrubMetadata: true } im Optionsobjekt |
ApplyRedactions() gibt 0 zurück | Es gab keine /Redact-Markierungen auf der Seite, als sie aufgerufen wurde | Bestätigen Sie, dass AddRedact() (oder MarkRedactText()) zuerst ausgeführt wurde und dieselbe Seite anvisierte |
FAQ
Was ist der Unterschied zwischen AddRedact und Redact?
AddRedact() markiert nur einen Bereich — der Inhalt ist weiterhin vorhanden und kopierbar, bis ApplyRedactions() ausgeführt wird. Redact() entfernt den Inhalt im selben Aufruf, ohne einen separaten Anwendungs-Schritt.
Kann ich redigieren, indem ich nach Text suche, anstatt Koordinaten anzugeben?
Ja. RedactText() findet und redigiert sofort jedes Vorkommen einer Suchzeichenkette oder RegExp; MarkRedactText() macht dasselbe, markiert jedoch nur die Treffer und lässt sie für einen späteren ApplyRedactions()-Aufruf.
Funktioniert die Redaktion über das gesamte Dokument hinweg oder nur eine Seite auf einmal?
Beides. Page.Redact() / Page.ApplyRedactions() und deren Geschwister arbeiten auf einer Seite; Document.Redact() / Document.ApplyRedactions() und deren Geschwister arbeiten über alle Seiten hinweg.
Werden Anmerkungen in der Nähe eines redigierten Bereichs ebenfalls entfernt?
Nur wenn du sie so lässt. Übergebe keepAnnotations: true im Optionsobjekt, um Anmerkungen, die sich mit einem redigierten Bereich überschneiden, zu erhalten, anstatt sie zusammen damit zu entfernen.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
Page.AddRedact() | Markieren Sie einen rechteckigen Bereich mit einer /Redact-Annotation, ohne den Inhalt bereits zu entfernen |
Page.ApplyRedactions() | Entfernen Sie destruktiv jede markierte Region auf der Seite und geben Sie die angewendete Anzahl zurück |
Page.Redact() | Entfernen Sie sofort den Inhalt in den angegebenen Regionen, ohne einen separaten Anwendungsschritt |
Page.RedactText() | Suchen und sofort jedes Vorkommen einer Suchzeichenfolge oder RegExp zensieren |
Page.MarkRedactText() | Finde und markiere (ohne anzuwenden) jedes Vorkommen einer Suchzeichenkette oder RegExp |
Document.ApplyRedactions() | Wende jede /Redact-Markierung im gesamten Dokument an |
Document.Redact() / Document.RedactText() | Sofort Regionen auf einer Seite oder einen Suchbegriff über alle Seiten zensieren |
Document.MarkRedactText() | Markiere jedes Vorkommen eines Suchbegriffs auf jeder Seite |