GithubHelp home page GithubHelp logo

cpdf-source's Introduction

Coherent PDF Command Line Tools

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

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.7". 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

Java API

A Java interface to cpdf is available:

https://github.com/coherentgraphics/jcpdf

.NET API

A .NET interface to cpdf is available:

https://github.com/coherentgraphics/dotnet-libcpdf

JavaScript API

A JavaScript version of cpdf, for server and client side is available:

Distribution: https://www.npmjs.com/package/coherentpdf

Source: https://github.com/coherentgraphics/coherentpdf.js

Acknowledgments

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

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

The error descriptions for -verify-pdfua "matterhorn1.1" come from the PDF Association, and are licensed under the Creative Commons Attribution 4.0 International license.

Contact

[email protected]

cpdf-source's People

Contributors

avsm avatar johnwhitington avatar kit-ty-kate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cpdf-source's Issues

Draft command doesn't work on images in xobjects.

<bug>
      <bug_id>276</bug_id>

      <creation_ts>2012-01-25 06:27</creation_ts>
      <short_desc>Draft command doesn&apos;t work on images in xobjects.</short_desc>
      <delta_ts>2012-01-25 06:27:11</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>enhancement</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-01-25 06:27:11</bug_when>
        <thetext>Write a function for operating on all streams with their resources, preserving xobjects.</thetext>
      </long_desc>



</bug>

Kerning support for standard 14 fonts in addText

<bug>
      <bug_id>250</bug_id>

      <creation_ts>2012-01-11 07:49</creation_ts>
      <short_desc>Kerning support for standard 14 fonts in addText</short_desc>
      <delta_ts>2012-01-11 07:49:31</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>enhancement</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-01-11 07:49:31</bug_when>
        <thetext>Dependent on AFM parser to resolve problem with WinAnsi text being added but widths being in standard encoding...</thetext>
      </long_desc>



</bug>

Stamp operations are stripping PDF annotations

When using stamp-on or stamp-under features, cpdf is stripping hyperlink annotations from stamping file (that is, hyperlink annotations that were present in stamping file are not present in resulting PDF).

-add-bookmarks should allow more complicated destinations

<bug>
      <bug_id>289</bug_id>

      <creation_ts>2012-02-24 04:51</creation_ts>
      <short_desc>-add-bookmarks should allow more complicated destinations</short_desc>
      <delta_ts>2012-02-24 04:51:42</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>enhancement</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-02-24 04:51:42</bug_when>
        <thetext></thetext>
      </long_desc>



</bug>

merge doesn't maintain bookmarks which point to null destinations

<bug>
      <bug_id>412</bug_id>

      <creation_ts>2012-09-12 04:38</creation_ts>
      <short_desc>merge doesn&apos;t maintain bookmarks which point to null destinations</short_desc>
      <delta_ts>2012-10-03 06:46:58</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>major</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-09-12 04:38:18</bug_when>
        <thetext>see  PDFTests/nullbookmarkfailsonmerge.pdf</thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-09-20 08:41:27</bug_when>
        <thetext>Also, simple in/out read seems to remove it? -list-bookmarks, -merge, -add-bookmarks. Pdfdest.NullDestination vs page 0 in bookmarks file?</thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-10-03 06:46:58</bug_when>
        <thetext>Now mostly fixed.

We could improve by having each null destination one in a merge point to the first page of that document.
</long_desc>

</bug>

Cpdf.build_name_tree produces flat list. Move this code out to its own module and fix up.

     <bug_id>260</bug_id>

      <creation_ts>2012-01-17 12:22</creation_ts>
      <short_desc>Cpdf.build_name_tree produces flat list. Move this code out to its own module and fix up.</short_desc>
      <delta_ts>2012-02-20 11:04:17</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>REOPENED</bug_status>





      <priority>P5</priority>
      <bug_severity>major</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-01-17 12:22:20</bug_when>
        <thetext></thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-02-19 10:37:10</bug_when>
        <thetext>

*** This bug has been marked as a duplicate of bug 266 ***
</long_desc>

Odd recryption failure

feast:cpdf-source john$ ./cpdf enc/ownerfredusercharles.pdf user=charles -recrypt -o out.pdf
cpdf encountered an error. Technical details follow:

