Redaction
Redaction
Denna sida behandlar permanent borttagning av innehåll från en PDF-sida. Aspose.PDF FOSS för TypeScript erbjuder två raderingsarbetsflöden: ett tvåstegigt markera-sedan-tillämpa-flöde som du granskar innan du bekräftar, och ett enstaka anrop-omedelbart-flöde. Båda finns tillgängliga på Page för en enskild sida och på Document för hela dokumentet.
Markering och tillämpning av raderingar
Page.AddRedact() markerar ett rektangulärt område med en /Redact-annotation — innehållet under förblir orört och är fortfarande kopieringsbart. Ingenting tas faktiskt bort förrän Page.ApplyRedactions() körs: den skriver destruktivt om innehållsströmmen för varje /Redact-markering på sidan, målar varje markeringens överlagring (dess /IC fyllning och /OverlayText), tar bort markeringarna och returnerar antalet tillämpade raderingar. Markeringar som läggs till efter att ApplyRedactions() anropats förblir oapplyed.
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);Omedelbar radering
Page.Redact() och Page.RedactText() kombinerar markering och tillämpning i ett enda anrop: de tar verkligen bort täckt text och bilder, rensar resurser som borttagandet lämnar föräldralösa, och målar en ogenomskinlig markeringsruta över varje område — utan ett separat ApplyRedactions()-steg och utan något att granska först. Page.Redact() tar emot en explicit lista över Rect områden; Page.RedactText() hittar och raderar varje förekomst av en söksträng eller RegExp, på samma sätt som Page.SearchAnnotationText() söker. Båda accepterar ett RedactOptions-objekt som styr markerings-color, huruvida man ska scrubMetadata, och huruvida man ska keepAnnotations som överlappar ett raderat område.
Eftersom de tar bort innehåll omedelbart utan granskningssteg, föredra AddRedact() + ApplyRedactions() när en markering bör kunna inspekteras innan den bekräftas, och Redact() / RedactText() när regionerna eller söksträngarna redan är kända för att vara säkra att ta bort.
Röjning av ett helt dokument
Samma två arbetsflöden finns på Document, tillämpade på varje sida samtidigt: Document.MarkRedactText() markerar varje förekomst av ett sökord på alla sidor, Document.ApplyRedactions() tillämpar varje markering i dokumentet, och Document.Redact() / Document.RedactText() röjer en enskild sidas regioner eller ett dokumentomfattande sökord omedelbart, vilket speglar deras Page motsvarigheter.
Tips och bästa praxis
- Använd
AddRedact()+ApplyRedactions()när en röjning ska kunna granskas innan den verkställs; användRedact()/RedactText()när regionerna redan är bekräftade som säkra att ta bort omedelbart. - Lägg till varje
AddRedact()-markering för en sida innan du anroparApplyRedactions()— markeringar som läggs till efteråt inkluderas inte i det anropet och förblir oapplyerade. - Skicka
scrubMetadata: trueiRedactOptions/ApplyRedactionsOptionsnär det röjda innehållet också kan finnas i dokumentmetadata (/Infoeller XMP). RedactText()ochMarkRedactText()söker med samma matchningsregler somSearchAnnotationText()/Search, så en söksträng som misslyckas med att matcha där kommer också misslyckas med att röja.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| Raderingsmarkering har ingen effekt | Page.ApplyRedactions() anropades aldrig | Anropa Page.AddRedact() för varje markering först, sedan Page.ApplyRedactions() en gång |
| Innehållet kan fortfarande återställas efter en markering | Markeringen använde AddRedact() (mark-only) utan ett efterföljande ApplyRedactions()-anrop | Anropa ApplyRedactions(), eller använd Redact() / RedactText() för engångsborttagning |
| Raderad text återkommer i extraherad dokumentmetadata | scrubMetadata var inte angivet | Skicka { scrubMetadata: true } i options-objektet |
ApplyRedactions() returnerar 0 | Inga /Redact markeringar existerade på sidan när den anropades | Bekräfta att AddRedact() (eller MarkRedactText()) kördes först och riktade mot samma sida |
FAQ
Vad är skillnaden mellan AddRedact och Redact?
AddRedact() markerar bara ett område — innehållet är fortfarande närvarande och kan kopieras tills ApplyRedactions() körs. Redact() tar bort innehållet i samma anrop, utan ett separat tillämpningssteg.
Kan jag maskera genom att söka efter text istället för att ange koordinater?
Ja. RedactText() hittar och maskerar omedelbart varje förekomst av en söksträng eller RegExp; MarkRedactText() gör samma sak men markerar bara träffarna, och lämnar dem för ett senare ApplyRedactions()-anrop.
Fungerar maskering över hela dokumentet, eller bara en sida åt gången?
Båda. Page.Redact() / Page.ApplyRedactions() och deras motsvarigheter arbetar på en sida; Document.Redact() / Document.ApplyRedactions() och deras motsvarigheter arbetar över alla sidor.
Tas även annotationer nära ett maskerat område bort?
Endast om du låter dem vara. Skicka keepAnnotations: true i options-objektet för att bevara annotationer som överlappar ett redigerat område istället för att ta bort dem tillsammans med det.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
Page.AddRedact() | Markera ett rektangulärt område med en /Redact-annotation, utan att ta bort innehållet ännu |
Page.ApplyRedactions() | Ta bort alla markerade områden på sidan permanent och returnera det tillämpade antalet |
Page.Redact() | Ta omedelbart bort innehållet i de angivna områdena, utan ett separat tillämpningssteg |
Page.RedactText() | Hitta och omedelbart maskera varje förekomst av en söksträng eller RegExp |
Page.MarkRedactText() | Sök och markera (utan att tillämpa) varje förekomst av en söksträng eller RegExp |
Document.ApplyRedactions() | Tillämpa varje /Redact-markering i hela dokumentet |
Document.Redact() / Document.RedactText() | Maskera omedelbart regioner på en sida, eller ett sökord på alla sidor |
Document.MarkRedactText() | Markera varje förekomst av ett sökord på alla sidor |