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ște visitContent() cu un handler glyph când ai nevoie de poziția exactă, dimensiunea fontului sau culoarea fiecărui glif.
  • Verifică GlyphEvent.artifact pentru 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.mcid leagă 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 la visitContent() numai când ai nevoie de detalii pe fiecare glif pe care GetStructuredText() 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 glifelorFolosiț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 fundalGlyphEvent.artifact nu a fost verificatOmiteț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 coloaneFolosiț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ță
GlyphEventUn glif poziționat: text, quad, fontSize, color, mcid, artifact

Vezi și:

 Română