Text
Text
Diese Seite behandelt das Auslesen von Text aus einer Seite auf drei Detailebenen: Plaintext, strukturierte Layoutblöcke und einzelne positionierte Glyphen. Zum Schreiben von Text auf eine Seite siehe Core API and Core API.
Extrahieren von Klartext
Page.GetText() gibt den zusammengefügten Klartext der Seite in Lesereihenfolge zurück. Es ist die einfachste Methode, um zu bestätigen, welchen Text eine Seite tatsächlich enthält – zum Beispiel nach dem Flatten eines Feldes oder dem Anwenden einer Redaktion.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Strukturierter Text
Page.GetStructuredText() extrahiert positionierten Text, gruppiert in Zeilen (nach Grundlinie) und absatzähnliche Blöcke (nach vertikalem Abstand und linker Kantenausrichtung), und gibt TextBlock[] zurück – nützlich, wenn Sie ein Layout benötigen und nicht nur einen flachen String.
Introspektion auf Glyphenebene
visitContent(doc, page, visitor) durchläuft die Inhaltsströme einer Seite — einschließlich Form XObjects — und ruft den passenden Handler auf visitor für jedes Glyph, Bild oder Pfad, dem es begegnet. Der glyph Handler erhält ein GlyphEvent: das text des Glyphs, seinen Geräte-Raum quad, fontSize, color und Provenienz-Felder wie mcid (sein umschließendes Markierungs-Inhalts-Element, falls vorhanden) und artifact (wahr, wenn es innerhalb eines /Artifact-Bereichs gezeichnet wird).
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);Tipps und bewährte Verfahren
- Verwenden Sie
Page.GetText()für eine schnelle Anwesenheits-/Abwesenheitsprüfung; verwenden SievisitContent()mit einemglyphHandler, wenn Sie die genaue Position, Schriftgröße oder Farbe jedes Glyphs benötigen. - Prüfen Sie
GlyphEvent.artifact, um dekorativen Inhalt (Seitenmöbel, Hintergründe) zu überspringen, den ein getaggtes Dokument als/Artifactund nicht als echten Inhalt kennzeichnet. GlyphEvent.mcidverknüpft eine Glyphe zurück zu ihrem umschließenden Strukturelement, wenn das Dokument getaggt ist — kombiniere mit Structure um von einer Glyphe zu ihrem logischen Element zu navigieren.Page.GetStructuredText()gruppiert Glyphs für Sie in Blöcke; greifen Sie nur dann direkt zuvisitContent(), wenn Sie Details pro Glyph benötigen, dieGetStructuredText()nicht bereitstellt.
Häufige Probleme
| Issue | Cause | Fix |
|---|---|---|
Page.GetText() fehlt Text, der sichtbar auf der Seite ist | Der Text wurde als Vektorpfade oder Bild gezeichnet, anstatt mit echten Glyph-Show-Operatoren | Verwenden Sie visitContent() mit einem path / image-Handler, um zu bestätigen, welcher Inhaltstyp es tatsächlich gezeichnet hat |
visitContent()’s glyph handler wird bei dekorativem Hintergrundtext ausgelöst | GlyphEvent.artifact wurde nicht überprüft | Überspringen Sie Ereignisse, bei denen e.artifact true ist |
| Extrahierter Text ist außerhalb der visuellen Lesereihenfolge | Einfaches GetText()-Assembly rekonstruiert das mehrspaltige Layout nicht | Verwenden Sie Page.GetStructuredText(), das Text in layout-bewusste Blöcke gruppiert |
FAQ
Was ist der Unterschied zwischen GetText und GetStructuredText?
GetText() gibt einen flachen String des zusammengefügten Textes der Seite zurück. GetStructuredText() gibt TextBlock[] zurück — Text, der nach Grundlinie und Layout in Zeilen und absatzähnliche Blöcke gruppiert ist, nützlich, wenn die Position wichtig ist.
Wie erhalte ich die genaue Position und Schriftgröße jedes Zeichens?
Rufen Sie visitContent(doc, page, { glyph: (e) => ... }) auf. Jede GlyphEvent trägt das text des Glyphs, den Geräte-Raum quad, fontSize, color und die Grundlinie angle.
Kann ich erkennen, ob ein Textabschnitt echter Inhalt oder Dekoration ist?
Ja — GlyphEvent.artifact ist true, wenn das Glyph innerhalb eines /Artifact Markierungs-Inhalts-Bereichs gezeichnet wurde, dieselbe Unterscheidung, die Document.AutoTag() verwendet, wenn entschieden wird, was getaggt wird.
Sieht die Textextraktion Inhalte innerhalb von Form-XObjects?
Ja — visitContent() betritt Form-XObjects im Rahmen seiner Traversierung, sodass Glyphen, die über ein wiederverwendetes Formular gezeichnet werden, weiterhin besucht werden.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
Page.GetText() | Der zusammengefügte Klartext der Seite in Lesereihenfolge |
Page.GetStructuredText() | Text, der in Zeilen und absatzähnliche Blöcke gruppiert ist (TextBlock[]) |
visitContent() | Durchlaufen Sie den Inhalt einer Seite und geben Sie Glyphen-/Bild-/Pfad-Ereignisse mit Herkunft aus |
GlyphEvent | Ein positioniertes Glyph: text, quad, fontSize, color, mcid, artifact |