Text
Text
Questa pagina tratta la lettura del testo da una pagina, a tre livelli di dettaglio: testo semplice, blocchi di layout strutturati e glifi posizionati individualmente. Per scrivere testo su una pagina, vedere Core API and Core API.
Estrazione del testo semplice
Page.GetText() restituisce il testo semplice assemblato della pagina, nell’ordine di lettura. È il modo più semplice per confermare quale testo contenga effettivamente una pagina — ad esempio, dopo aver appiattito un campo o applicato una redazione.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Testo strutturato
Page.GetStructuredText() estrae il testo posizionato raggruppato in linee (per linea di base) e blocchi simili a paragrafi (per spazio verticale e allineamento al margine sinistro), restituendo TextBlock[] — utile quando serve il layout, non solo una stringa piatta.
Introspezione a livello di glifo
visitContent(doc, page, visitor) percorre i flussi di contenuto di una pagina — inclusi nei Form XObject — e chiama il gestore corrispondente su visitor per ogni glifo, immagine o tracciato che incontra. Il gestore glyph riceve un GlyphEvent: il text del glifo, il suo quad nello spazio dispositivo, fontSize, color, e i campi di provenienza come mcid (il suo elemento di contenuto marcato contenente, se presente) e artifact (vero quando disegnato all’interno di un ambito /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);Suggerimenti e migliori pratiche
- Usa
Page.GetText()per un rapido controllo di presenza/assenza; usavisitContent()con un gestoreglyphquando ti serve la posizione esatta di ogni glifo, la dimensione del carattere o il colore. - Verifica
GlyphEvent.artifactper saltare i contenuti decorativi (arredamento della pagina, sfondi) che un documento taggato segnala come/Artifactanziché contenuto reale. GlyphEvent.mcidcollega un glifo al suo elemento di struttura contenitore quando il documento è etichettato — combina con Structure per passare da un glifo al suo elemento logico.Page.GetStructuredText()raggruppa i glifi in blocchi per te; ricorri avisitContent()direttamente solo quando ti serve un dettaglio per glifo cheGetStructuredText()non espone.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
Page.GetText() non ha del testo visibile sulla pagina | Il testo è stato disegnato come percorsi vettoriali o come immagine anziché come veri operatori di visualizzazione dei glifi | Usa visitContent() con un gestore path / image per confermare quale tipo di contenuto lo ha effettivamente disegnato |
Il gestore glyph di visitContent() si attiva per il testo di sfondo decorativo | GlyphEvent.artifact non è stato controllato | Ignora gli eventi in cui e.artifact è true |
| Il testo estratto è fuori dall’ordine di lettura visivo | Il semplice assemblaggio di GetText() non ricostruisce il layout a più colonne | Usa Page.GetStructuredText(), che raggruppa il testo in blocchi sensibili al layout |
FAQ
Qual è la differenza tra GetText e GetStructuredText?
GetText() restituisce una singola stringa piatta del testo assemblato della pagina. GetStructuredText() restituisce TextBlock[] — testo raggruppato in linee e blocchi simili a paragrafi per linea di base e layout, utile quando la posizione è importante.
Come posso ottenere la posizione esatta e la dimensione del carattere di ciascun carattere?
Chiama visitContent(doc, page, { glyph: (e) => ... }). Ogni GlyphEvent contiene il text del glifo, lo quad in spazio dispositivo, fontSize, color e la linea di base angle.
Posso capire se un pezzo di testo è contenuto reale o decorazione?
Sì — GlyphEvent.artifact è true quando il glifo è stato disegnato all’interno di un ambito di contenuto contrassegnato /Artifact, la stessa distinzione che Document.AutoTag() usa quando decide cosa etichettare.
L’estrazione del testo vede il contenuto all’interno dei Form XObject?
Sì — visitContent() entra nei Form XObject come parte del suo attraversamento, quindi i glifi disegnati tramite un modulo riutilizzato vengono comunque visitati.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
Page.GetText() | Il testo semplice assemblato della pagina, in ordine di lettura |
Page.GetStructuredText() | Testo raggruppato in linee e blocchi simili a paragrafi (TextBlock[]) |
visitContent() | Scorri il contenuto di una pagina, emettendo eventi di glifo/immagine/percorso con provenienza |
GlyphEvent | Un glifo posizionato: text, quad, fontSize, color, mcid, artifact |