Inhoudstroomoperatoren

Inhoudstroomoperatoren

Deze gids laat zien hoe je PDF-inhoudsstroomoperatoren kunt benaderen en manipuleren met ContentStreamParser en ContentStreamBuilder in Aspose.PDF FOSS voor Java. Je leert ruwe paginainhoudbytes lezen en de parser gebruiken om tekenopdrachten te inspecteren.

Inhoudsstromen

PDF-paginainhoud wordt gecodeerd als een reeks operatoren in een inhoudsstroom. Elke Page biedt toegang tot zijn inhoudsoperatoren via de getContents() eigenschap.

ContentStreamParser

ContentStreamParser parseert de ruwe inhoudsstroombytes naar operatorobjecten, waardoor programmatische inspectie van paginatekenopdrachten mogelijk is. Geef de ruwe bytes van page.getContents().toByteArray() door aan de parser-constructor:

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 maakt nieuwe inhoudsstromen aan voor insluiting in een Page. Gebruik ContentStreamBuilder bij het programmatisch bouwen van paginainhoud in plaats van het wijzigen van een bestaande stroom. Na het bouwen van de stroom, wijs deze opnieuw toe aan de pagina en sla het document op.

Operatorreferentie

PDF-inhoudsstroomoperatoren zijn gedefinieerd in ISO 32000-1:2008, Tabel A.1. Veelvoorkomende operatoren omvatten tekstoperatoren (BT, ET, Tf, Tj), grafische-toestand-operatoren (q, Q, cm) en pad-operatoren (m, l, h, f, S).

Inhoudsstroomoperatoren volgen de PDF-specificatie (ISO 32000-1:2008, §8). Gebruik ContentStreamParser om over de operatoren in een bestaande stroom te itereren.

Toegang tot ruwe paginainhoud

Om de ruwe bytes van een paginainhoudsstroom te lezen, roep je page.getContents().toByteArray() aan. De bytes kunnen vervolgens worden geïnspecteerd, gedecodeerd of doorgegeven aan 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");
}

Zie ook

 Nederlands