Hur man maskerar PDF-innehåll i TypeScript
Den här guiden visar hur man maskar PDF-innehåll med Aspose.PDF FOSS för TypeScript. Page.AddRedact() markerar ett område; Page.ApplyRedactions() skriver om innehållsströmmen destruktivt så att glyferna under varje markerat område försvinner. Markerade men ej tillämpade förblir som vanliga, kopieringsbara annotationer. Det kräver Node.js 22 eller senare.
Steg-för-steg-guide
Steg 1: Installera paketet
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildVerifiera installationen genom att importera Document-klassen i en ny TypeScript-fil — den här raden bör lösa sig utan fel när paketet är installerat:
import { Document } from '@asposefoss/pdf';Steg 2: Importera nödvändiga klasser
Importera Document för att öppna filen; AddRedact() och ApplyRedactions() anropas direkt på de Page-instanser som den returnerar:
import { Document } from '@asposefoss/pdf';Steg 3: Markera ett område för maskning
Page.AddRedact(opts) ritar en RedactAnnotation över rect. fill anger färgen som målas över området när den har tillämpats, och overlayText (med align, fontSize, textColor) skriver ut en ersättningsetikett såsom [REDACTED]:
const doc = Document.OpenFile('memo.pdf');
const page = doc.Pages[0];
page.AddRedact({
rect: [216, 548, 460, 566],
fill: [0, 0, 0],
overlayText: '[REDACTED]',
align: 'center',
fontSize: 9,
textColor: [1, 1, 1],
});Steg 4: Tillämpa maskningar
Page.ApplyRedactions() skriver om innehållsströmmen destruktivt — glyferna inuti varje RedactAnnotation som markerats på sidan försvinner för alltid, och de applicerade markeringarna tas bort. Markeringar som läggs till efter detta anrop förblir oapplyerade: värdet under dem kan fortfarande läsas och är fortfarande kopieringsbart:
page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');Vanliga problem och lösningar
En redigeringsmarkering visar den svarta rutan men den underliggande texten kan fortfarande kopieras. Page.ApplyRedactions() anropades aldrig (eller anropades innan markeringen lades till). Markering med AddRedact() ensamt ritar bara en annotation över området — innehållet underför är förstört bara en gång ApplyRedactions() körs.
ApplyRedactions() tog bort innehåll markeringens rect täckte inte. rect är den exakta region som skrivs om — text eller bilder som bara delvis överlappar den kan fortfarande delvis förstöras vid gränsen. Storleksmarkeringar är generösa runt målinnnehållet.
Sökresultat kan inte överföras direkt till Page.AddRedact(). En träff från Page.SearchAnnotationText() bär annotation metadata, inte sidgeometri — det är inte samma form som rect an AddRedact() mark förväntar sig. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) är redact-by-text-search-ingångspunkterna, och båda är också tillgängliga på Document nivå för att svepa varje sida i ett anrop.
En maskning överlever kryptering oväntat. Maskning och kryptering är oberoende operationer — utför maskningar innan du sparar med encrypt alternativ om målet är att både ta bort innehållet och begränsa åtkomsten till det som återstår; att göra det i omvänd ordning återställer inte en redan krypterad sparning.
Vanliga frågor
Vad är skillnaden mellan att markera och att tillämpa en redigering?
AddRedact() skapar bara en annotation som beskriver var en redigering är planerad — det täckta innehållet förblir orört och är fortfarande valbart/kopierbart tills ApplyRedactions() körs och destruktivt skriver om sidan.
Kan jag redigera genom att söka efter text istället för att ange en rektangel?
Ja — Page.MarkRedactText(find, opts) markerar varje matchning av find för senare tillämpning, och Page.RedactText(find, opts) markerar och tillämpar i ett anrop. Båda finns också på Document för att svepa hela dokumentet.
Påverkar ApplyRedactions() annotationer förutom raderingsmarkeringarna?
Nej — den skriver om innehållsströmmen under sina egna RedactAnnotation-markeringar; andra annotationstyper på sidan påverkas inte av detta anrop.
Är en radering reversibel?
Nej — ApplyRedactions() är destruktiv. Behåll originalfilen om det oredigerade innehållet senare behöver kunna återställas.