Text
Text
Ez az oldal a szöveg visszaolvasását tárgyalja egy oldalról három részletességi szinten: egyszerű szöveg, strukturált elrendezési blokkok és egyedi pozicionált glyph-ek. A szöveg írásához egy oldalra lásd Core API and Core API.
Egyszerű szöveg kinyerése
Page.GetText() visszaadja az oldal összeállított egyszerű szövegét olvasási sorrendben. Ez a legegyszerűbb módja annak, hogy megerősítsük, milyen szöveg található valójában az oldalon — például egy mező laposítását vagy egy redakció alkalmazását követően.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Strukturált szöveg
Page.GetStructuredText() kinyeri az elhelyezett szöveget, sorokba (alapvonal szerint) és bekezdés-szerű blokkokba (függőleges hézag és baloldali igazítás alapján) csoportosítva, és TextBlock[]-t ad vissza — hasznos, ha elrendezésre van szükség, nem csak egy egyszerű karakterláncra.
Glif-szintű introspekció
visitContent(doc, page, visitor) bejárja egy oldal tartalom-áramait — beleértve a Form XObject-eket is — és minden megtalált glif, kép vagy útvonal esetén meghívja a megfelelő kezelőt a visitor számára. A glyph kezelő egy GlyphEvent-t kap: a glif text-ját, annak eszköz-térbeli quad-ét, fontSize-t, color-t, valamint a származási mezőket, mint például a mcid (a körülötte lévő jelölt tartalom elem, ha van) és a artifact (igaz, ha egy /Artifact környezeten belül rajzolt).
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);Tippek és bevált gyakorlatok
- Használja a
Page.GetText()-t egy gyors jelenlét/hiány ellenőrzéshez; használja avisitContent()-t egyglyphkezelővel, amikor minden glif pontos pozíciójára, betűméretére vagy színére van szükség. - Ellenőrizze a
GlyphEvent.artifact-t, hogy kihagyja a díszítő tartalmakat (oldalkellékek, háttérképek), amelyeket egy címkézett dokumentum/Artifact-ként jelöl, a valódi tartalom helyett. GlyphEvent.mcidvisszahivatkozik egy glyphet a körülötte lévő struktúraelemre, amikor a dokumentum címkézett — kombináld a Structure a glyphből a logikai eleméig való navigáláshoz.- A
Page.GetStructuredText()glifeket blokkokba csoportosít Önnek; csak akkor nyúljon közvetlenül avisitContent()-hez, ha olyan glifenkénti részletekre van szüksége, amelyeket aGetStructuredText()nem tesz elérhetővé.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
Page.GetText() hiányzik a szöveg, amely látható az oldalon | A szöveget vektorúton vagy képként rajzolták, nem valós glyph-show operátorokkal | Használja a visitContent() egy path / image kezelővel, hogy megerősítse, melyik tartalomtípus rajzolta ténylegesen |
visitContent() glyph kezelője dekoratív háttérszöveg esetén aktiválódik | GlyphEvent.artifact nem lett ellenőrizve | Hagyja ki az eseményeket, ahol a e.artifact true |
| A kinyert szöveg nincs a vizuális olvasási sorrendben | A tiszta GetText() összeállítás nem állítja helyre a többoszlopos elrendezést | Használd a Page.GetStructuredText() elemet, amely a szöveget elrendezés-tudatos blokkokba csoportosítja |
FAQ
Mi a különbség a GetText és a GetStructuredText között?
GetText() egy lap összesített szövegének egy lapos karakterláncát adja vissza. GetStructuredText() TextBlock[] — a szöveg sorokba és bekezdés-szerű blokkokba csoportosítva, alapvonal és elrendezés szerint, hasznos, ha a pozíció számít.
Hogyan tudom lekérni az egyes karakterek pontos pozícióját és betűméretét?
Hívja a visitContent(doc, page, { glyph: (e) => ... }). Minden GlyphEvent tartalmazza a glif text-ját, az eszköz-terület quad-t, fontSize-t, color-t és az alapvonal angle-t.
Meg tudom állapítani, hogy egy szövegrész valós tartalom vagy díszítés?
Igen — GlyphEvent.artifact true, ha a glif egy /Artifact jelölt-tartalom hatókörén belül lett rajzolva, ugyanaz a megkülönböztetés, amit a Document.AutoTag() használ a címkézés eldöntésekor.
A szövegkinyerés látja a Form XObject-ek belsejében lévő tartalmat?
Igen — a visitContent() belép a Form XObject-ekbe a bejárás részeként, így a újrahasznált űrlapon keresztül rajzolt glifek továbbra is felkerülnek.
API Reference Összefoglaló
| Osztály/Módszer | Leírás |
|---|---|
Page.GetText() | Az oldal összegyűjtött egyszerű szövege, olvasási sorrendben |
Page.GetStructuredText() | Szöveg, amely sorokba és bekezdés-szerű blokkokba van csoportosítva (TextBlock[]) |
visitContent() | Bejárja egy oldal tartalmát, és eredetiséggel ellátott glyph/kép/útvonal eseményeket bocsát ki |
GlyphEvent | Egy pozícionált glif: text, quad, fontSize, color, mcid, artifact |