pdfcpu: github.com/pdfcpu/pdfcpu/pkg/filter Index | Files

package filter

import "github.com/pdfcpu/pdfcpu/pkg/filter"

Package filter contains PDF filter implementations.


Package Files

ascii85Decode.go asciiHexDecode.go ccittDecode.go filter.go flateDecode.go lzwDecode.go paeth.go runLengthDecode.go


const (
    ASCII85   = "ASCII85Decode"
    ASCIIHex  = "ASCIIHexDecode"
    RunLength = "RunLengthDecode"
    LZW       = "LZWDecode"
    Flate     = "FlateDecode"
    CCITTFax  = "CCITTFaxDecode"
    JBIG2     = "JBIG2Decode"
    DCT       = "DCTDecode"
    JPX       = "JPXDecode"

PDF defines the following filters.

const (
    PredictorNo      = 1  // No prediction.
    PredictorTIFF    = 2  // Use TIFF prediction for all rows.
    PredictorNone    = 10 // Use PNGNone for all rows.
    PredictorSub     = 11 // Use PNGSub for all rows.
    PredictorUp      = 12 // Use PNGUp for all rows.
    PredictorAverage = 13 // Use PNGAverage for all rows.
    PredictorPaeth   = 14 // Use PNGPaeth for all rows.
    PredictorOptimum = 15 // Use the optimum PNG prediction for each row.

PDF allows a prediction step prior to compression applying TIFF or PNG prediction. Predictor algorithm.

const (
    PNGNone    = 0x00
    PNGSub     = 0x01
    PNGUp      = 0x02
    PNGAverage = 0x03
    PNGPaeth   = 0x04

For predictor > 2 PNG filters (see RFC 2083) get applied and the first byte of each pixelrow defines the prediction algorithm used for all pixels of this row.


var (

    // ErrUnsupportedFilter signals an unsupported filter type.
    ErrUnsupportedFilter = errors.New("pdfcpu: filter not supported")

func List Uses

func List() []string

List return the list of all supported PDF filters.

type Filter Uses

type Filter interface {
    Encode(r io.Reader) (*bytes.Buffer, error)
    Decode(r io.Reader) (*bytes.Buffer, error)

Filter defines an interface for encoding/decoding buffers.

func NewFilter Uses

func NewFilter(filterName string, parms map[string]int) (filter Filter, err error)

NewFilter returns a filter for given filterName and an optional parameter dictionary.

Package filter imports 10 packages (graph) and is imported by 4 packages. Updated 2019-12-21. Refresh now. Tools for package owners.