Jak cenzurować zawartość PDF w TypeScript
Ten przewodnik pokazuje, jak cenzurować treść PDF za pomocą Aspose.PDF FOSS dla TypeScript. Page.AddRedact() oznacza obszar; Page.ApplyRedactions() destrukcyjnie przepisuje strumień treści, tak że glify pod każdym oznaczonym obszarem znikają. Znaczniki pozostawione niezastosowane pozostają zwykłymi, możliwymi do skopiowania adnotacjami. Wymaga Node.js 22 lub nowszej wersji.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildZweryfikuj instalację, importując klasę Document w nowym pliku TypeScript — ta linia powinna zostać rozwiązana bez błędów po zainstalowaniu pakietu:
import { Document } from '@asposefoss/pdf';Krok 2: Importuj wymagane klasy
Zaimportuj Document, aby otworzyć plik; AddRedact() i ApplyRedactions() są wywoływane bezpośrednio na zwróconych przez niego instancjach Page:
import { Document } from '@asposefoss/pdf';Krok 3: Oznacz obszar do redakcji
Page.AddRedact(opts) rysuje RedactAnnotation nad rect. fill ustawia kolor nanoszony na obszar po zastosowaniu, a overlayText (z align, fontSize, textColor) drukuje etykietę zamienną, taką jak [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],
});Krok 4: Zastosuj redakcje
Page.ApplyRedactions() destrukcyjnie przepisuje strumień zawartości — glify wewnątrz każdego RedactAnnotation oznaczonego na stronie znikają na zawsze, a zastosowane znaczniki są usuwane. Znaczniki dodane po tym wywołaniu pozostają niezastosowane: wartość pod nimi nadal jest odczytywalna i nadal można ją kopiować:
page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');Typowe problemy i rozwiązania
Znacznik redakcyjny wyświetla czarny prostokąt, ale ukryty tekst nadal może być kopiowany. Page.ApplyRedactions() nigdy nie zostało wywołane (lub zostało wywołane przed dodaniem znacznika). Oznaczanie przy pomocy AddRedact() samodzielnie rysuje jedynie adnotację nad obszarem — zawartość pod spodem jest niszczona tylko raz ApplyRedactions() działa.
ApplyRedactions() usunięta zawartość znacznika rect nie obejmowała. rect jest dokładnie przepisanym regionem — tekst lub obrazy, które tylko częściowo zachodzą na niego, mogą nadal być częściowo zniszczone na granicy. Rozmiar znaczników powinien być hojny wokół docelowej treści.
Wyniki wyszukiwania nie mogą być przekazywane bezpośrednio do Page.AddRedact(). Wynik z Page.SearchAnnotationText() zawiera annotation metadata, nie page geometry — nie jest takim samym kształtem jak rect an AddRedact() mark oczekuje. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) są punktami wejścia redact-by-text-search, i oba są również dostępne na Document poziomie, aby przeszukać każdą stronę w jednym wywołaniu.
Redaction przeżywa szyfrowanie nieoczekiwanie. Redaction i encryption są niezależnymi operacjami — zastosuj redactions przed zapisem z encrypt options, jeśli celem jest zarówno usunięcie treści, jak i ograniczenie dostępu do tego, co pozostaje; zastosowanie w odwrotnej kolejności nie cofa już zaszyfrowanego zapisu.
Najczęściej Zadawane Pytania
Jaka jest różnica między oznaczaniem a zastosowaniem redakcji?
AddRedact() jedynie tworzy adnotację opisującą, gdzie planowana jest redakcja — objęta treść pozostaje niezmieniona i nadal możliwa do zaznaczenia/kopiowania, dopóki nie uruchomi się ApplyRedactions(), który destrukcyjnie przepisze stronę.
Czy mogę dokonać redakcji poprzez wyszukiwanie tekstu zamiast określania prostokąta?
Tak — Page.MarkRedactText(find, opts) oznacza każde wystąpienie find do późniejszego zastosowania, a Page.RedactText(find, opts) oznacza i stosuje w jednym wywołaniu. Oba również istnieją na Document, aby przetworzyć cały dokument.
Czy ApplyRedactions() wpływa na adnotacje inne niż znaczniki redakcji?
Nie — przepisuje strumień treści pod własnymi znacznikami RedactAnnotation; inne typy adnotacji na stronie nie są modyfikowane przez to wywołanie.
Czy redakcja jest odwracalna?
Nie — ApplyRedactions() jest destrukcyjny. Zachowaj oryginalny plik, jeśli niezbędne będzie późniejsze odzyskanie nieusuniętej treści.