cef49eff22 | ||
---|---|---|
.. | ||
.gitignore | ||
LICENSE | ||
README.md | ||
go.mod | ||
reader.go | ||
writer.go |
README.md
Note
- This is a consolidated version of compress/lzw that supports GIF, TIFF and PDF.
- Please refer to this golang proposal for details.
- github.com/hhrutter/tiff uses this package to extend x/image/tiff.
- pdfcpu uses this package for processing PDFs with embedded TIFF images.
Background
- PDF's LZWDecode filter comes with the optional parameter
EarlyChange
. - The type of this parameter is
int
and the defined values are 0 and 1. - The default value is 1.
This parameter implies two variants of lzw. (See the PDF spec).
- the algorithm implied by EarlyChange value 1
- provides both Reader and Writer.
- the algorithm implied by EarlyChange value 0
- provides a Reader, lacks a Writer
In addition PDF expects a leading clear_table
marker right at the beginning
which is not something compress/lzw takes into account.
There are numerous PDF Writers out there and for arbitrary PDF files using the LZWDecode filter the following can be observed:
- Some PDF writers do not write the EOD (end of data) marker.
- Some PDF writers do not write the final bits after the EOD marker.
Goal
An extended version of compress/lzw with reliable support for GIF, TIFF and PDF.