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 Sie visitContent() mit einem glyph Handler, 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 /Artifact und nicht als echten Inhalt kennzeichnet.
  • GlyphEvent.mcid verknü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 zu visitContent(), wenn Sie Details pro Glyph benötigen, die GetStructuredText() nicht bereitstellt.

Häufige Probleme

IssueCauseFix
Page.GetText() fehlt Text, der sichtbar auf der Seite istDer Text wurde als Vektorpfade oder Bild gezeichnet, anstatt mit echten Glyph-Show-OperatorenVerwenden 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östGlyphEvent.artifact wurde nicht überprüftÜberspringen Sie Ereignisse, bei denen e.artifact true ist
Extrahierter Text ist außerhalb der visuellen LesereihenfolgeEinfaches GetText()-Assembly rekonstruiert das mehrspaltige Layout nichtVerwenden 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/MethodeBeschreibung
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
GlyphEventEin positioniertes Glyph: text, quad, fontSize, color, mcid, artifact

Siehe auch

 Deutsch