The CPDF PDF command line tool for editing PDF files. cpdf as an OCaml library
Go to file
John Whitington c9f2a713d5 Working in new Font/FontPack split in Cpdfdraw 2023-07-14 13:57:00 +01:00
compressor more 2023-04-13 16:56:32 +01:00
docsplits Cleaning up 2023-04-13 17:07:55 +01:00
html_manual more 2022-08-19 15:48:56 +01:00
manualimages Finish -draw documentation first draft 2023-06-08 15:06:58 +01:00
old Remove pdfgraphics to old/ 2023-06-13 14:07:34 +01:00
.gitignore more 2017-01-12 19:53:46 +00:00
Changes Generalize fonts 2023-07-12 12:51:20 +01:00
LICENSE more 2023-04-13 16:56:32 +01:00
META Cleaning up 2023-04-13 17:07:55 +01:00
Makefile Remove pdfgraphics to old/ 2023-06-13 14:07:34 +01:00
OCamlMakefile more 2023-03-14 19:57:42 +00:00
README.md Acknowledgments 2023-05-14 17:50:32 +01:00
cpdf.1 Cleaning up 2023-04-13 17:07:55 +01:00
cpdfaddtext.ml Ready for foothills (-add-text -font-ttf) 2023-07-12 16:49:46 +01:00
cpdfaddtext.mli more 2023-05-01 16:19:09 +01:00
cpdfannot.ml Tidying up 2023-06-20 15:31:19 +01:00
cpdfannot.mli more 2023-04-22 16:58:05 +01:00
cpdfattach.ml Use new logger 2023-04-25 13:45:56 +01:00
cpdfattach.mli more 2023-04-16 14:44:34 +01:00
cpdfbookmarks.ml more 2023-04-21 16:22:57 +01:00
cpdfbookmarks.mli Code for cpdflib 2022-01-16 18:39:42 +00:00
cpdfcolours.ml more 2023-06-07 16:35:26 +01:00
cpdfcolours.mli more 2023-06-07 15:39:04 +01:00
cpdfcommand.ml Working in new Font/FontPack split in Cpdfdraw 2023-07-14 13:57:00 +01:00
cpdfcommand.mli demo gone 2021-10-15 17:18:23 +01:00
cpdfcommandrun.ml Return cpdf.top to working order 2022-01-11 19:13:46 +00:00
cpdfcomposition.ml more 2023-04-16 14:44:34 +01:00
cpdfcomposition.mli more 2023-04-13 16:51:11 +01:00
cpdfcoord.ml more 2023-05-02 16:09:10 +01:00
cpdfcoord.mli More on drawing 2022-12-01 17:21:13 +00:00
cpdfcreate.ml Newly-created files get IDs by default 2023-05-09 15:02:59 +01:00
cpdfcreate.mli more 2022-01-13 16:35:03 +00:00
cpdfdebug.ml more 2021-12-21 11:12:52 +00:00
cpdfdebug.mli more 2022-01-13 13:43:23 +00:00
cpdfdraft.ml tidying 2021-12-31 19:33:34 +00:00
cpdfdraft.mli more 2022-01-13 16:35:03 +00:00
cpdfdraw.ml Working in new Font/FontPack split in Cpdfdraw 2023-07-14 13:57:00 +01:00
cpdfdraw.mli Working in new Font/FontPack split in Cpdfdraw 2023-07-14 13:57:00 +01:00
cpdfembed.ml Move collate into cpdfembed, patch up -draw 2023-07-13 14:44:57 +01:00
cpdfembed.mli Move collate into cpdfembed, patch up -draw 2023-07-13 14:44:57 +01:00
cpdferror.ml Split off a little code 2021-10-02 12:22:59 +01:00
cpdferror.mli more 2022-01-13 13:43:23 +00:00
cpdfextracttext.ml more 2022-09-27 19:58:27 +01:00
cpdfextracttext.mli more 2022-09-27 19:58:27 +01:00
cpdffont.ml Use new logger 2023-04-25 13:45:56 +01:00
cpdffont.mli more 2022-01-13 16:35:03 +00:00
cpdfimage.ml Direct PNG output was misinformed 2023-06-14 18:38:26 +01:00
cpdfimage.mli more 2022-01-13 16:35:03 +00:00
cpdfimpose.ml q/Q/BT/ET by data structure 2023-05-09 14:30:30 +01:00
cpdfimpose.mli more 2022-01-13 16:18:54 +00:00
cpdfjpeg.ml more 2022-12-23 13:14:24 +00:00
cpdfjpeg.mli more 2022-12-23 13:14:24 +00:00
cpdfjson.ml Use new logger 2023-04-25 13:45:56 +01:00
cpdfjson.mli more 2023-02-17 15:30:39 +00:00
cpdfmanual.pdf Font documentation fixes 2023-07-13 20:30:06 +01:00
cpdfmanual.tex Font documentation fixes 2023-07-13 20:30:06 +01:00
cpdfmetadata.ml Use new logger 2023-04-25 13:45:56 +01:00
cpdfmetadata.mli more 2023-04-18 14:42:17 +01:00
cpdfocg.ml Correct UTF8 outputs 2022-01-04 17:17:37 +00:00
cpdfocg.mli more 2022-01-13 16:18:54 +00:00
cpdfpad.ml more 2023-05-10 19:11:31 +01:00
cpdfpad.mli more 2022-01-13 16:18:54 +00:00
cpdfpage.ml Disable soft mask work for v2.6 2023-06-21 16:30:33 +01:00
cpdfpage.mli Disable soft mask work for v2.6 2023-06-21 16:30:33 +01:00
cpdfpagelabels.ml more 2022-01-08 16:21:28 +00:00
cpdfpagelabels.mli more 2022-01-13 16:18:54 +00:00
cpdfpagespec.ml more 2023-03-30 13:39:52 +01:00
cpdfpagespec.mli Intial implementation of page labels in ranges 2023-03-13 21:28:03 +00:00
cpdfpng.ml 32bit max_int 2023-06-24 21:21:22 +01:00
cpdfpng.mli First successful PNG output 2023-03-20 21:02:10 +00:00
cpdfposition.ml More positions 2023-04-07 15:31:21 +01:00
cpdfposition.mli More positions 2023-04-07 15:31:21 +01:00
cpdfpresent.ml more 2021-12-17 16:12:03 +00:00
cpdfpresent.mli more 2022-01-13 15:18:21 +00:00
cpdfremovetext.ml more 2023-03-23 19:24:50 +00:00
cpdfremovetext.mli more 2022-09-27 19:58:27 +01:00
cpdfshape.ml Remove pdfgraphics to old/ 2023-06-13 14:07:34 +01:00
cpdfshape.mli Remove pdfgraphics to old/ 2023-06-13 14:07:34 +01:00
cpdfspot.ml more 2021-12-19 13:26:15 +00:00
cpdfspot.mli more 2022-01-13 16:18:54 +00:00
cpdfsqueeze.ml Deprecate -squeeze-no-recompress 2023-06-21 15:38:32 +01:00
cpdfsqueeze.mli Deprecate -squeeze-no-recompress 2023-06-21 15:38:32 +01:00
cpdfstrftime.ml Use new logger 2023-04-25 13:45:56 +01:00
cpdfstrftime.mli stderr unbuffered 2021-07-23 16:26:07 +01:00
cpdftexttopdf.ml First basic truetype subsetter working 2023-07-05 13:38:50 +01:00
cpdftexttopdf.mli more 2022-10-19 13:48:13 +01:00
cpdftoc.ml Move collate into cpdfembed, patch up -draw 2023-07-13 14:44:57 +01:00
cpdftoc.mli more 2022-10-19 15:34:19 +01:00
cpdftruetype.ml Restore proper font cleaving 2023-07-13 16:26:05 +01:00
cpdftruetype.mli Mulltiple subsets 2023-07-06 16:26:33 +01:00
cpdftweak.ml removal of old things 2023-04-12 19:37:30 +01:00
cpdftweak.mli removal of old things 2023-04-12 19:37:30 +01:00
cpdftype.ml -toc done 2023-07-12 15:26:27 +01:00
cpdftype.mli Tidy up cpdftypeset to beign fontpacks 2023-07-10 14:36:34 +01:00
cpdfunicodedata.ml more 2023-04-13 16:56:32 +01:00
cpdfunicodedata.mli more 2022-01-13 13:43:23 +00:00
cpdfunicodedata.source.ml more 2023-04-13 16:56:32 +01:00
cpdfxmlm.ml Remove -w3 and fix deprecations 2022-04-09 14:13:12 +02:00
cpdfxmlm.mli Yojson in 2021-10-05 17:16:13 +01:00
cpdfxobject.ml more 2021-12-21 15:33:56 +00:00
cpdfxobject.mli more 2022-01-13 16:35:03 +00:00
cpdfyojson.ml Update Yojson ready for OCaml 5 2022-08-15 19:37:51 +01:00
cpdfyojson.mli Update Yojson ready for OCaml 5 2022-08-15 19:37:51 +01:00
hello.pdf Decompress now non-lazy. Otherwise, deferred decryption fails due to 2017-01-04 17:52:14 +00:00
logo.pdf Fixed building of cpdfmanual.tex by adding logo.pdf 2013-08-29 12:12:36 +01:00
mkinstall install script 2021-06-20 16:27:46 +01:00

