Commit Graph

599 Commits

Author SHA1 Message Date
Jay Berkenbilt 765373174f Link to wiki 2021-12-19 17:35:15 -05:00
Jay Berkenbilt 04a602aa50 Add download section to docs 2021-12-19 16:52:06 -05:00
Jay Berkenbilt ea73bf72e0 Further improvements to handling binary strings 2021-12-19 14:30:45 -05:00
Jay Berkenbilt 92613a1eec doc: switch html theme to sphinx_rtd_theme 2021-12-19 13:57:47 -05:00
Jay Berkenbilt c3dc03c713 Update configuration for correct building of epub 2021-12-18 15:59:04 -05:00
Jay Berkenbilt e8a15204f5 Integration with readthedocs 2021-12-18 15:44:54 -05:00
Jay Berkenbilt d70fb568a3 Specify highlight language instead of using text codeblocks 2021-12-18 13:43:58 -05:00
Jay Berkenbilt 0e6b6a240b Change html theme again, fix code blocks
The agogo theme doesn't do very well on narrow screens. The code
blocks were used for shell commands but were using Python syntax
highlighting.
2021-12-18 13:37:11 -05:00
Jay Berkenbilt c9d54fda51 Remove ref. from documentation references 2021-12-18 12:30:00 -05:00
Jay Berkenbilt 426b4ce856 Update documentation build/installation 2021-12-18 12:20:56 -05:00
Jay Berkenbilt c809f87706 Fix Acknowledgments section 2021-12-18 11:05:51 -05:00
Jay Berkenbilt 10fb619d3e Split documentation into multiple pages, change theme 2021-12-18 11:05:51 -05:00
Jay Berkenbilt f3d1138b8a Add comment 2021-12-18 11:05:51 -05:00
Jay Berkenbilt 408e900fe4 Fix qpdf-manual build dependencies 2021-12-18 11:05:51 -05:00
Jay Berkenbilt ddbe59179e C API: simplify new error handling and improve documentation 2021-12-17 15:59:47 -05:00
Jay Berkenbilt 59a64115a6 ChangeLog/doc for previous commit 2021-12-17 14:28:20 -05:00
Jay Berkenbilt feafcc4e88 C API: add several stream functions (fixes #596) 2021-12-17 13:28:11 -05:00
Jay Berkenbilt fee7489ee4 Add Pl_Buffer::getMallocBuffer 2021-12-17 12:38:52 -05:00
Jay Berkenbilt 9bb6f570ec C API: add functions for working with pages (fixes #594) 2021-12-16 15:07:48 -05:00
m-holger 6187c8086e Fix minor typos 2021-12-14 12:06:03 -05:00
Jay Berkenbilt 43740ea733 ChangeLog/release note on doc change 2021-12-13 11:20:14 -05:00
Jay Berkenbilt 2f938d4f13 Work old "upgrading" sections into the release notes
These are for ancient versions.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt 003b4c9670 Remove superfluous "Upgrading to 4.0" chapter 2021-12-13 11:20:14 -05:00
Jay Berkenbilt cfaaea6f05 Doc: reorganize front section 2021-12-13 11:20:14 -05:00
Jay Berkenbilt ed6fe01238 Remove docbook manual and associated files 2021-12-13 11:20:14 -05:00
Jay Berkenbilt 948c4546c8 Doc: update requirements for building the documentation 2021-12-13 11:20:14 -05:00
Jay Berkenbilt aaea245a8d Remove "Indices and tables"
This was inserted by sphinx-quickstart, but it doesn't do anything for us.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt e10e787413 Explicitly mark perl codeblock as such 2021-12-13 11:20:14 -05:00
Jay Berkenbilt cac844e07a Replace xref links to :ref:
Pandoc doesn't convert <xref> correctly, but it does so consistently,
so this commit just changes all xref links to :ref:.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt 1b55906a04 Replace <firstterm> with emphasis
At one time, it seems that I was starting to use the <firstterm>
feature of docbook, but I forgot about it long ago, and there is
nothing consistent. In the absence of an actual glossary, just use
emphasis for terminology and don't tag it in any special way. This
could be fixed later if we wanted to.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt e5a7d9323f Convert the original xml comment to an rst comment 2021-12-13 11:20:14 -05:00
Jay Berkenbilt d13a6032e6 Replace <replaceable> with {...}
All occurrences are in :file: or :samp: now.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt 0fdbb957a0 Wrap remaining replaceables in :samp: 2021-12-13 11:20:14 -05:00
Jay Berkenbilt f4531e8a47 Relabel replaceable in samp or file
Replace @1@replaceable@1@...@2@replaceable@2@ with
@3@replaceable@3@...@3@replaceable@3@ inside of :samp: and :file: so
that all remaining @1@replaceable@1@...@2@replaceable@2@ are outside.
Since the {...} syntax for replaceable only works in :samp: and
:file:, we will have to enclose the remaining ones in :samp: for them
to work.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt bf4d107853 Convert <option> to :samp: and clean up literal blocks
:option: is stronger and assumes a reference to a list of options.
Since we don't have that yet, just use :samp: for options. Inside
literal code blocks, there is no expansion, so just remove markup.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt b764ba95ed Replace things previously marked with <filename> with :file:`...` 2021-12-13 11:20:14 -05:00
Jay Berkenbilt 15b87d769e Replace command|application with :command:`...`
Replace @1@...@2@ stuff from prior to the conversion with new
representation.
2021-12-13 11:20:14 -05:00
Jay Berkenbilt cf3b9a7783 doc: fix whitespace and indentation in pandoc output
Pandoc indented lists with two spaces after the dash, which is ugly
and messes up emacs fill-paragraph. I transformed the spacing using a
combination of this perl script and manual edits. I verified that the
HTML generated by sphinx was identical before and after the edits and
that this commit contains only whitespace changes. The perl script as
it stands does not do indentation quite right for variable lists, but
there were only about 8 cases that it missed, so I just fixed them
manually.

```perl
#!/usr/bin/env perl
require 5.008;
use warnings;
use strict;
use File::Basename;

my $whoami = basename($0);

my @liststack = ();

while (<>)
{
    if (m/^( *-  )\S/)
    {
        my $pre = $1;
        while ((scalar(@liststack) > 0) &&
               ($liststack[-1] >= length($pre)))
        {
            pop(@liststack);
        }
        if ((scalar(@liststack) == 0) && ($pre =~ m/^ /))
        {
            push(@liststack, 1);
        }
        push(@liststack, length($pre));
        my $n = scalar(@liststack);
        #print "** $n\n";
        my $newpre = ('  ' x ($n - 1)) . '- ';
        s/^$pre/$newpre/;
    }
    elsif (scalar(@liststack) > 0)
    {
        if ($_ ne "\n")
        {
            while (scalar(@liststack) > 0)
            {
                my $pre = m/^( *)/;
                if (length($1) < $liststack[-1])
                {
                    #print "XXX pop\n";
                    pop(@liststack);
                }
                else
                {
                    last;
                }
            }
            my $n = scalar(@liststack);
            #print "** $n\n";
            my $indent = '  ' x $n;
            s/^ +/$indent/;
        }
    }
    print;
}
```
2021-12-13 11:20:14 -05:00
Jay Berkenbilt 3d5d42efaf Fix errors introduced by pandoc
These showed up as warnings from sphinx-build
2021-12-13 11:20:14 -05:00
Jay Berkenbilt a372a988fd Switch build from docbook manual to sphinx
Also remove linearization from qpdf-manual.pdf. It's a small file, and
removing the dependency on the qpdf executable significantly shortens
build times.
2021-12-13 11:16:21 -05:00
Jay Berkenbilt abb6a16ed1 Insert output of pandoc as is
pandoc -f docbook -t rst qpdf-manual.xml >| /tmp/a.rst
Insert /tmp/a.rst into existing index.rst
2021-12-12 16:29:13 -05:00
Jay Berkenbilt 22d53f928f Sphinx docs: tweak output of sphinx-quickstart 2021-12-12 16:29:13 -05:00
Jay Berkenbilt f8787d9fd8 Create initial sphinx document sources
Run sphinx-quickstart. Throw everything away except conf.py and
index.rst. We will incorporate this into our own build system.
2021-12-12 16:29:13 -05:00
Jay Berkenbilt 9a5d16a403 Prepare for docbook -> rst: replace SGML entitles
We were using SGML entities for various non-ASCII characters so they
could convert properly for both HTML and print, but this is no longer
necessary as we move from docbook to RST, so just replace them. Note
that the conversions done by sphinx automatically handle "smart
quotes", so it works to just use regular quotes in place of &LDQUO;
and &RDQUO;.
2021-12-12 16:29:13 -05:00
Jay Berkenbilt f80a0da3e3 Prepare for docbook -> rst: protect a comment so it survives pandoc 2021-12-12 16:29:13 -05:00
Jay Berkenbilt 78206a4651 Prepare for docbook -> rst: protect some XML elements
Pandoc docbook -> rst fails to convert the following elements, so
change them to @1@tag@1@ ... @2@tag@2@ for later processing. This way,
they will survive the conversion, and we can deal with them later.

<application>
<command>
<filename>
<firstterm>
<option>
<replaceable>
2021-12-12 16:29:13 -05:00
Jay Berkenbilt f721fed9d6 doc: Replace Gajic with Gajić (finally)
With docbook, this was not converted properly in the PDF version, but
since we are moving out of docbook, we can just put the Unicode
character in the source.
2021-12-12 16:29:13 -05:00
Jay Berkenbilt 8aa9a66e63 doc: remove unneeded footnote
Footnotes are yucky in online documentation, and the one footnote in
the doc is no longer needed, so remove it.
2021-12-12 16:29:13 -05:00
Jay Berkenbilt 08bcf6449c Clarify docs around @filename and leading/trailing space 2021-12-10 15:52:28 -05:00
Jay Berkenbilt 1c62c2a342 C API: expose functions for indirect objects (fixes #588) 2021-12-10 14:57:35 -05:00
Jay Berkenbilt 72c10d8617 C API: overhaul error handling
* Handle error conditions that occur when using the object handle
  interfaces. In the past, some exceptions were not correctly
  converted to errors or warnings.
* Add more detailed information to qpdf-c.h
* Make it possible to work more explicitly with uninitialized objects
2021-12-10 12:16:02 -05:00
Jay Berkenbilt 3340dbe976 Use a specific error code for type warnings and clarify docs 2021-12-10 11:15:49 -05:00
Jay Berkenbilt a144363653 Add changelog and release note for #587 2021-12-09 10:33:31 -05:00
Jay Berkenbilt e3cc171d02 C API: qpdf_oh_is_initialized 2021-12-09 10:33:31 -05:00
Jay Berkenbilt bef2c2222a C API: qpdf_get_last_string_length 2021-12-09 10:33:31 -05:00
m-holger 0c705a882b Minor documentation updates 2021-12-09 10:24:14 -05:00
Jay Berkenbilt ce7db05d22 Prepare 10.4.0 release 2021-11-16 15:44:09 -05:00
Jay Berkenbilt 750aca5b94 First increment of improving handling of weak crypto (fixes #358) 2021-11-11 12:24:15 -05:00
Sven Neuhaus 37916f3925 Fix typo in manual
Fix typo in --rotate example
2021-11-08 10:28:14 -05:00
Jay Berkenbilt 8c32f91149 Mention OpenSSL 3 for Windows 2021-11-05 12:58:57 -04:00
Jay Berkenbilt ecfb3a8606 Fix typo in documentation (fixes #572)
Thanks @neuhaus!
2021-11-05 11:22:25 -04:00
Jay Berkenbilt 4a648b9a00 Fix bug in merging resources /DR from foreign AcroForm (fixes #548)
When making resources indirect in from_dr, the code was using the
wrong owning QPDF, forgetting that from_dr had already been copied
using CopyForeignObject.
2021-11-04 12:29:42 -04:00
Jay Berkenbilt 9b28933647 Check object ownership when adding
When adding a QPDFObjectHandle to an array or dictionary, if possible,
check if the new object belongs to the same QPDF. This makes it much
easier to find incorrect code than waiting for the situation to be
detected when the file is written.
2021-11-04 12:29:42 -04:00
Jay Berkenbilt 73752683c9 Fix overlay/underlay on page with no resources (fixes #527) 2021-11-03 16:00:05 -04:00
Jay Berkenbilt a3a3203f41 Start release notes for 10.4.0 2021-11-03 09:43:17 -04:00
Jay Berkenbilt 42ca1f007a Document that --check > /dev/null is safe (fixes #522) 2021-11-03 09:43:17 -04:00
Jay Berkenbilt f545f8b076 Add a basic description of QPDF in README.md (fixes #552)
Also switch URLs for the qpdf and qtest websites to sourceforge.io
(https) instead of sourceforge.net (http).
2021-11-02 15:41:01 -04:00
Jay Berkenbilt 1b59872b36 Switch spelling checker to cspell 2021-09-13 11:10:09 -04:00
Jay Berkenbilt 193739494d Add missing release note 2021-05-08 10:04:33 -04:00
Jay Berkenbilt 30ac51bc78 Exclude unreferenced objects in object streams (fixes #520) 2021-05-08 09:42:09 -04:00
Jay Berkenbilt 3f05429cc5 Prepare 10.3.1 release 2021-03-11 12:59:41 -05:00
Jay Berkenbilt 85884c363c Allow /DR to be direct in /AcroForm
Also handle direct annotation, though this is much less likely.
2021-03-11 11:43:38 -05:00
Jay Berkenbilt dc65b88457 Prepare 10.3.0 release 2021-03-05 06:15:48 -05:00
Jay Berkenbilt 0b77f2cf26 Revert non-binary-compatible handleWarning change -- see TODO (ABI) 2021-03-04 15:59:46 -05:00
Jay Berkenbilt 9fb174b9e9 Major rework of handling form fields when copying pages (fixes #509) 2021-03-04 15:08:37 -05:00
Jay Berkenbilt fa2516df71 Fix behavior for finding /Q, /DA, and /DR for form fields
If not found in the field hierarchy, /Q and /DA are supposed to be
looked up in the document-level form dictionary. /DR is supposed to
only come from the document dictionary.
2021-03-03 17:05:19 -05:00
Jay Berkenbilt a4d6589ff2 Have QPDFObjectHandle notice when replaceObject was called
This results in a performance penalty of 1% to 2% when replaceObject
and swapObjects are never called and a somewhat larger penalty if they
are called, but it's worth it to avoid very confusing behavior as
discussed in depth in qpdf#507.
2021-02-25 07:32:46 -05:00
Jay Berkenbilt b5e937397c Prepare 10.2.0 release 2021-02-23 10:41:58 -05:00
Jay Berkenbilt fb86d2819e Clean up 10.2 release notes 2021-02-23 10:41:58 -05:00
Jay Berkenbilt f02aa74bf5 Update pdf-overlay-page example to copy annotations 2021-02-22 18:42:06 -05:00
Jay Berkenbilt 61d41e2e88 Add copyAnnotations, use with overlay/underlay (fixes #395) 2021-02-22 18:42:06 -05:00
Jay Berkenbilt 7b3cbacf5d Change from QPDF{Array,Dict}Items to aitems() and ditems() 2021-02-22 11:05:39 -05:00
Jay Berkenbilt a9ae8cadc6 Add transformAnnotations and fix flattenRotations to use it 2021-02-21 17:13:09 -05:00
Jay Berkenbilt 92fbc6fdf5 QPDFObjectHandle::copyStream 2021-02-21 06:36:30 -05:00
Jay Berkenbilt 35dd11f356 Allow --rotate=0 2021-02-20 16:29:34 -05:00
Jay Berkenbilt de8929a41c Add QPDFAcroFormDocumentHelper::addFormField 2021-02-18 12:25:48 -05:00
Jay Berkenbilt 5cec6b4c3d Add QPDFPageObjectHelper::getMatrixForFormXObjectPlacement 2021-02-18 12:25:48 -05:00
Jay Berkenbilt 0b1623d07d Add QUtil::path_basename 2021-02-18 09:59:03 -05:00
Jay Berkenbilt f21e4f264a Add file attachment example 2021-02-18 09:59:03 -05:00
Jay Berkenbilt dfce581754 Add numeric argument to --collate
This takes pages from the file in groups of n with default = 1. This
partially fixes the enhancement in issue #505 but doesn't implement
the entire suggestion.
2021-02-17 20:07:45 -05:00
Jay Berkenbilt a773f4c71d Add QPDFObjectHandle::parse for strings with context 2021-02-15 11:33:03 -05:00
Jay Berkenbilt efbb21673c Add functional versions of QPDFObjectHandle::replaceStreamData
Also fix a bug in checking consistency of length for stream data
providers. Length should not be checked or recorded if the provider
says it failed to generate the data.
2021-02-14 14:42:24 -05:00
Jay Berkenbilt e2593e2efe Move QPDFMatrix into the public API 2021-02-13 02:30:00 -05:00
Jay Berkenbilt 07f40bd254 QUtil::double_to_string: trim trailing zeroes with option to disable 2021-02-13 02:30:00 -05:00
Jay Berkenbilt 1b3f84f967 Require C++14 instead of C++11 2021-02-10 16:27:58 -05:00
Jay Berkenbilt accb891b4f Add attachment information to the json output 2021-02-10 15:46:18 -05:00
Jay Berkenbilt 832d792e4e Add CLI support for working with attachments 2021-02-10 10:03:27 -05:00
Jay Berkenbilt ad34b9c278 Implement helpers for file attachments 2021-02-10 06:57:37 -05:00
Jay Berkenbilt bf0e6eb302 Add QUtil methods for dealing with PDF timestamp strings 2021-02-09 17:50:24 -05:00
Jay Berkenbilt 553ac7f353 Add QUtil::pipe_file and QUtil::file_provider 2021-02-07 19:41:34 -05:00
Jay Berkenbilt 3de67173de Better fix to insecure password check (fixes #501) 2021-02-04 20:44:05 -05:00
Jay Berkenbilt 63158cf546 Add --password-file=filename option (fixes #499) 2021-02-04 16:48:53 -05:00
Jay Berkenbilt 21b0f4acfc Require --allow-insecure to create certain encrypted files (fixes #501)
For now, --allow-insecure allows creation of files with the owner
passwords empty or matching the user password.
2021-02-04 15:57:13 -05:00
Jay Berkenbilt faa2e3ddfd Handle older PDFs whose form XObjects inherit resources (fixes #494)
When removing unreferenced resources, notice if a page (recursively)
contains a form XObject with unreferenced resources, and count any
such resources as referenced by the page.
2021-02-02 18:06:05 -05:00
Jay Berkenbilt 2046f6536d Add release note for previous fix 2021-02-02 18:06:05 -05:00
Jay Berkenbilt 1fec40454e Add example of name/number trees and dictionary/array iteration 2021-01-30 15:52:16 -05:00
Jay Berkenbilt de0b11fc47 Add C++ iterator API around array and dictionary objects 2021-01-30 15:15:23 -05:00
Jay Berkenbilt 35e7859bc7 Make QPDFObjectHandle::is* return false for uninitialized objects 2021-01-29 15:46:54 -05:00
Jay Berkenbilt e7e20772ed name/number trees: remove 2021-01-26 09:12:23 -05:00
Jay Berkenbilt b5614f611d Implement repair and insert for name/number trees 2021-01-24 19:31:45 -05:00
Jay Berkenbilt 04edfe9fad QPDFObjectHandle::newUnicodeString to uses UTF-16 only when needed
Use the first of ASCII, PDFDocEncoding, or UTF-16 that is capable of
encoding the string.
2021-01-24 03:27:28 -05:00
Jay Berkenbilt ba814703fb Use QPDFNameTreeObjectHelper's iterator directly 2021-01-24 03:25:11 -05:00
Jay Berkenbilt 6226b69dba Add warn() to QPDF's public API 2021-01-16 18:41:53 -05:00
Jay Berkenbilt 0fed040392 Prepare version 10.1.0 2021-01-04 16:59:55 -05:00
Jay Berkenbilt 891751f618 Remove unreferenced resources only from relevant pages 2021-01-04 15:17:35 -05:00
Jay Berkenbilt a9bdeeb0e0 Fix zsh completion arguments (fixes #473) 2021-01-04 15:17:35 -05:00
Jay Berkenbilt 3be58f49e5 Make more QPDFPageObjectHelper methods work with form XObject 2021-01-02 14:08:53 -05:00
Jay Berkenbilt 98da4fd835 Externalize inline images now includes form XObjects 2021-01-02 14:08:17 -05:00
Jay Berkenbilt a139d2b36d Add several methods for working with form XObjects (fixes #436)
Make some more methods in QPDFPageObjectHelper work with form
XObjects, provide forEach methods to walk through nested form
XObjects, possibly recursively. This should make it easier to work
with form XObjects from user code.
2021-01-02 12:29:31 -05:00
Jay Berkenbilt c97bd6323e Add release notes for changes from 10.0.4 so far 2020-12-30 16:45:50 -05:00
Jay Berkenbilt c9271335fa Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation 2020-12-30 13:03:55 -05:00
Jay Berkenbilt 78b9d6bfd4 Prepare 10.0.4 release 2020-11-21 13:50:02 -05:00
Jay Berkenbilt fbe40b800d Prepare 10.0.3 release 2020-10-31 13:47:03 -04:00
Jay Berkenbilt bcea54fcaa Revert removal of unreadCh change for performance
Turns out unreadCh is much more efficient than seek(-1, SEEK_CUR).
Update comments and code to reflect this.
2020-10-27 11:57:48 -04:00
Jay Berkenbilt db08974e88 Release notes for 10.0.2 2020-10-26 19:39:36 -04:00
Jay Berkenbilt b30deaeeab Avoid merging adjacent tokens when concatenating contents (fixes #444) 2020-10-23 08:00:04 -04:00
Jay Berkenbilt 758e3e38f5 Add option --warning-exit-0 to exit 0 instead of 3 with warnings 2020-10-20 18:02:39 -04:00
Jay Berkenbilt bbd45cd01c Clarify qpdf's exit statuses in the documentation 2020-10-15 15:03:14 -04:00
Jay Berkenbilt 8f1db4dcf2 Fix doc typo (--encryption-file-password) (fixes #468) 2020-10-15 14:54:34 -04:00
Jay Berkenbilt a1994a5343 Fix/clarify documentation on --rotate option (fixes #470)
Make clear that you almost always want + or - before an angle when
specifying rotation.
2020-10-15 14:53:06 -04:00
Jay Berkenbilt 821a701851 Prepare 10.0.1 release 2020-04-09 11:48:26 -04:00
Jay Berkenbilt 1e629c278a Prepare 10.0.0 release 2020-04-06 11:30:15 -04:00
Jay Berkenbilt 77198d5310 Delegate random number generation to crypto provider (fixes #418) 2020-04-06 11:23:02 -04:00
Jay Berkenbilt 619d294e9d Remove QUtil::srandom 2020-04-06 09:49:02 -04:00
Jay Berkenbilt 1360b530ec Update ChangeLog and manual for openssl crypto provider 2020-04-06 09:24:12 -04:00
Jay Berkenbilt 3d0de5b924 Fixes to ChangeLog and manual for 10.0.0 changes 2020-04-06 09:02:58 -04:00
Jay Berkenbilt 0837932164 Update documentation and test suite to lock in hard page copy
Issue #399 mentioned a use case for which qpdf has support, but the
fact that it is supported was not documented or in the test suite,
making it vulerable to accidental breakage.
2020-04-05 20:07:13 -04:00
Jay Berkenbilt 7246404177 JSON: implement pattern keys in schema 2020-04-04 18:06:32 -04:00
Jay Berkenbilt 2100b4ce15 Allow qpdf to be built on systems without wchar_t (fixes #406) 2020-04-03 21:39:44 -04:00
Jay Berkenbilt b03e6bd65d Use QPDF_EXECUTABLE as a hint for completion 2020-03-31 17:39:20 -04:00
Jay Berkenbilt 52a2e95dd5 Prepare 9.1.1 release 2020-01-26 18:49:04 -05:00
Jay Berkenbilt 1b37e33df5 Add bug fixes to release notes 2020-01-26 18:46:00 -05:00
Jay Berkenbilt 676cdcff1a Spell check 2020-01-26 18:32:35 -05:00
Jay Berkenbilt e5cc065598 Update copyright to 2020 2020-01-26 16:57:27 -05:00
Jay Berkenbilt 12777a04ca Add encrypt key to json 2020-01-26 14:44:03 -05:00
Jay Berkenbilt 731c4f711b Add --is-encrypted and --requires-password (fixes #390)
Allow exit status-based checking of whether a file is encrypted or
requires a password without necessarily supplying the correct
password. Useful for scripting.
2020-01-26 11:26:53 -05:00
Jay Berkenbilt 73a0e3a932 Begin release notes for 9.1.1 2020-01-14 11:53:37 -05:00
Jay Berkenbilt 388990f7bc Rewrite fix-qdf in C++ 2020-01-14 11:53:19 -05:00
Jay Berkenbilt 9b0c6022d7 Prepare 9.1.0 release 2019-11-16 22:29:54 -05:00
Jay Berkenbilt b9f06fedf1 Fix error in manual 2019-11-15 10:29:11 -05:00
Jay Berkenbilt b76af9242f Clean up documentation around gnutls and C++-11 2019-11-11 14:14:31 -05:00
Jay Berkenbilt 0e94aa6919 Fix up documentation around Windows wildcard fix 2019-11-10 20:19:38 -05:00
Jay Berkenbilt 5e6dfc938e Prepare 9.1.rc1 release 2019-11-09 22:00:53 -05:00
Jay Berkenbilt 021d71454a Spell check 2019-11-09 19:03:56 -05:00
Jay Berkenbilt 07da0039d3 Link with setargv or wsetargv with MSVC (fixes #224)
For wildcard expansion to work properly with the msvc binary, it is
necessary to link with setargv.obj or wsetargv.obj, depending on
whether wmain is in use.
2019-11-09 18:50:42 -05:00
Jay Berkenbilt c4478e5249 Allow odd/even modifiers in numeric range (fixes #364) 2019-11-09 13:23:12 -05:00
Jay Berkenbilt c9cc83621b Add the word "slow" to preserved unreferenced resources docs (fixes #380)
This makes it more likely for someone who notices a big slow-down in
page splitting to discover the option.
2019-11-09 12:33:15 -05:00
Jay Berkenbilt e5cec314bc Update release notes for crypto providers 2019-11-09 12:33:15 -05:00
Jay Berkenbilt 1ee45458fc Update docs for crypto providers 2019-11-09 09:53:42 -05:00
Jay Berkenbilt 9b76ec154d Add ChangeLog and documentation for signature dict enhancements 2019-10-22 16:44:27 -04:00
Jay Berkenbilt 3094955dee Prepare 9.0.2 release 2019-10-12 19:37:40 -04:00
Jay Berkenbilt e188d0fffa Make --replace-input work with / in path (fixes #365) 2019-10-12 19:27:50 -04:00
Jay Berkenbilt 4ea940b03c Prepare 9.0.1 release 2019-09-20 07:38:18 -04:00
Jay Berkenbilt db2e095a42 Update release notes for upcoming 9.0.1 release 2019-09-19 21:25:34 -04:00
Jay Berkenbilt 8c34d67b88 Fix duplicated release notes entries 2019-08-31 22:11:28 -04:00
Jay Berkenbilt 5462dfce31 Prepare 9.0.0 release 2019-08-31 20:07:36 -04:00
Jay Berkenbilt d492bb0a90 Add --replace-input option (fixes #321) 2019-08-31 15:51:21 -04:00
Jay Berkenbilt babd12c9b2 Add methods QPDF::anyWarnings and QPDF::closeInputSource 2019-08-31 15:51:20 -04:00
Jay Berkenbilt b3c91f64bb Change release notes order 2019-08-31 15:51:06 -04:00
Jay Berkenbilt 5da146c8b5 Track separately whether password was user/owner (fixes #159) 2019-08-24 11:01:19 -04:00
Jay Berkenbilt 53930d96d0 Add some clarification to encryption in the manual
Per user suggestion in issue 351.
2019-08-23 21:27:41 -04:00
Jay Berkenbilt 2794bfb1a6 Add flags to control zlib compression level (fixes #113) 2019-08-23 20:34:21 -04:00
Jay Berkenbilt 3f1ab64066 Pass offset and length to ParserCallbacks::handleObject 2019-08-22 22:54:29 -04:00
Jay Berkenbilt 42d396f1dd Handle invalid name tokens symmetrically for PDF < 1.2 (fixes #332) 2019-08-19 19:48:27 -04:00
Jay Berkenbilt d9dd99eca3 Attempt to repair /Type key in pages nodes (fixes #349) 2019-08-18 18:54:37 -04:00
Jay Berkenbilt 89dacd8eba Array optimization fixes performance issues (fixes #305, #311) 2019-08-18 09:00:55 -04:00
Thorsten Schöning 8f06da7534 Change list to vector for outline helpers (fixes #297)
This change works around STL problems with Embarcadero C++ Builder
version 10.2, but std::vector is more common than std::list in qpdf,
and this is a relatively new API, so an API change is tolerable.

Thanks to Thorsten Schöning <6223655+ams-tschoening@users.noreply.github.com>
for the fix.
2019-07-03 20:08:47 -04:00
Jay Berkenbilt 04f45cf652 Treat all linearization errors as warnings
This also reverts the addition of a new checkLinearization that
distinguishes errors from warnings. There's no practical distinction
between what was considered an error and what was considered a
warning.
2019-06-23 13:45:45 -04:00
Jay Berkenbilt c4e286ac79 Fix typo in manual 2019-06-22 20:57:33 -04:00
Jay Berkenbilt c5ed1b8075 Handle invalid encryption Length (fixes #333) 2019-06-22 20:57:33 -04:00
Jay Berkenbilt 551dfbf697 Allow set*EncryptionParameters before filename iset (fixes #336) 2019-06-22 20:57:33 -04:00
Jay Berkenbilt ed62be888c Fix --completion-* args to work from AppImage (fixes #285) 2019-06-22 17:12:01 -04:00
Jay Berkenbilt 1240047528 Try to use pkg-config to find external dependencies (fixes #324) 2019-06-22 16:57:52 -04:00
Jay Berkenbilt f2ef161261 Override umask on install (fixes #326) 2019-06-22 16:57:52 -04:00
Jay Berkenbilt 85a3f95a89 qpdf: exit 3 for linearization warnings without errors (fixes #50) 2019-06-22 16:57:51 -04:00
Jay Berkenbilt 557bd3c261 Start 9.0.0 release notes 2019-06-22 16:57:51 -04:00
Jay Berkenbilt 6fca27995e Update casting policy in the documentation 2019-06-21 13:17:45 -04:00
Jay Berkenbilt b1a78be1a8 Prepare 8.4.2 release 2019-05-18 08:56:37 -04:00
Jay Berkenbilt a323f6f49f Prepare 8.4.1 release 2019-04-27 20:44:20 -04:00
Jay Berkenbilt 03e27709f3 Improve Unicode filename testing
Remove dependency on the behavior of perl for reliable creation of
Unicode file names on Windows.
2019-04-27 20:37:33 -04:00
Jay Berkenbilt 2b011f9d81 Add --remove-page-labels option (fixes #317) 2019-04-20 21:00:43 -04:00
Jay Berkenbilt e50d5201df Add --keep-files-open-threshold (fixes #288) 2019-04-20 21:00:43 -04:00
Jay Berkenbilt 131a21d36f Document that linearize disables qdf (fixes #312) 2019-04-20 21:00:43 -04:00
Jay Berkenbilt 03074ca5a0 Prepare 8.4.0 release 2019-02-01 22:25:25 -05:00
Jay Berkenbilt fec5bb124c Spell check 2019-01-31 21:41:29 -05:00
Jay Berkenbilt 0a470d2daf Don't optimize non-8-bit images
Also add test cases for additional coverage on image optimization.
2019-01-31 21:29:28 -05:00
Jay Berkenbilt 5211bcb5ea Externalize inline images (fixes #278) 2019-01-31 10:38:13 -05:00
Jay Berkenbilt 22bcdbe786 Remove acroread from tests
This hasn't worked or been exercised in years since Adobe stopped
releasing a Linux version of reader.
2019-01-31 10:38:13 -05:00
Jay Berkenbilt 2712869cf9 Fix logic for when to compress object and xref streams (fixes #271) 2019-01-28 21:43:06 -05:00
Jay Berkenbilt 52f9d326a5 Resolve duplicated page objects (fixes #268)
When linearizing a file or getting the list of all pages in a file,
detect if the pages tree contains a duplicated page object and, if so,
shallow copy it. This makes it possible to have a one to one mapping
of page positions to page objects.
2019-01-28 20:29:58 -05:00
Jay Berkenbilt 4d0cb21ffa Fix typo in documentation 2019-01-28 11:15:27 -05:00
Jay Berkenbilt 426434c772 Add --overlay and --underlay to qpdf CLI (fixes #207) 2019-01-27 09:30:13 -05:00
Jay Berkenbilt e1271361c5 Add documentation for features since 8.3.0 2019-01-19 15:58:51 -05:00
Jay Berkenbilt 966429e718 Update CLI and manual for new encryption granularity (fixes #214) 2019-01-17 11:43:56 -05:00
Jay Berkenbilt 654c0e8caf Allow adding the same page more than once in --pages (fixes #272) 2019-01-12 10:01:47 -05:00
Jay Berkenbilt 53d8e916b7 Interpret . in --pages as a shortcut for the primary file 2019-01-12 09:59:03 -05:00
Jay Berkenbilt 6b15579ace Update release notes 2019-01-07 20:10:14 -05:00
Jay Berkenbilt 74bef044cc Update release notes for 8.3.0 2019-01-07 11:16:54 -05:00
Jay Berkenbilt b653929c93 Update version to 8.3.0 2019-01-07 11:16:54 -05:00
Jay Berkenbilt 3472f6c984 Update copyrights for 2019 2019-01-07 07:54:55 -05:00
Jay Berkenbilt a70fbaaf50 Honor other base encodings when generating appearances 2019-01-05 23:01:59 -05:00
Jay Berkenbilt ab536a4e55 Documentation note 2019-01-05 08:49:43 -05:00
Jay Berkenbilt ee437705fc Update documentation for new features 2019-01-04 21:58:22 -05:00
Jay Berkenbilt 2e342ee5bb Spell check 2019-01-04 21:33:14 -05:00
Jay Berkenbilt 64c1579544 Support zsh completion 2018-12-23 11:21:59 -05:00
Jay Berkenbilt 76bf863aaa Add page position information to json 2018-12-23 09:15:40 -05:00
Jay Berkenbilt 6b90f3db4d Document new and missing command-line options 2018-12-23 09:15:40 -05:00
Jay Berkenbilt 24aeb9ae22 Document json support 2018-12-22 14:05:01 -05:00
Jay Berkenbilt 352ce9b22b Preserve page labels (numbers) when splitting and merging 2018-12-18 16:59:24 -05:00
Jay Berkenbilt 6ee761fc86 Prepare 8.2.1 release 2018-08-18 10:56:19 -04:00
Jay Berkenbilt 5e9e17e62a Prepare 8.2.0 release 2018-08-16 11:53:10 -04:00
Jay Berkenbilt 19229e296d Update documentation for 8.2.0 2018-08-16 11:53:10 -04:00
Jay Berkenbilt 48331b4bdc Fix manual page formatting issues
Reported in debian bug 902642
2018-08-12 14:18:18 -04:00
Jay Berkenbilt 1bd2a2e79b Prepare 8.1.0 release 2018-06-23 07:50:11 -04:00
Jay Berkenbilt c71dc6888c Don't prune resource dictionaries on errors or by request
If we are unable to filter a page's content streams, don't attempt to
remove objects from the page's resource dictionary. Also provide a
command line option to suppress resource removal in case we ever need
this as a workaround for some bug or broken PDF files.
2018-06-22 10:45:31 -04:00
Jay Berkenbilt 84cd53f5af Make page range optional in --rotate (fixes #211) 2018-06-21 16:28:44 -04:00
Jay Berkenbilt 419949574d Add information about helper classes to the documentation 2018-06-21 15:57:13 -04:00
Jay Berkenbilt b8ccbff413 doc: point out use of @filename for specifying password (fixes #198) 2018-05-05 17:52:04 -04:00
Jay Berkenbilt f8c8e4dcc0 Prepare 8.0.2 release 2018-03-06 11:34:07 -05:00
Jay Berkenbilt 6fe1e9de40 Prepare 8.0.1 release 2018-03-04 07:16:20 -05:00
Jay Berkenbilt 5c891cf4c4 Typo 2018-03-04 07:13:27 -05:00
Jay Berkenbilt 666f794393 Support "r" in page ranges (fixes #155) 2018-03-04 07:05:14 -05:00
Jay Berkenbilt fa76d817c6 Update website for Žarko Gajić 2018-03-01 21:24:34 -05:00
Jay Berkenbilt 3e8b643ae3 Release 8.0.0 2018-02-25 16:00:11 -05:00
Jay Berkenbilt 111ec50950 8.0.rc3 2018-02-25 14:17:59 -05:00
Jay Berkenbilt d3d3970cf6 8.0.rc2 2018-02-25 13:50:22 -05:00
Jay Berkenbilt a16d703f4d Update version to 8.0.rc1
This is for testing the release process, particularly as it pertains
to AppImage creation.
2018-02-25 09:03:27 -05:00
Jay Berkenbilt 079711a479 Add release notes for qpdf 8.0.0 2018-02-21 20:07:16 -05:00
Jay Berkenbilt 82cae01a76 Bump version number and soname
Bump to an alpha release. This version is not being widely released
but is being used to push the new shared library version through the
debian packaging system and to test out github releases.
2018-02-20 21:31:38 -05:00
Jay Berkenbilt b3dfbe3cd7 Document new command-line flags 2018-02-20 21:31:38 -05:00
Jay Berkenbilt e429a2e170 Describe content normalization edge cases in manual 2018-02-20 21:13:08 -05:00
Jay Berkenbilt cef637d8e1 Fix typo in manual page (fixes #181) 2018-02-18 20:09:18 -05:00
Jay Berkenbilt 2ebdd6929e Prepare 7.1.1 release 2018-02-04 18:31:42 -05:00
Jay Berkenbilt 2e4ca7ecf4 Update version numbers for 7.1.0 2018-01-14 20:09:20 -05:00
Jay Berkenbilt 6a64e150fd Update manual for 7.1.0 2018-01-14 20:09:20 -05:00
Jay Berkenbilt 68572df2bf Update copyright to 2018 2018-01-13 20:25:58 -05:00
Jay Berkenbilt 48864b8d6e Clarify documentation of advanced parsing options 2017-12-25 18:42:33 -05:00
Jay Berkenbilt 0f1ce8e646 Prepare 7.0.0 release 2017-09-16 13:22:15 -04:00
Jay Berkenbilt 07c8bb2843 Additionally license under Apache License version 2.0
The Apache License version 2.0 is now the primary license for qpdf.
However, users may, at their option, continue to use Artistic version
2.0.
2017-09-14 12:59:25 -04:00
Jay Berkenbilt 1e52d33822 Bump soname to 18 and version to 7.0.b1 2017-08-22 16:50:48 -04:00
Jay Berkenbilt 6219111ed7 Update references to README files
Most of the README files have been renamed. Refer to the new names.
2017-08-22 14:13:10 -04:00
Jay Berkenbilt 8288a4eb3a Update copyright to 2017 2017-08-21 21:18:47 -04:00
Jay Berkenbilt ddc6cf0cf6 Precheck streams by default
There is no need for a --precheck-streams option. We can do the
precheck without imposing any penalty, only re-encoding the stream if
it fails the first time.
2017-08-21 17:44:22 -04:00
Jay Berkenbilt 9744414c66 Enable finer grained control of stream decoding
This commit adds several API methods that enable control over which
types of filters QPDF will attempt to decode. It also adds support for
/RunLengthDecode and /DCTDecode filters for both encoding and
decoding.
2017-08-21 17:44:22 -04:00
Jay Berkenbilt a0a8f45a1c Add libjpeg dependency 2017-08-21 16:54:48 -04:00
Jay Berkenbilt cfa2eb97fb Add page rotation (fixes #132) 2017-08-12 22:57:38 -04:00
Jay Berkenbilt d926d78059 Add --verbose flag 2017-08-12 12:30:18 -04:00
Jay Berkenbilt df33c368b4 Change --single-pages to --split-pages
This is in preparation for implementing page groups.
2017-08-12 11:49:04 -04:00
Jay Berkenbilt 36b3fe5af7 Fix --newline-before-endstream option (fixes #133)
Add a newline unconditionally before endstream even if a newline was
already written as part of the stream data.
2017-08-11 20:57:05 -04:00
Jay Berkenbilt 9a96e233b0 Remove PCRE 2017-08-10 21:30:32 -04:00
Jay Berkenbilt 49825e5cb6 Add --split-pages option (fixes #30) 2017-08-05 10:22:33 -04:00
Jay Berkenbilt ad0e29a3a4 Fix doc typo 2017-08-05 10:22:33 -04:00
Jay Berkenbilt 164c37b5a6 Fix doc typo 2017-07-30 20:28:37 -04:00
Jay Berkenbilt 2d5b854468 Allow reading command-line args from files (fixes #16) 2017-07-29 22:23:21 -04:00
Jay Berkenbilt 4647acbe3c Clarify documentation on copyForeignObject (fixes #69)
Be explicit about the need to keep the source QPDF object around.
2017-07-29 12:19:04 -04:00
Jay Berkenbilt 3a1ff5ded9 Add option to preserve unreferenced objects 2017-07-28 19:19:11 -04:00
Jay Berkenbilt 7f8892525f Add precheck streams capability
When requested, QPDFWriter will do more aggress prechecking of streams
to make sure it can actually succeed in decoding them before
attempting to do so. This will allow preservation of raw data even
when the raw data is corrupted relative to the specified filters.
2017-07-27 23:42:27 -04:00
Jay Berkenbilt 80988380cc Fix page range example in documentation 2016-09-10 10:56:21 -04:00
Jay Berkenbilt b7302a9b72 Prepare 6.0.0 release 2015-11-10 12:48:52 -05:00
Jay Berkenbilt e5abc789a2 Prepare 5.2.0 release 2015-11-01 16:40:01 -05:00
Jay Berkenbilt 8ddca96e2d Fix copyright year in manual 2015-10-31 19:10:19 -04:00
Jay Berkenbilt ccc4f13509 Linearize manual 2015-10-31 19:10:19 -04:00
Jay Berkenbilt b8bdef0ad1 Implement deterministic ID
For non-encrypted files, determinstic ID generation uses file contents
instead of timestamp and file name. At a small runtime cost, this
enables generation of the same /ID if the same inputs are converted in
the same way multiple times.
2015-10-31 18:56:42 -04:00
Jay Berkenbilt 2d0cc34f98 Update documentation for 5.1.3 2015-05-24 17:26:49 -04:00
Jay Berkenbilt 4071db59aa Prepare 5.1.2 release 2014-06-07 17:16:52 -04:00
Jay Berkenbilt 247d70efee Prepare 5.1.1 release 2014-01-14 15:45:35 -05:00
Jay Berkenbilt 225b018290 Update Copyright to 2014 2014-01-14 15:40:02 -05:00
Jay Berkenbilt 0b6127558d Prepare 5.1.0 release 2013-12-17 15:26:07 -05:00
Jay Berkenbilt 30287d2d65 Allow OS-provided secure random to be disabled 2013-12-14 15:17:36 -05:00
Jay Berkenbilt e1bd72b46c Prepare for 5.0.1 release 2013-10-18 13:51:30 -04:00
Jay Berkenbilt 31b6e66cf1 Update doc for 5.0.0 2013-07-10 11:31:27 -04:00
Jay Berkenbilt b067c014b2 Replace - with -- in documentation
This is a cosmetic change since both are accepted.
2013-07-07 19:43:16 -04:00
Jay Berkenbilt 9adb6a8dfd Update for 4.2.0 2013-07-07 19:43:16 -04:00
Jay Berkenbilt 91367239fd Add --show-npages option to qpdf 2013-07-07 19:43:16 -04:00
Jay Berkenbilt adccedc02f Allow numeric range to be omitted qpdf --pages
Detect a missing page range and assume 1-z.
2013-07-07 19:43:16 -04:00
Jon Snell 66c88995fc Fix typo in qpdf-manual.xml
s/Controls handing of object streams./Controls handling of object streams./
2013-06-19 14:21:14 -04:00
Jay Berkenbilt 403bb68d33 Run spelling checker 2013-04-14 14:36:25 -04:00
Jay Berkenbilt be72eab99b Update release notes for 4.1.0 2013-04-14 14:31:32 -04:00
Jay Berkenbilt e8ddac8950 Document casting policy 2013-03-25 14:37:25 -04:00
Jay Berkenbilt 8708fd373d Prepare 4.0.1 release 2013-01-17 09:51:04 -05:00
Jay Berkenbilt 08e4c78658 Update documentation for version 4.0 2012-12-31 10:32:32 -05:00
Jay Berkenbilt 8843e499b8 Update copyright year to 2013
Also add copyright notice to a few public headers that were missing
one.
2012-12-31 10:32:32 -05:00
Jay Berkenbilt b4dc0f072a Prepare 3.0.2 release 2012-09-06 15:47:58 -04:00
Jay Berkenbilt 59432b5c70 Prepare 3.0.1 release 2012-08-11 13:41:18 -04:00
Jay Berkenbilt 511e68758c Update version to 3.0.0 2012-08-02 06:52:33 -04:00
Jay Berkenbilt 253b1ef865 Add missing release notes 2012-07-29 15:34:51 -04:00
Jay Berkenbilt 32051283b9 Fix spelling errors 2012-07-29 14:44:12 -04:00
Jay Berkenbilt bde98044f4 Improve password handling
Use --encryption-file-password, if given, in addition to --password as
a source for passwords for files specified in --pages.
2012-07-29 13:22:37 -04:00
Jay Berkenbilt f83bddf882 Update copyright to 2012 2012-07-28 22:03:36 -04:00
Jay Berkenbilt 2280c4f6d1 Update documentation and version numbers
3.0.rc1
2012-07-28 22:03:36 -04:00