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; usa visitContent() con un gestore glyph quando ti serve la posizione esatta di ogni glifo, la dimensione del carattere o il colore.
  • Verifica GlyphEvent.artifact per saltare i contenuti decorativi (arredamento della pagina, sfondi) che un documento taggato segnala come /Artifact anziché contenuto reale.
  • GlyphEvent.mcid collega 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 a visitContent() direttamente solo quando ti serve un dettaglio per glifo che GetStructuredText() non espone.

Problemi comuni

ProblemaCausaCorrezione
Page.GetText() non ha del testo visibile sulla paginaIl testo è stato disegnato come percorsi vettoriali o come immagine anziché come veri operatori di visualizzazione dei glifiUsa 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 decorativoGlyphEvent.artifact non è stato controllatoIgnora gli eventi in cui e.artifact è true
Il testo estratto è fuori dall’ordine di lettura visivoIl semplice assemblaggio di GetText() non ricostruisce il layout a più colonneUsa 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/MetodoDescrizione
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
GlyphEventUn glifo posizionato: text, quad, fontSize, color, mcid, artifact

Vedi anche

 Italiano