README.md

cpdf-source

Free for non-commercial use. See LICENSE for details. Copyright Coherent Graphics Ltd 2023.

This code builds two things:

a) The CPDF PDF Command Line Tools, which are a popular commercial command line tool for editing PDF files.

b) cpdf as an OCaml library, for which documentation is here:

https://coherentpdf.com/cpdf/

Prerequisites to build

The OCaml compiler

http://ocaml.org

The camlpdf library

http://github.com/johnwhitington/camlpdf

The ocamlfind library manager

http://projects.camlcity.org/projects/findlib.html

If you are using the OPAM package manager:

http://opam.ocamlpro.com

these can be installed by:

opam install camlpdf

To build

If downloading from Github, obtain the correct source. This means choosing the tag for a particular version, such as "v2.5". The head of the master branch is unstable.

  1. Type make to make the cpdf executable and the library

  2. Type make install to install the OCaml cpdf library.

The cpdf executable should be manually placed somewhere suitable.

Alternatively, the library and command-line binary can be installed by

opam install cpdf

Documentation

The file cpdfmanual.pdf in this folder is the documentation for the command line tools. The documentation for the cpdf OCaml library is in doc/html/cpdf/ in this folder once the library has been built.

C API

A C interface to cpdf is available, in source and binary form:

https://github.com/johnwhitington/cpdflib-source

https://github.com/coherentgraphics/cpdflib-binary

Python API

A Python interface to cpdf is available:

https://pypi.org/project/pycpdflib/

Acknowledgments

The file cpdfxmlm.ml was written by Daniel Bünzli.

The file cpdfyojson.ml was written by Martin Jambon and others.

Contact

contact@coherentgraphics.co.uk