Pajdeg
0.2.2
Pajdeg
|
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.
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.
Pajdeg supports the following notable PDF related features:
More sophisticated functionality (such as manipulating annotations) can be found in wrappers .
To get started with Pajdeg, you may want to
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.
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.
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.
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.