CamlPDF 0.5 Released

I’m pleased to announce the CamlPDF 0.5 release, which includes a couple of new modules (Pdfdate for date manipulation, Pdfannot for annotations and Pdfmarks for bookmarks). Almost every other module has been improved in some way.

Download it here:

More importantly, I’ve finally found time to write a short introduction to CamlPDF, which lets you try some basic work within the OCaml top level:

There have been some API modifications which are not backward compatible, but the changes to your source are easy to make. This should be the last release with such changes.

There is now a CamlPDF mailing list:

Posted in Uncategorized | Tagged , , | Leave a comment

PDF Command Line Tools 1.5

We’ve just released the latest version of our PDF Command Line Tools for Windows, Mac and Linux. The tools provide editing of PDF files including merging, splitting, adding text, compressing, encrypting etc.

New Features:

  • Detect missing fonts and low resolution images for pre flight
  • Remove embedded fonts for file compression
  • Add text diagonally, and optionally relative to cropbox rather than media box
  • Copes with malformed PDF files more robustly
  • Many speed improvements, especially with large files

A new version of the CamlPDF libraries to reflect the changes with be released soon.

Full details and free trial here.

Posted in Uncategorized | Leave a comment

PDF Editor for Mac OS X

Our new PDF Editor for the mac is out – get it here.

  • Merge, split and rearrange files
  • Edit and manage bookmarks
  • Scale, rotate and crop pages
  • Add text, page numbers and dates and stamp watermarks
  • Edit document metadata
  • Manage PDF Attachments

Technical note: Written in OCaml and Objective C with Cocoa.

Thanks to all the beta testers – your license codes will be sent out shortly.

Posted in Uncategorized | Tagged | Leave a comment

Beta Testing with MacDeveloper

We’re well into the first testing cycle for Proview now. We’re using MacDeveloper, which automates the process somewhat, and has a group of about 8000 people signed up for testing, giving them discounts or free copies of the software when they’ve submitted enough acceptable bug reports to the ticketing system.

MacDeveloper runs with its own ticketing system, but the data can be exported to CSV. Haven’t worked out how to get it into bugzilla yet, though.

I’m happy with how few crash/freeze bugs have been reported, and the complaints about the interface seem to crystallize around a couple of issues – so we’ll re-jig it before the next release.

Here and here are a couple of articles on contemporary beta testing.

Posted in Uncategorized | Tagged , | Leave a comment

Last Call for Beta Testers

After some unexpectedly intricate work involving encryption, we’re almost ready for the closed Beta Test of our new PDF editor for OS X, written in OCaml.

Anyone wishing to join the test should email us via the form on the front page at

Posted in Uncategorized | Tagged | Leave a comment

Caml-based OS X PDF Editor – Beta testers wanted

I’m beginning a closed beta test of our new PDF Editor for Mac OS X – see posts below for details.

If you’d like to be included, please use the contact form on our front page, giving if possible a short explanation of the kinds of things you might do with such a product. Feel free to pass on this invitation to friends who might be interested.

Posted in Uncategorized | Tagged | Leave a comment

Another Quick Shot of the Desktop Product

Not very mac-like or slick yet, but the core functionality is almost there. The architecture for error handling and progress-bars between Cocoa and Ocaml is now complete.

PDF Editor for OS X

Launch sometime later this year.

Posted in Uncategorized | Tagged | Leave a comment

Linking OCaml code into Cocoa

Here’s a screenshot of an early version of our next product, a PDF editor for Mac OS X:


The architecture is:

  • A plain C wrapper around the higher-level interface to the CamlPDF library (the same interface used by our command line tools)
  • An Objective-C cocoa program using call-backs to Ocaml through the wrapper library
  • Callbacks from Ocaml into C to deal with error reporting and progress-bar updates.
  • CamlPDF is used for all the PDF modification. OS X Pdfkit is used for displaying the PDF and thumbnails in the document window.

The C wrapper will also be used to release a plain C version of our PDF tools to go with the .NET and command line versions, but not until the bugs are ironed out by using the same code to write the OS X product.

It ought to be possible to produce a Windows version of the product using the .NET version of CamlPDF at some point in the future.

Posted in Uncategorized | Tagged | Leave a comment

An OCaml Interface for GPC

Alan Murta’s General Polygon Clipper is the standard way of finding the intersection, union etc. of polygons.

I wrote an Ocaml interface for this many years ago for a dead project, but I’ve only just got around to packaging it up for release. You can get it here.

Posted in Uncategorized | Tagged | Leave a comment

A PDF Version of OCaml’s Graphics Module

I’ve just completed a PDF version of the Graphics module from the standard OCaml distribution, based on CamlPDF and following the conventions of Pierre Weis’ Postscript version GraphPS.

The implementation is mostly straightforward, but there are are some complications – some shapes (arcs etc.) need to be approximated from bezier curves sections, since they don’t exist as primitives in PDF (Oddly, circles and arcs are primitive in PostScript).

In common with GraphPS, it doesn’t yet support the bitmapped image parts of the Graphics module, though that would be easy to add.

Here’s a particularly luridly coloured example (source PDF here):

Example GraphPDF Output

GraphPDF will ship with the next release of CamlPDF.

What might be nice for the future would be a single module shipping with OCaml which can be used as the ordinary graphics module would be, and then dump the result to PDF when required.

We’d need to extend the graphics module with the ability to optionally keep a list of all commands executed thus far, but that’s about all. Getting the PDF output into Ocaml would require some license work on CamlPDF, though, so won’t happen yet.

Posted in Uncategorized | Tagged | Leave a comment