package camlpdf

  1. Overview
  2. Docs

Encoding and Decoding PDF Streams

Currently supported:

  • Decoders: ASCIIHexDecode, ASCII85Decode, FlateDecode, LZWDecode, RunLengthDecode.
  • Encoders: ASCIIHexDecode, ASCII85Decode, FlateDecode, RunLengthDecode.
  • Decode predictors: PNG (all), TIFF (8-bit only).

Types

type encoding =
  1. | ASCIIHex
  2. | ASCII85
  3. | RunLength
  4. | Flate

Supported encodings.

type predictor =
  1. | TIFF2
  2. | PNGNone
  3. | PNGSub
  4. | PNGUp
  5. | PNGAverage
  6. | PNGPaeth
  7. | PNGOptimum

Predictors.

exception Couldn'tDecodeStream of string

There was bad data.

exception DecodeNotSupported of string

CamlPDF doesn't support this encoding or its predictor.

Encoding

val encode_pdfstream : Pdf.t -> encoding -> ?only_if_smaller:bool -> ?predictor:predictor -> ?predictor_columns:int -> Pdf.pdfobject -> unit

Encode a PDF stream with an encoding. The only predictor supported is PNGUp.

Decoding

val decode_pdfstream : Pdf.t -> Pdf.pdfobject -> unit

Given a document and stream, decode. The pdf document is updated with the decoded stream. May raise either of the exceptions above.

val decode_pdfstream_onestage : Pdf.t -> Pdf.pdfobject -> unit

Given a document and stream decode just one stage. May raise either of the exceptions above.

val decode_pdfstream_until_unknown : Pdf.t -> Pdf.pdfobject -> unit

Given a document and stream decode until there's an unknown decoder. May raise Couldn'tDecodeStream.

val decode_from_input : Pdfio.input -> Pdf.pdfobject -> Pdfio.bytes option

Given a Pdfio.input with pointer at the first byte and an inline image stream dictionary, decode the first decoder and its predictor. Return the data, or None if this decoder isn't supported but the data pointer has been left in the right place. The exceptions above can both be raised, in the case of bad data or a completely unknown encoding.

Low level functionality

val flate_level : int ref

Setting this changes globally the FlateDecode compression level. Default 6.

val encode_flate : Pdfio.bytes -> Pdfio.bytes

Encode data in FlateDecode.

val decode_flate : Pdfio.bytes -> Pdfio.bytes

Decode data in FlateDecode.

val debug : bool ref

Setting this boolean prints some debug information.

OCaml

Innovation. Community. Security.