Text
Text
Tato stránka se zabývá čtením textu zpět ze stránky na třech úrovních podrobnosti: prostý text, strukturované bloky rozvržení a jednotlivé umístěné glyfy. Pro zápis textu na stránku viz Core API and Core API.
Extrahování prostého textu
Page.GetText() vrací sestavený prostý text stránky v pořadí čtení. Je to nejjednodušší způsob, jak potvrdit, jaký text stránka skutečně obsahuje — například po zploštění pole nebo aplikaci redakce.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Strukturovaný text
Page.GetStructuredText() extrahuje umístěný text seskupený do řádků (podle základní čáry) a bloků podobných odstavcům (podle vertikální mezery a zarovnání levého okraje), vrací TextBlock[] — užitečné, když potřebujete rozvržení, nejen plochý řetězec.
Introspekce na úrovni glyfů
visitContent(doc, page, visitor) prochází proudy obsahu stránky — včetně Form XObjects — a volá odpovídající obslužnou rutinu na visitor pro každý glyph, obrázek nebo cestu, na kterou narazí. Obslužná rutina glyph přijímá GlyphEvent: text glyphu, jeho quad v zařízení, fontSize, color a pole původu jako mcid (její obklopující element označeného obsahu, pokud existuje) a artifact (pravda, když je vykresleno uvnitř rozsahu /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);Tipy a osvědčené postupy
- Použijte
Page.GetText()pro rychlou kontrolu přítomnosti/absence; použijtevisitContent()sglyphobslužnou rutinou, když potřebujete přesnou pozici, velikost písma nebo barvu každého glyphu. - Zkontrolujte
GlyphEvent.artifact, abyste přeskočili dekorativní obsah (nábytek stránky, pozadí), který označený dokument označuje jako/Artifactmísto skutečného obsahu. GlyphEvent.mcidpropojí glyf zpět k jeho obklopujícímu strukturálnímu prvku, když je dokument označen — kombinujte s Structure pro procházení od glyfu k jeho logickému prvku.Page.GetStructuredText()seskupuje glyphy do bloků za vás; sáhněte povisitContent()přímo jen když potřebujete podrobnosti na úrovni jednotlivých glyphů, kteréGetStructuredText()neodhaluje.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
Page.GetText() chybí text, který je viditelně na stránce | Text byl vykreslen jako vektorové cesty nebo obrázek místo skutečných glyph-show operátorů | Použijte visitContent() s path / image handlerem k potvrzení, jaký typ obsahu jej skutečně vykreslil |
Handler glyph visitContent() se spouští pro dekorativní text na pozadí | GlyphEvent.artifact nebyl zkontrolován | Přeskočte události, kde je e.artifact true |
| Extrahovaný text není ve vizuálním čtecím pořadí | Jednoduchá montáž GetText() neobnovuje rozložení do více sloupců | Použijte Page.GetStructuredText(), který seskupuje text do bloků citlivých na rozvržení |
FAQ
Jaký je rozdíl mezi GetText a GetStructuredText?
GetText() vrací jeden plochý řetězec sestaveného textu stránky. GetStructuredText() vrací TextBlock[] — text seskupený do řádků a bloků podobných odstavcům podle základní linky a rozvržení, užitečné, když záleží na poloze.
Jak získám přesnou pozici a velikost písma každého znaku?
Zavolejte visitContent(doc, page, { glyph: (e) => ... }). Každý GlyphEvent nese text glyfu, zařízení-prostor quad, fontSize, color a základní linku angle.
Mohu rozpoznat, zda je část textu skutečný obsah nebo dekorace?
Ano — GlyphEvent.artifact je true, když byl glyf vykreslen uvnitř /Artifact rozsahu označeného obsahu, stejný rozdíl používá Document.AutoTag() při rozhodování, co označit.
Vidí extrakce textu obsah uvnitř Form XObjects?
Ano — visitContent() vstupuje do Form XObjects jako součást svého procházení, takže glyfy vykreslené pomocí opakovaně použitého formuláře jsou stále navštěvovány.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
Page.GetText() | Sestavený prostý text stránky v pořadí čtení |
Page.GetStructuredText() | Text seskupený do řádků a bloků podobných odstavcům (TextBlock[]) |
visitContent() | Procházejte obsah stránky a emitujte události znaků/obrázků/cest s původem |
GlyphEvent | Jeden umístěný znak: text, quad, fontSize, color, mcid, artifact |