Operátory obsahového proudu

Operátory obsahového proudu

Tento průvodce ukazuje, jak přistupovat k operátorům proudu obsahu PDF a manipulovat s nimi pomocí ContentStreamParser a ContentStreamBuilder v Aspose.PDF FOSS pro Java. Naučíte se číst surové bajty obsahu stránky a použít parser k inspekci kreslících příkazů.

Proudy obsahu

Obsah stránky PDF je kódován jako sekvence operátorů v proudu obsahu. Každý Page poskytuje přístup k jeho operátorům obsahu prostřednictvím vlastnosti getContents().

ContentStreamParser

ContentStreamParser parsuje surové bajty proudu obsahu do objektů operátorů, což umožňuje programovou inspekci kreslících příkazů stránky. Předávejte surové bajty z page.getContents().toByteArray() konstruktoru parseru:

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 vytváří nové proudy obsahu pro vložení do Page. Použijte ContentStreamBuilder při programovém sestavování obsahu stránky místo úpravy existujícího proudu. Po vytvoření proudu jej přiřaďte zpět ke stránce a uložte dokument.

Reference operátorů

Operátory proudu obsahu PDF jsou definovány v ISO 32000-1:2008, tabulka A.1. Mezi běžné operátory patří textové operátory (BT, ET, Tf, Tj), operátory grafického stavu (q, Q, cm) a operátory cesty (m, l, h, f, S).

Operátory proudu obsahu se řídí specifikací PDF (ISO 32000-1:2008, §8). Použijte ContentStreamParser k iteraci přes operátory v existujícím proudu.

Přístup k surovému obsahu stránky

Pro načtení surových bajtů proudu obsahu stránky zavolejte page.getContents().toByteArray(). Tyto bajty pak lze zkontrolovat, dekódovat nebo předat do ContentStreamParser:

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

Viz také:

 Čeština