CamlPDF
This is CamlPDF, an OCaml library for reading, writing and
manipulating Adobe portable document files.
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.
CamlPDF forms the basis of our PDF Command-line Toolkit
and .NET PDF Toolkit, our PDF Editor for Mac OS X and the PDF import for a major commercial vector graphics
package.
Features
- 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;
- Depends only on zlib.
- Cross compiles with Microsoft F# to build a .NET DLL
Notable Omissions
Modules
| Utility | Generic functions |
| Pdfio | Generic I/O |
| Transform | Affine transforms in two dimensions |
| Units | Units and unit conversion |
| Paper | Media sizes |
| Pdf | Basic data types |
| Pdfcrypt | Encryption / Decryption |
| Pdfwrite | Write to file |
| Pdfcodec | Compression and decompression |
| Pdfread | Lexing and parsing |
| Pdfpages | Lexing and parsing of graphics streams |
| Pdfdoc | Document-level functions |
| Pdfannot | Annotations |
| Pdffun | PDF function parsing and evaluation | Some types of function missing |
| Pdfspace | Colour spaces | Some types of colourspace missing |
| Pdfimage | Image extraction | Incomplete and unsupported |
| Fonttables / Glyphlist | Ancilliary font support |
| Pdftext | Fonts and text extraction | Text extraction incomplete |
| Pdfgraphics | Structured Graphics | Incomplete and unsupported |
| Pdfshapes | Basic shapes |
| Pdfdate | Representing and parsing PDF dates |
| Pdfmarks | Bookmarks | Incomplete and unsupported |
| CFF | Type 1 fonts | Incomplete and unsupported |
Examples
- Pdfhello (create a Hello World PDF)
- Pdfmerge (merge several files by concatenation)
- Pdfdecomp (decompress all streams in a file)
- Pdfdraft (replace images to produce a draft document)
- Pdftest (read, decompress, recompress and write a PDF)
- Pdfdecrypt (decrypt an encrypted PDF)
Download
Version 0.5
source code and online documentation.
Earlier versions: Version 0.4 | Version 0.3 | Version 0.2 | Version 0.1
Contact
By email
PDF Solutions
We can supply Custom PDF tools.
Other software
Proper pages for these coming soon:
Camlpy - Ocaml / Python integration
Storing colours in 31 bits
A Caml Interface for the General Polygon Clipper
GraphPDF: A PDF Version of OCaml's Graphics Module
Page last updated: 3rd January 2011
|