Πώς να διαγράψετε περιεχόμενο PDF σε TypeScript
Αυτός ο οδηγός δείχνει πώς να αφαιρέσετε περιεχόμενο PDF με το Aspose.PDF FOSS για TypeScript. Το Page.AddRedact() σημειώνει μια περιοχή· το Page.ApplyRedactions() ξαναγράφει καταστροφικά τη ροή περιεχομένου ώστε τα γλύφη κάτω από κάθε σημειωμένη περιοχή να χάνονται. Τα σημεία που παραμένουν αχρησιμοποίητα παραμένουν ως συνηθισμένα, αντιγράψιμα σχόλια. Απαιτεί Node.js 22 ή νεότερη έκδοση.
Οδηγός βήμα-βήμα
Βήμα 1: Εγκατάσταση του πακέτου
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildΕπαληθεύστε την εγκατάσταση εισάγοντας την κλάση Document σε ένα νέο αρχείο TypeScript — αυτή η γραμμή θα πρέπει να λυθεί χωρίς σφάλμα μόλις το πακέτο εγκατασταθεί:
import { Document } from '@asposefoss/pdf';Βήμα 2: Εισαγωγή των απαιτούμενων κλάσεων
Εισάγετε Document για να ανοίξετε το αρχείο· AddRedact() και ApplyRedactions() καλούνται άμεσα στις εμφανίσεις του Page που επιστρέφει:
import { Document } from '@asposefoss/pdf';Βήμα 3: Σήμανση περιοχής για απόσυρση
Page.AddRedact(opts) σχεδιάζει ένα RedactAnnotation πάνω από rect. fill ορίζει το χρώμα που θα βαφτεί πάνω στην περιοχή όταν εφαρμοστεί, και overlayText (με align, fontSize, textColor) εκτυπώνει μια ετικέτα αντικατάστασης όπως [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],
});Βήμα 4: Εφαρμογή αποσυρσεων
Page.ApplyRedactions() ξαναγράφει καταστροφικά το ρεύμα περιεχομένου — τα σύμβολα μέσα σε κάθε RedactAnnotation που σημειώθηκε στη σελίδα εξαφανίζονται μόνιμα, και οι εφαρμοσμένες σημάνσεις αφαιρούνται. Σημάνσεις που προστέθηκαν μετά από αυτήν την κλήση παραμένουν αεφαρμοσμένες: η τιμή κάτω από αυτές εξακολουθεί να διαβάζεται και παραμένει επιλέξιμη για αντιγραφή:
page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');Κοινά προβλήματα και διορθώσεις
Ένα σήμα διαγραφής εμφανίζει το μαύρο κουτί, αλλά το υποκείμενο κείμενο μπορεί ακόμη να αντιγραφεί. Page.ApplyRedactions() δεν κλήθηκε ποτέ (ή κλήθηκε πριν προστεθεί το σήμα). Η σήμανση με AddRedact() μόνο σχεδιάζει μια σημείωση πάνω στην περιοχή — το περιεχόμενο κάτω από αυτή καταστρέφεται μόνο μία φορά ApplyRedactions() εκτελείται.
ApplyRedactions() αφαιρέθηκε το περιεχόμενο του σήματος rect δεν κάλυπτε. rect είναι η ακριβής περιοχή που ξαναγράφηκε — κείμενο ή εικόνες που επικαλύπτονται μόνο εν μέρει μπορούν ακόμη να καταστραφούν εν μέρει στο όριο. Τα σήματα μεγέθους είναι γενναιόδωρα γύρω από το περιεχόμενο-στόχο.
Τα αποτελέσματα αναζήτησης δεν μπορούν να περαστούν απευθείας σε Page.AddRedact(). Ένα αποτέλεσμα από Page.SearchAnnotationText() μεταφέρει μεταδεδομένα σημειώσεων, όχι γεωμετρία σελίδας — δεν είναι το ίδιο σχήμα με το rect an AddRedact() το mark αναμένει. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) είναι τα σημεία εισόδου για redact-by-text-search, και και τα δύο είναι επίσης διαθέσιμα στο Document επίπεδο για να σαρώσετε κάθε σελίδα με μία κλήση.
Μια redaction επιβιώνει την κρυπτογράφηση απροσδόκητα. Η redaction και η κρυπτογράφηση είναι ανεξάρτητες λειτουργίες — εφαρμόστε τις redactions πριν την αποθήκευση με encrypt επιλογές εάν ο στόχος είναι τόσο η αφαίρεση του περιεχομένου όσο και ο περιορισμός της πρόσβασης σε ό,τι απομένει· η εφαρμογή με την αντίθετη σειρά δεν αναιρεί μια ήδη κρυπτογραφημένη αποθήκευση.
Συχνές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ του σήμανσης και της εφαρμογής μιας διαγραφής;
AddRedact() δημιουργεί μόνο μια σημείωση που περιγράφει πού προγραμματίζεται η διαγραφή — το καλυπτόμενο περιεχόμενο παραμένει αμετάβλητο και ακόμη μπορεί να επιλεγεί/αντιγραφεί μέχρι να εκτελεστεί το ApplyRedactions() και να ξαναγράψει καταστροφικά τη σελίδα.
Μπορώ να διαγράψω κάνοντας αναζήτηση κειμένου αντί να ορίζω ορθογώνιο;
Ναι — το Page.MarkRedactText(find, opts) σηματοδοτεί κάθε αντιστοιχία του find για μεταγενέστερη εφαρμογή, και το Page.RedactText(find, opts) σηματοδοτεί και εφαρμόζει σε μία κλήση. Και τα δύο υπάρχουν επίσης στο Document για να σαρώσουν ολόκληρο το έγγραφο.
Επηρεάζει το ApplyRedactions() τις σημειώσεις εκτός από τα σημάδια διαγραφής;
Όχι — ξαναγράφει τη ροή περιεχομένου κάτω από τα δικά του σημάδια RedactAnnotation· οι άλλοι τύποι σημειώσεων στη σελίδα δεν επηρεάζονται από αυτή την κλήση.
Μπορεί η διαγραφή να είναι αναστρέψιμη;
Όχι — το ApplyRedactions() είναι καταστροφικό. Διατηρήστε το αρχικό αρχείο εάν το αδιάγραφο περιεχόμενο χρειαστεί να ανακτηθεί αργότερα.