Text
Text
Αυτή η σελίδα καλύπτει την ανάγνωση κειμένου από μια σελίδα, σε τρία επίπεδα λεπτομέρειας: απλό κείμενο, δομημένα μπλοκ διάταξης και μεμονωμένα τοποθετημένα glyphs. Για την εγγραφή κειμένου σε μια σελίδα, δείτε Core API and Core API.
Εξαγωγή Απλού Κειμένου
Page.GetText() επιστρέφει το συναρμολογημένο απλό κείμενο της σελίδας, με τη σειρά ανάγνωσης. Είναι ο πιο απλός τρόπος να επιβεβαιώσετε ποιο κείμενο περιέχει πραγματικά μια σελίδα — για παράδειγμα, μετά την εξομάλυνση ενός πεδίου ή την εφαρμογή μιας διαγραφής.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Δομημένο Κείμενο
Page.GetStructuredText() εξάγει τοποθετημένο κείμενο ομαδοποιημένο σε γραμμές (βάσει της βάσης) και μπλοκ παρόμοια με παραγράφους (βάσει του κάθετου κενών και της αριστερής στοίχισης), επιστρέφοντας TextBlock[] — χρήσιμο όταν χρειάζεστε διάταξη, όχι μόνο μια απλή συμβολοσειρά.
Ενδοσκόπηση σε Επίπεδο Γλύφου
visitContent(doc, page, visitor) διασχίζει τις ροές περιεχομένου μιας σελίδας — συμπεριλαμβανομένου του Form XObjects — και καλεί τον αντίστοιχο χειριστή στο visitor για κάθε γλυφ, εικόνα ή διαδρομή που συναντά. Ο χειριστής glyph λαμβάνει ένα GlyphEvent: το text του γλυφ, το quad του σε χώρο συσκευής, fontSize, color, και πεδία προέλευσης όπως το mcid (το περιβάλλον στοιχείο σημειωμένου περιεχομένου, αν υπάρχει) και το artifact (αληθές όταν σχεδιάζεται μέσα σε εύρος /Artifact).
import { visitContent } from '@asposefoss/pdf';
let glyphCount = 0;
visitContent(doc, page, {
glyph: (e) => {
glyphCount++;
if (e.artifact) return; // skip decorative content
console.log(e.text, e.quad, e.color);
},
});
console.log('glyphs drawn:', glyphCount);Συμβουλές και Καλές Πρακτικές
- Χρησιμοποιήστε το
Page.GetText()για γρήγορο έλεγχο παρουσίας/απουσίας· χρησιμοποιήστε τοvisitContent()με ένανglyphχειριστή όταν χρειάζεστε τη ακριβή θέση, το μέγεθος γραμματοσειράς ή το χρώμα κάθε γλυφ. - Ελέγξτε το
GlyphEvent.artifactγια να παραλείψετε διακοσμητικό περιεχόμενο (επιπλέον στοιχεία σελίδας, φόντα) που ένα ετικετοποιημένο έγγραφο χαρακτηρίζει ως/Artifactαντί για πραγματικό περιεχόμενο. GlyphEvent.mcidσυνδέει ένα glyph πίσω στο περιβάλλον στοιχείο δομής όταν το έγγραφο είναι επισημασμένο — συνδυάστε με Structure για να μεταβείτε από ένα glyph στο λογικό του στοιχείο.Page.GetStructuredText()ομαδοποιεί γλυφ σε μπλοκ για εσάς· απευθυνθείτε στοvisitContent()άμεσα μόνο όταν χρειάζεστε λεπτομέρειες ανά γλυφ που τοGetStructuredText()δεν εκθέτει.
Συνηθισμένα Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
Page.GetText() λείπει κείμενο που είναι ορατό στη σελίδα | Το κείμενο σχεδιάστηκε ως διανυσματικά μονοπάτια ή εικόνα αντί για πραγματικούς τελεστές εμφάνισης γλυφών | Χρησιμοποιήστε το visitContent() με έναν χειριστή path / image για να επιβεβαιώσετε ποιος τύπος περιεχομένου το σχεδίασε πραγματικά |
Ο χειριστής glyph του visitContent() ενεργοποιείται για διακοσμητικό κείμενο φόντου | Το GlyphEvent.artifact δεν ελέγχθηκε | Παραλείψτε τα γεγονότα όπου το e.artifact είναι true |
| Το εξαγόμενο κείμενο είναι εκτός της οπτικής σειράς ανάγνωσης | Η απλή συναρμολόγηση GetText() δεν επαναδημιουργεί τη διάταξη πολλών στηλών | Χρησιμοποιήστε το Page.GetStructuredText(), το οποίο ομαδοποιεί το κείμενο σε μπλοκ με επίγνωση διάταξης |
FAQ
Ποια είναι η διαφορά μεταξύ GetText και GetStructuredText;
GetText() επιστρέφει μια επίπεδη συμβολοσειρά του συναρμολογημένου κειμένου της σελίδας. GetStructuredText() επιστρέφει TextBlock[] — κείμενο ομαδοποιημένο σε γραμμές και μπλοκ παρόμοια με παραγράφους με βάση τη γραμμή βάσης και τη διάταξη, χρήσιμο όταν η θέση είναι σημαντική.
Πώς μπορώ να λάβω τη ακριβή θέση και το μέγεθος γραμματοσειράς κάθε χαρακτήρα;
Καλέστε το visitContent(doc, page, { glyph: (e) => ... }). Κάθε GlyphEvent περιέχει το text του γλύφου, το quad σε χώρο συσκευής, το fontSize, το color, και τη γραμμή βάσης angle.
Μπορώ να διακρίνω αν ένα κομμάτι κειμένου είναι πραγματικό περιεχόμενο ή διακόσμηση;
Ναι — το GlyphEvent.artifact είναι true όταν το γλύφο σχεδιάστηκε μέσα σε ένα /Artifact marked-content scope, η ίδια διάκριση που χρησιμοποιεί το Document.AutoTag() κατά την απόφαση τι θα επισημανθεί.
Η εξαγωγή κειμένου βλέπει το περιεχόμενο μέσα σε Form XObjects;
Ναι — το visitContent() προχωρά μέσα σε Form XObjects ως μέρος της περιήγησής του, ώστε τα γλύφα που σχεδιάζονται μέσω μιας επαναχρησιμοποιούμενης φόρμας να επισκέπτονται ακόμη.
API Reference Σύνοψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
Page.GetText() | Το συναρμολογημένο απλό κείμενο της σελίδας, με τη σειρά ανάγνωσης |
Page.GetStructuredText() | Κείμενο ομαδοποιημένο σε γραμμές και μπλοκ παρόμοια με παραγράφους (TextBlock[]) |
visitContent() | Περιηγηθείτε στο περιεχόμενο μιας σελίδας, εκδίδοντας συμβάντα glyph/εικόνας/διαδρομής με προέλευση |
GlyphEvent | Ένα τοποθετημένο γλύφο: text, quad, fontSize, color, mcid, artifact |