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");
}