Inhaltsstrom-Operatoren

Dieser Leitfaden zeigt, wie man PDF-Content-Stream-Operatoren mit ContentStreamParser und ContentStreamBuilder in Aspose.PDF FOSS für Java zugreift und manipuliert. Sie lernen, rohe Seiteninhalt-Bytes zu lesen und den Parser zu verwenden, um Zeichenbefehle zu untersuchen.

Content-Streams

Der PDF-Seiteninhalt wird als Sequenz von Operatoren in einem Content-Stream kodiert. Jeder Page bietet Zugriff auf seine Inhaltsoperatoren über die getContents()-Eigenschaft.

ContentStreamParser

ContentStreamParser analysiert die rohen Content-Stream-Bytes in Operator-Objekte und ermöglicht die programmgesteuerte Untersuchung von Zeichenbefehlen der Seite. Übergeben Sie die rohen Bytes von page.getContents().toByteArray() an den Parser-Konstruktor:

try (Document doc = new Document("input.pdf")) {
    PageCollection pages = doc.getPages();
    Page page = pages.get(1);
    byte[] contentBytes = page.getContents().toByteArray();
    ContentStreamParser parser = new ContentStreamParser(contentBytes);
    // Iterate over parsed operators
}

ContentStreamBuilder

ContentStreamBuilder erstellt neue Content-Streams zum Einbetten in ein Page. Verwenden Sie ContentStreamBuilder, wenn Sie Seiteninhalt programmgesteuert erstellen, anstatt einen bestehenden Stream zu ändern. Nach dem Aufbau des Streams weisen Sie ihn der Seite zu und speichern das Dokument.

Operatorreferenz

PDF-Inhaltsstrom-Operatoren sind in ISO 32000-1:2008, Tabelle A.1, definiert. Häufige Operatoren umfassen Textoperatoren (BT, ET, Tf, Tj), Grafikzustands-Operatoren (q, Q, cm) und Pfad-Operatoren (m, l, h, f, S).

Inhaltsstrom-Operatoren folgen der PDF-Spezifikation (ISO 32000-1:2008, §8). Verwenden Sie ContentStreamParser, um über die Operatoren in einem bestehenden Strom zu iterieren.

Zugriff auf rohen Seiteninhalt

Um die rohen Bytes eines Seiten-Inhaltsstroms zu lesen, rufen Sie page.getContents().toByteArray() auf. Die Bytes können dann inspiziert, dekodiert oder an ContentStreamParser übergeben werden:

try (Document doc = new Document("input.pdf")) {
    PageCollection pages = doc.getPages();
    Page page = pages.get(1);
    byte[] contentBytes = page.getContents().toByteArray();
    System.out.println("Content stream size: " + contentBytes.length + " bytes");
}

Siehe auch

 Deutsch