Text
Text
Această pagină acoperă citirea textului dintr-o pagină, la trei niveluri de detaliu: text simplu, blocuri de layout structurate și glife poziționate individual. Pentru scrierea textului pe o pagină, vezi Core API and Core API.
Extracția textului simplu
Page.GetText() returnează textul simplu asamblat al paginii, în ordinea de citire. Este cea mai simplă modalitate de a confirma ce text conține efectiv o pagină — de exemplu, după aplatizarea unui câmp sau aplicarea unei redactări.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Text structurat
Page.GetStructuredText() extrage textul poziționat grupat în linii (după linia de bază) și blocuri asemănătoare paragrafelor (după spațiul vertical și alinierea pe marginea stângă), returnând TextBlock[] — util când aveți nevoie de aspect, nu doar de un șir simplu.
Introspecție la nivel de glif
visitContent(doc, page, visitor) parcurge fluxurile de conținut ale unei pagini — inclusiv în Form XObjects — și apelează handler-ul corespunzător pe visitor pentru fiecare glif, imagine sau cale pe care o întâlnește. Handler-ul glyph primește un GlyphEvent: text glifului, quad în spațiul dispozitivului, fontSize, color, și câmpurile de proveniență cum ar fi mcid (elementul de conținut marcat care îl înconjoară, dacă există) și artifact (adevărat când este desenat în interiorul unui domeniu /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);Sfaturi și cele mai bune practici
- Folosește
Page.GetText()pentru o verificare rapidă de prezență/absență; foloseștevisitContent()cu un handlerglyphcând ai nevoie de poziția exactă, dimensiunea fontului sau culoarea fiecărui glif. - Verifică
GlyphEvent.artifactpentru a sări peste conținutul decorativ (elemente de pagină, fundaluri) pe care un document etichetat îl marchează ca/Artifactîn loc de conținut real. GlyphEvent.mcidleagă o glifă înapoi la elementul său de structură înconjurător când documentul este etichetat — combină cu Structure pentru a parcurge de la o glifă la elementul său logic.Page.GetStructuredText()grupează glifele în blocuri pentru tine; apelează direct lavisitContent()numai când ai nevoie de detalii pe fiecare glif pe careGetStructuredText()nu le expune.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
Page.GetText() lipsește textul care este vizibil pe pagină | Textul a fost desenat ca căi vectoriale sau ca o imagine, în loc de operatori reali de afișare a glifelor | Folosiți visitContent() cu un path/image handler pentru a confirma ce tip de conținut l-a desenat de fapt |
Handler-ul glyph al visitContent() se declanșează pentru text decorativ de fundal | GlyphEvent.artifact nu a fost verificat | Omiteți evenimentele în care e.artifact este true |
| Textul extras este în afara ordinii vizuale de lectură | Asamblarea simplă GetText() nu reconstruiește aranjamentul pe mai multe coloane | Folosiți Page.GetStructuredText(), care grupează textul în blocuri conștiente de aspect |
FAQ
Care este diferența dintre GetText și GetStructuredText?
GetText() returnează un șir plat al textului asamblat al paginii. GetStructuredText() returnează TextBlock[] — text grupat în linii și blocuri asemănătoare paragrafelor pe baza liniei de bază și a aspectului, util atunci când poziția contează.
Cum pot obține poziția exactă și dimensiunea fontului fiecărui caracter?
Apelă visitContent(doc, page, { glyph: (e) => ... }). Fiecare GlyphEvent conține text glifului, quad în spațiul dispozitivului, fontSize, color și linia de bază angle.
Pot să determin dacă o bucată de text este conținut real sau decorativ?
Da — GlyphEvent.artifact este true când gliful a fost desenat în interiorul unui /Artifact marcaj de conținut, aceeași distincție pe care Document.AutoTag() o folosește atunci când decide ce să eticheteze.
Extracția de text vede conținutul din interiorul Form XObjects?
Da — visitContent() pătrunde în Form XObjects ca parte a traversării sale, astfel încât glifele desenate printr-un formular reutilizat sunt încă vizitate.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
Page.GetText() | Textul simplu asamblat al paginii, în ordinea de citire |
Page.GetStructuredText() | Text grupat în linii și blocuri asemănătoare paragrafelor (TextBlock[]) |
visitContent() | Parcurge conținutul unei pagini, emitând evenimente glyph/image/path cu proveniență |
GlyphEvent | Un glif poziționat: text, quad, fontSize, color, mcid, artifact |