Pajdeg  0.2.2
Pajdeg
Pajdeg PDF mutation library

Introduction

Pajdeg is a C library for modifying existing PDF documents by passing them through a stream with tasks assigned based on object ID's, pages, object types, or similar.

Note
Unless you need to, using a wrapper is recommended, as the core C library is fairly low level.

Typical usage involves three things:

Tasks can be chained together, and appended to the stream at any time through other tasks, with the caveat that the requested object has not yet passed through the stream.

Features

Pajdeg supports the following notable PDF related features:

More sophisticated functionality (such as manipulating annotations) can be found in wrappers .

Quick Start

To get started with Pajdeg, you may want to

Helping out

One of the design goals with Pajdeg is that it should have minimal dependencies and be as broadly available as possible. As a consequence of this, some core components have been implemented in a rather crude form and are in desperate need of optimizing, in particular

Beyond the gorey detail stuff, there's also a big need for more, better and/or improved wrappers for other languages!

And finally, especially if you're not technically inclined but still want to help out, throwing lots and lots of different PDF's at the library and making sure it does the right thing is crucial to taking it to the next step, ensuring it is 100% compatible and functional with all well-formed (and some malformed) PDF's out there.

Dependencies

Pajdeg has very few dependencies. While the aim was to have none at all, certain PDFs require compression to function at all.

Beyond this, Pajdeg does not contain any other dependencies beyond a relatively modern C compiler.

libz

Pajdeg can use libz for stream compression. Some PDFs, in particular PDFs made using the 1.5+ specification, require libz support to be parsed via Pajdeg, because the cross reference table can be a compressed object stream. If support for this is not desired, libz support can be disabled by removing the PD_SUPPORT_ZLIB definition in PDDefines.h.

Integrating

Adding Pajdeg to your project can be done by either compiling the static library using the provided Makefile, and putting the library and the .h files into your project, or by adding the .c and .h files directly.