CamlPDF project is an OCaml library for reading, writing and manipulating Adobe portable document files. It is presented as a literate program in the manner of Knuth. Since this is an implementation of someone else's technology (unlike the rest of our work, which is new), we have decided to release it for wider use.
CamlPDF consists of a set of low level modules for representing, reading and writing the basic structure of PDF, together with an initial attempt at a higher level API.
CamlPDF is released under a BSD licence with special exceptions. See the LICENCE file in the source for details.
Here are some key features of "CamlPDF":
· Support for PDF versions 1.0-1.7;
· Large file support: 64-bit file handles and fully tail-recursive;
· Lazy data reading, lexing and parsing - Optionally reads and processes data only when it's required;
· Standard build depends only on zlib.
· Support for encrypted documents;
· External streams and embedded files;
· Writing support simplistic (no linearisation).
· Utility (generic functions)
· Io (generic I/O)
· Pdf (basic data types)
· Pdfwrite (write to file)
· Pdfcodec (compression and decompression)
· Pdfread (lexing and parsing)
· Pdfpages (lexing and parsing of graphics streams)
· Pdfdoc (document-level functions)
· Pdffun (PDF function parsing and evaluation)
What's New in This Release: [ read full changelog ]
· The biggest change is that this release now compiles with Microsoft F Sharp as well as with OCaml.
· There are several new modules.
· This release is generally about a third faster than the last one, due to profiling under .NET.
· Many bugfixes are included, and extra facilities for dealing with malformed PDF files were added.