Text
Text
Deze pagina behandelt het uitlezen van tekst uit een pagina, op drie detailniveaus: platte tekst, gestructureerde lay-outblokken en individuele gepositioneerde glyphs. Voor het schrijven van tekst op een pagina, zie Core API and Core API.
Platte tekst extraheren
Page.GetText() retourneert de samengestelde platte tekst van de pagina, in leesvolgorde. Het is de eenvoudigste manier om te bevestigen welke tekst een pagina daadwerkelijk bevat — bijvoorbeeld na het flattenen van een veld of het toepassen van een redactie.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Gestructureerde tekst
Page.GetStructuredText() extraheert gepositioneerde tekst gegroepeerd in lijnen (per basislijn) en alinea-achtige blokken (per verticale tussenruimte en uitlijning van de linkerrand), en retourneert TextBlock[] — handig wanneer je lay-out nodig hebt, niet alleen een platte tekenreeks.
Introspectie op glyph-niveau
visitContent(doc, page, visitor) doorloopt de contentstreams van een pagina — inclusief Form XObjects — en roept de bijbehorende handler aan op visitor voor elk glyph, afbeelding of pad dat hij tegenkomt. De glyph handler ontvangt een GlyphEvent: de text van het glyph, zijn device-space quad, fontSize, color, en provenance-velden zoals mcid (het omvattende marked-content element, indien aanwezig) en artifact (waar wanneer getekend binnen een /Artifact scope).
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);Tips en best practices
- Gebruik
Page.GetText()voor een snelle aanwezigheids-/afwezigheidscontrole; gebruikvisitContent()met eenglyphhandler wanneer je de exacte positie, lettergrootte of kleur van elk glyph nodig hebt. - Controleer
GlyphEvent.artifactom decoratieve inhoud (pagina-meubilair, achtergronden) over te slaan die een getagd document markeert als/Artifactin plaats van echte inhoud. GlyphEvent.mcidverbindt een glyph met zijn omvattende structuurelement wanneer het document getagd is — combineer met Structure om van een glyph naar zijn logische element te lopen.Page.GetStructuredText()groepeert glyphs voor jou in blokken; gebruikvisitContent()rechtstreeks alleen wanneer je per-glyph detail nodig hebt datGetStructuredText()niet blootlegt.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
Page.GetText() mist tekst die zichtbaar op de pagina staat | De tekst werd getekend als vectorpaden of een afbeelding in plaats van echte glyph-show operators | Gebruik visitContent() met een path / image handler om te bevestigen welk contenttype het daadwerkelijk heeft getekend |
De glyph handler van visitContent() wordt geactiveerd voor decoratieve achtergrondtekst | GlyphEvent.artifact was niet gecontroleerd | Sla gebeurtenissen over waar e.artifact true is |
| De geëxtraheerde tekst staat buiten de visuele leesvolgorde | Eenvoudige GetText() assemblage reconstrueert de meerkolomsindeling niet | Gebruik Page.GetStructuredText(), die tekst groepeert in lay-outbewuste blokken |
FAQ
Wat is het verschil tussen GetText en GetStructuredText?
GetText() retourneert één platte tekenreeks van de samengevoegde tekst van de pagina. GetStructuredText() retourneert TextBlock[] — tekst gegroepeerd in regels en alinea-achtige blokken op basis van basislijn en lay-out, handig wanneer positie belangrijk is.
Hoe krijg ik de exacte positie en lettergrootte van elk teken?
Roep visitContent(doc, page, { glyph: (e) => ... }) aan. Elk GlyphEvent draagt de text van het glyph, apparaat-ruimte quad, fontSize, color en basislijn angle.
Kan ik bepalen of een stuk tekst echte inhoud of decoratie is?
Ja — GlyphEvent.artifact is true wanneer het glyph werd getekend binnen een /Artifact marked-content scope, dezelfde onderscheiding die Document.AutoTag() gebruikt bij het bepalen wat te taggen.
Ziet tekstextractie inhoud binnen Form XObjects?
Ja — visitContent() loopt Form XObjects binnen als onderdeel van zijn traversal, zodat glyphs die via een hergebruikt formulier worden getekend nog steeds worden bezocht.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Page.GetText() | De samengestelde platte tekst van de pagina, in leesvolgorde |
Page.GetStructuredText() | Tekst gegroepeerd in regels en alinea-achtige blokken (TextBlock[]) |
visitContent() | Doorloop de inhoud van een pagina en genereer glyph-/afbeeldings-/pad-events met herkomst |
GlyphEvent | Één gepositioneerde glyph: text, quad, fontSize, color, mcid, artifact |