Encryption 128 failed

'even' and 'odd' should work as modifiers with tilde-ranges

<bug>
      <bug_id>439</bug_id>

      <creation_ts>2013-08-05 07:52</creation_ts>
      <short_desc>&apos;even&apos; and &apos;odd&apos; should work as modifiers with tilde-ranges</short_desc>
      <delta_ts>2013-08-05 07:52:06</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>major</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2013-08-05 07:52:06</bug_when>
        <thetext>For example, &quot;~8-~1odd&quot; is parsed to &quot;~8 - ~1odd&quot; which then fails.</thetext>
      </long_desc>



</bug>

-split on PDFTests/large/PDF3200... takes a long time in parse_delayed_object_streams / pdfobjmap_bindings

<bug>
      <bug_id>410</bug_id>

      <creation_ts>2012-09-11 03:35</creation_ts>
      <short_desc>-split on PDFTests/large/PDF3200... takes a long time in parse_delayed_object_streams / pdfobjmap_bindings</short_desc>
      <delta_ts>2012-10-04 10:09:18</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>major</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-09-11 03:35:31</bug_when>
        <thetext></thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-10-04 10:09:18</bug_when>
        <thetext>This is a fundamental problem with the way parse_delayed_object_stream works - we need to store upon opening which object numbers will be affected by each stream being opened, and then just iterate over those alone.

Fixable.
</long_desc>

-split-bookmarks on large/PDF32000.. produces big splits

<bug>
      <bug_id>409</bug_id>

      <creation_ts>2012-09-10 11:20</creation_ts>
      <short_desc>-split-bookmarks on large/PDF32000.. produces big splits</short_desc>
      <delta_ts>2012-10-04 10:07:48</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>major</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-09-10 11:20:15</bug_when>
        <thetext></thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-09-10 11:24:03</bug_when>
        <thetext>Ditto with normal -split

Also, -split takes ages - what is it doing?
</long_desc>

</bug>

Build failure (OCaml 4.02.1)

An install through opam (1.2.0) was successful but did not result in a cpdf binary being installed. A build from source fails:

ocamlfind ocamlopt -package camlpdf -c -annot -g cpdf.ml
File "cpdf.ml", line 282, characters 12-37:
Error: This function has type
         string option -> string option -> Pdfio.input -> Pdf.t
       It is applied to too many arguments; maybe you forgot a `;'.
OCamlMakefile:1076: recipe for target 'cpdf.cmx' failed

Add a feature to actually remove text -- the opposite to -draft

hello ,

I have a pdf which has unicode text, I am trying to strip out all the fonts in the pdf using -remove-fonts option so that only the image objects remain. I get partial success in doing that. i.e the fonts turn into blobs and adobe acrobat complains "Cannot find or create the font 'AKKUUO+ChiruthaHeavy'.Some characters may not display or print correctly ".

ScreenShot of Converted pdf after using the command cpdf -remove-fonts in.pdf -o out.pdf.

image

ScreenShot of the above corrupt pdf after converting it into an image using imageMagick/GhostScript.

image

-squeeze should address xobjects

Find them (in /Resources), then combine the page resources with the xobject resources, so we can parse the page ops. Then proceed as per pages.

cpdf won't process file with a badly formed page tree

cpdf won't even try to process files with a badly formed page tree. For example, any file created by the iCopy scan tool:

> cpdf -rotateby 90 scan.pdf -o scan2.pdf
  cpdf encountered an error. Technical details follow:
  badly formed page tree B

For example, use this pdf.

Admittedly, this is probably iCopy's fault, but it seems that cpdf should at least try to process it seeing the viewers can all display it.

-decompress carries on if it can&apos;t decompress a stream -- but that can lead to blank streams? what happens? check.

<bug>
      <bug_id>442</bug_id>

      <creation_ts>2014-03-25 06:23</creation_ts>
      <short_desc>-decompress carries on if it can&apos;t decompress a stream -- but that can lead to blank streams? what happens? check.</short_desc>
      <delta_ts>2014-03-25 06:23:32</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>enhancement</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2014-03-25 06:23:32</bug_when>
        <thetext></thetext>
      </long_desc>



</bug>

@F isn't held across AND, so is no use then.

<bug>
      <bug_id>441</bug_id>

      <creation_ts>2014-03-05 10:21</creation_ts>
      <short_desc>@F isn&apos;t held across AND, so it no use then.</short_desc>
      <delta_ts>2014-03-05 10:21:46</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>blocker</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2014-03-05 10:21:46</bug_when>
        <thetext></thetext>
      </long_desc>



</bug>

-rotate-contents problem in awlogo.pdf

<bug>
      <bug_id>438</bug_id>

      <creation_ts>2013-08-02 12:38</creation_ts>
      <short_desc>-rotate-contents problem in awlogo.pdf</short_desc>
      <delta_ts>2013-08-05 05:17:24</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>ASSIGNED</bug_status>





      <priority>P5</priority>
      <bug_severity>major</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2013-08-02 12:38:03</bug_when>
        <thetext>Butterfly looks wrong...</thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2013-08-02 12:39:42</bug_when>
        <thetext>Pretty sure this used to work -- check with cpdf 1.6!</thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2013-08-05 05:17:24</bug_when>
        <thetext>Not a regression. Fix for 1.8.</thetext>
      </long_desc>



</bug>

-stamp-on etc should obey position commands.

<bug>
      <bug_id>386</bug_id>

      <creation_ts>2012-05-18 06:09</creation_ts>
      <short_desc>-stamp-on etc should obey position commands.</short_desc>
      <delta_ts>2012-05-18 06:09:53</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>enhancement</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-05-18 06:09:53</bug_when>
        <thetext></thetext>
      </long_desc>



</bug>

-range should also work for -stdin

<bug>
      <bug_id>440</bug_id>

      <creation_ts>2013-08-05 08:04</creation_ts>
      <short_desc>-range should also work for -stdin</short_desc>
      <delta_ts>2013-08-05 08:04:26</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>enhancement</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2013-08-05 08:04:26</bug_when>
        <thetext></thetext>
      </long_desc>



</bug>

Test scale-to-fit with FIXMEs about box changing / scaling failures.

<bug>
      <bug_id>406</bug_id>

      <creation_ts>2012-08-23 09:43</creation_ts>
      <short_desc>Test scale-to-fit with FIXMEs about box changing / scaling failures.</short_desc>
      <delta_ts>2012-10-03 07:35:29</delta_ts>
      <reporter_accessible>1</reporter_accessible>
      <cclist_accessible>1</cclist_accessible>
      <classification_id>1</classification_id>
      <classification>Unclassified</classification>
      <product>cpdf</product>
      <component>cpdf</component>
      <version>unspecified</version>
      <rep_platform>PC</rep_platform>
      <op_sys>Mac OS</op_sys>
      <bug_status>NEW</bug_status>





      <priority>P5</priority>
      <bug_severity>major</bug_severity>
      <target_milestone>---</target_milestone>



      <everconfirmed>1</everconfirmed>
      <reporter name="John Whitington">[email protected]</reporter>
      <assigned_to name="John Whitington">[email protected]</assigned_to>

      <estimated_time>0.00</estimated_time>
      <remaining_time>0.00</remaining_time>
      <actual_time>0.00</actual_time>





      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-08-23 09:43:45</bug_when>
        <thetext></thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-09-20 08:42:31</bug_when>
        <thetext>*** Bug 418 has been marked as a duplicate of this bug. ***</thetext>
      </long_desc>
      <long_desc isprivate="0">
        <who name="John Whitington">[email protected]</who>
        <bug_when>2012-10-03 07:35:29</bug_when>
        <thetext>So, the correct solution to this is to rewrite it in terms of scale_contents, and then fix up the change_boxes command. 

For 1.8<

add/modify annotations

Is there any plan to support addition/modification of annotations in the near future? I wouldn't mind contributing but I don't really know where to start.

Bookmarks failed to be recognised

It seems that the (malformed?) bookmarks generated by the wkhtmltopdf tool/library cannot be handled by cpdf.
cpdf lists no bookmarks for such files, however they show up normally in pdf readers like Adobe Reader.

Installing cpdf binary as well as library

I've got a pull request at OCamlPro/opam-repository#1100 that installs the cpdf binary as well the library. This would require the README in this repository, but I just wanted to check if there was a reason why the binary isn't installed by default by the OPAM package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.