Remove ref. from documentation references

This commit is contained in:
Jay Berkenbilt 2021-12-18 12:30:00 -05:00
parent 426b4ce856
commit c9d54fda51
12 changed files with 118 additions and 118 deletions

View File

@ -1,4 +1,4 @@
.. _ref.using: .. _using:
Running QPDF Running QPDF
============ ============
@ -6,7 +6,7 @@ Running QPDF
This chapter describes how to run the qpdf program from the command This chapter describes how to run the qpdf program from the command
line. line.
.. _ref.invocation: .. _invocation:
Basic Invocation Basic Invocation
---------------- ----------------
@ -26,7 +26,7 @@ place of :samp:`infilename`, the parameter
:samp:`--empty` may be specified. This causes qpdf to :samp:`--empty` may be specified. This causes qpdf to
use a dummy input file that contains zero pages. The only normal use use a dummy input file that contains zero pages. The only normal use
case for using :samp:`--empty` would be if you were case for using :samp:`--empty` would be if you were
going to add pages from another source, as discussed in :ref:`ref.page-selection`. going to add pages from another source, as discussed in :ref:`page-selection`.
If :samp:`@filename` appears as a word anywhere in the If :samp:`@filename` appears as a word anywhere in the
command-line, it will be read line by line, and each line will be command-line, it will be read line by line, and each line will be
@ -53,7 +53,7 @@ If you do this, qpdf will tell you about the
Most options require an output file, but some testing or inspection Most options require an output file, but some testing or inspection
commands do not. These are specifically noted. commands do not. These are specifically noted.
.. _ref.exit-status: .. _exit-status:
Exit Status Exit Status
~~~~~~~~~~~ ~~~~~~~~~~~
@ -80,7 +80,7 @@ Note that :command:`qpdf` never exists with status ``1``.
If you get an exit status of ``1``, it was something else, like the If you get an exit status of ``1``, it was something else, like the
shell not being able to find or execute :command:`qpdf`. shell not being able to find or execute :command:`qpdf`.
.. _ref.shell-completion: .. _shell-completion:
Shell Completion Shell Completion
---------------- ----------------
@ -100,7 +100,7 @@ to use completion with copy of qpdf that is built from source. You can
specify a full path to the qpdf you want to use for completion in the specify a full path to the qpdf you want to use for completion in the
``QPDF_EXECUTABLE`` environment variable. ``QPDF_EXECUTABLE`` environment variable.
.. _ref.basic-options: .. _basic-options:
Basic Options Basic Options
------------- -------------
@ -119,7 +119,7 @@ needed transformations.
:samp:`--show-crypto` :samp:`--show-crypto`
Show a list of available crypto providers, each on a line by itself. Show a list of available crypto providers, each on a line by itself.
The default provider is always listed first. See :ref:`ref.crypto` for more information about crypto The default provider is always listed first. See :ref:`crypto` for more information about crypto
providers. providers.
:samp:`--completion-bash` :samp:`--completion-bash`
@ -225,10 +225,10 @@ needed transformations.
Starting with version 10.4, qpdf issues warnings when requested to Starting with version 10.4, qpdf issues warnings when requested to
create files using RC4 encryption. This option suppresses those create files using RC4 encryption. This option suppresses those
warnings. In future versions of qpdf, qpdf will refuse to create warnings. In future versions of qpdf, qpdf will refuse to create
files with weak cryptography when this flag is not given. See :ref:`ref.weak-crypto` for additional details. files with weak cryptography when this flag is not given. See :ref:`weak-crypto` for additional details.
:samp:`--encrypt options --` :samp:`--encrypt options --`
Causes generation an encrypted output file. Please see :ref:`ref.encryption-options` for details on how to specify Causes generation an encrypted output file. Please see :ref:`encryption-options` for details on how to specify
encryption parameters. encryption parameters.
:samp:`--decrypt` :samp:`--decrypt`
@ -260,7 +260,7 @@ needed transformations.
Ordinarily, qpdf attempts to automatically compensate for passwords Ordinarily, qpdf attempts to automatically compensate for passwords
specified in the wrong character encoding. This option suppresses specified in the wrong character encoding. This option suppresses
that behavior. Under normal conditions, there are no reasons to use that behavior. Under normal conditions, there are no reasons to use
this option. See :ref:`ref.unicode-passwords` for a this option. See :ref:`unicode-passwords` for a
discussion discussion
:samp:`--password-mode={mode}` :samp:`--password-mode={mode}`
@ -271,7 +271,7 @@ needed transformations.
:samp:`hex-bytes` mode also applies to passwords :samp:`hex-bytes` mode also applies to passwords
specified for reading files. For additional discussion of the specified for reading files. For additional discussion of the
supported password modes and when you might want to use them, see supported password modes and when you might want to use them, see
:ref:`ref.unicode-passwords`. The following modes :ref:`unicode-passwords`. The following modes
are supported: are supported:
- :samp:`auto`: Automatically determine whether the - :samp:`auto`: Automatically determine whether the
@ -311,7 +311,7 @@ needed transformations.
:samp:`--rotate=[+|-]angle[:page-range]` :samp:`--rotate=[+|-]angle[:page-range]`
Apply rotation to specified pages. The Apply rotation to specified pages. The
:samp:`page-range` portion of the option value has :samp:`page-range` portion of the option value has
the same format as page ranges in :ref:`ref.page-selection`. If the page range is omitted, the the same format as page ranges in :ref:`page-selection`. If the page range is omitted, the
rotation is applied to all pages. The :samp:`angle` rotation is applied to all pages. The :samp:`angle`
portion of the parameter may be either 0, 90, 180, or 270. If portion of the parameter may be either 0, 90, 180, or 270. If
preceded by :samp:`+` or :samp:`-`, preceded by :samp:`+` or :samp:`-`,
@ -358,14 +358,14 @@ needed transformations.
:samp:`--keep-files-open` for details. :samp:`--keep-files-open` for details.
:samp:`--pages options --` :samp:`--pages options --`
Select specific pages from one or more input files. See :ref:`ref.page-selection` for details on how to do Select specific pages from one or more input files. See :ref:`page-selection` for details on how to do
page selection (splitting and merging). page selection (splitting and merging).
:samp:`--collate={n}` :samp:`--collate={n}`
When specified, collate rather than concatenate pages from files When specified, collate rather than concatenate pages from files
specified with :samp:`--pages`. With a numeric specified with :samp:`--pages`. With a numeric
argument, collate in groups of :samp:`{n}`. argument, collate in groups of :samp:`{n}`.
The default is 1. See :ref:`ref.page-selection` for additional details. The default is 1. See :ref:`page-selection` for additional details.
:samp:`--flatten-rotation` :samp:`--flatten-rotation`
For each page that is rotated using the ``/Rotate`` key in the page's For each page that is rotated using the ``/Rotate`` key in the page's
@ -418,11 +418,11 @@ needed transformations.
require the global data. require the global data.
:samp:`--overlay options --` :samp:`--overlay options --`
Overlay pages from another file onto the output pages. See :ref:`ref.overlay-underlay` for details on Overlay pages from another file onto the output pages. See :ref:`overlay-underlay` for details on
overlay/underlay. overlay/underlay.
:samp:`--underlay options --` :samp:`--underlay options --`
Overlay pages from another file onto the output pages. See :ref:`ref.overlay-underlay` for details on Overlay pages from another file onto the output pages. See :ref:`overlay-underlay` for details on
overlay/underlay. overlay/underlay.
Password-protected files may be opened by specifying a password. By Password-protected files may be opened by specifying a password. By
@ -442,13 +442,13 @@ Prior to 8.4.0, in the case of passwords that contain characters that
fall outside of 7-bit US-ASCII, qpdf left the burden of supplying fall outside of 7-bit US-ASCII, qpdf left the burden of supplying
properly encoded encryption and decryption passwords to the user. properly encoded encryption and decryption passwords to the user.
Starting in qpdf 8.4.0, qpdf does this automatically in most cases. For Starting in qpdf 8.4.0, qpdf does this automatically in most cases. For
an in-depth discussion, please see :ref:`ref.unicode-passwords`. Previous versions of this manual an in-depth discussion, please see :ref:`unicode-passwords`. Previous versions of this manual
described workarounds using the :command:`iconv` command. described workarounds using the :command:`iconv` command.
Such workarounds are no longer required or recommended with qpdf 8.4.0. Such workarounds are no longer required or recommended with qpdf 8.4.0.
However, for backward compatibility, qpdf attempts to detect those However, for backward compatibility, qpdf attempts to detect those
workarounds and do the right thing in most cases. workarounds and do the right thing in most cases.
.. _ref.encryption-options: .. _encryption-options:
Encryption Options Encryption Options
------------------ ------------------
@ -610,7 +610,7 @@ with the following exceptions:
The default for each permission option is to be fully permissive. The default for each permission option is to be fully permissive.
.. _ref.page-selection: .. _page-selection:
Page Selection Options Page Selection Options
---------------------- ----------------------
@ -814,7 +814,7 @@ would create a file with two copies of the first page of the input, and
the two copies would share any objects in common. This includes fonts, the two copies would share any objects in common. This includes fonts,
images, and anything else the page references. images, and anything else the page references.
.. _ref.overlay-underlay: .. _overlay-underlay:
Overlay and Underlay Options Overlay and Underlay Options
---------------------------- ----------------------------
@ -849,7 +849,7 @@ between the :samp:`--overlay` or
overlay/underlay file is encrypted. overlay/underlay file is encrypted.
- :samp:`--to=page-range`: a range of pages in the same - :samp:`--to=page-range`: a range of pages in the same
form at described in :ref:`ref.page-selection` form at described in :ref:`page-selection`
indicates which pages in the output should have the overlay/underlay indicates which pages in the output should have the overlay/underlay
applied. If not specified, overlay/underlay are applied to all pages. applied. If not specified, overlay/underlay are applied to all pages.
@ -880,7 +880,7 @@ Here are some examples.
underlay page 2 of :file:`footer.pdf` on all even underlay page 2 of :file:`footer.pdf` on all even
output pages. output pages.
.. _ref.attachments: .. _attachments:
Embedded Files/Attachments Options Embedded Files/Attachments Options
---------------------------------- ----------------------------------
@ -975,7 +975,7 @@ timezone offset in the form :samp:`{-hh'mm'}` or
:samp:`{+hh'mm'}`. Examples: :samp:`{+hh'mm'}`. Examples:
``D:20210207161528-05'00'``, ``D:20210207211528Z``. ``D:20210207161528-05'00'``, ``D:20210207211528Z``.
.. _ref.advanced-parsing: .. _advanced-parsing:
Advanced Parsing Options Advanced Parsing Options
------------------------ ------------------------
@ -1011,7 +1011,7 @@ this feature is if you are testing creation of hybrid PDF files and wish
to see how a PDF consumer that doesn't understand object and to see how a PDF consumer that doesn't understand object and
cross-reference streams would interpret such a file. cross-reference streams would interpret such a file.
.. _ref.advanced-transformation: .. _advanced-transformation:
Advanced Transformation Options Advanced Transformation Options
------------------------------- -------------------------------
@ -1097,7 +1097,7 @@ following options are available:
:samp:`--normalize-content=[yn]` :samp:`--normalize-content=[yn]`
Enables or disables normalization of content streams. Content Enables or disables normalization of content streams. Content
normalization is enabled by default in QDF mode. Please see :ref:`ref.qdf` for additional discussion of QDF mode. normalization is enabled by default in QDF mode. Please see :ref:`qdf` for additional discussion of QDF mode.
:samp:`--object-streams={mode}` :samp:`--object-streams={mode}`
Controls handling of object streams. The value of Controls handling of object streams. The value of
@ -1304,7 +1304,7 @@ following options are available:
Remove page labels from the output file. Remove page labels from the output file.
:samp:`--qdf` :samp:`--qdf`
Turns on QDF mode. For additional information on QDF, please see :ref:`ref.qdf`. Note that :samp:`--linearize` Turns on QDF mode. For additional information on QDF, please see :ref:`qdf`. Note that :samp:`--linearize`
disables QDF mode. disables QDF mode.
:samp:`--min-version={version}` :samp:`--min-version={version}`
@ -1413,9 +1413,9 @@ documents are interspersed with comments that make it easier for the
user to find things and also make it possible for user to find things and also make it possible for
:command:`fix-qdf` to work properly. QDF mode is intended :command:`fix-qdf` to work properly. QDF mode is intended
for people, mostly developers, who wish to inspect or modify PDF files for people, mostly developers, who wish to inspect or modify PDF files
in a text editor. For details, please see :ref:`ref.qdf`. in a text editor. For details, please see :ref:`qdf`.
.. _ref.testing-options: .. _testing-options:
Testing, Inspection, and Debugging Options Testing, Inspection, and Debugging Options
------------------------------------------ ------------------------------------------
@ -1519,7 +1519,7 @@ given. The following options are available:
:samp:`--json` :samp:`--json`
Generate a JSON representation of the file. This is described in Generate a JSON representation of the file. This is described in
depth in :ref:`ref.json` depth in :ref:`json`
:samp:`--json-help` :samp:`--json-help`
Describe the format of the JSON output. Describe the format of the JSON output.
@ -1571,7 +1571,7 @@ attempt to normalize the stream data as if it is a page content stream.
This attempt will be made even if it is not a page content stream, in This attempt will be made even if it is not a page content stream, in
which case it will produce unusable results. which case it will produce unusable results.
.. _ref.unicode-passwords: .. _unicode-passwords:
Unicode Passwords Unicode Passwords
----------------- -----------------

View File

@ -1,9 +1,9 @@
.. _ref.design: .. _design:
Design and Library Notes Design and Library Notes
======================== ========================
.. _ref.design.intro: .. _design.intro:
Introduction Introduction
------------ ------------
@ -33,7 +33,7 @@ This is by design as there seems to be a shortage of PDF validation
tools out there. This was, in fact, one of the major motivations behind tools out there. This was, in fact, one of the major motivations behind
the initial creation of qpdf. the initial creation of qpdf.
.. _ref.design-goals: .. _design-goals:
Design Goals Design Goals
------------ ------------
@ -118,9 +118,9 @@ full details, please see the header files
:file:`QPDF.hh` and :file:`QPDF.hh` and
:file:`QPDFObjectHandle.hh`. There are also some :file:`QPDFObjectHandle.hh`. There are also some
additional helper classes that provide higher level API functions for additional helper classes that provide higher level API functions for
certain document constructions. These are discussed in :ref:`ref.helper-classes`. certain document constructions. These are discussed in :ref:`helper-classes`.
.. _ref.helper-classes: .. _helper-classes:
Helper Classes Helper Classes
-------------- --------------
@ -219,7 +219,7 @@ remain in those classes even as alternatives are provided in helper
classes. Going forward, new higher level interfaces will be provided classes. Going forward, new higher level interfaces will be provided
using helper classes. using helper classes.
.. _ref.implementation-notes: .. _implementation-notes:
Implementation Notes Implementation Notes
-------------------- --------------------
@ -321,7 +321,7 @@ file.
As the client continues to request objects, the same process is As the client continues to request objects, the same process is
followed for each new requested object. followed for each new requested object.
.. _ref.casting: .. _casting:
Casting Policy Casting Policy
-------------- --------------
@ -395,7 +395,7 @@ prevent this from being done. There are places in the code where
adequate testing to assert that it is safe and will remain safe in adequate testing to assert that it is safe and will remain safe in
qpdf's code. qpdf's code.
.. _ref.encryption: .. _encryption:
Encryption Encryption
---------- ----------
@ -467,7 +467,7 @@ created, even if the results are not useful to some readers. One use
case for this would be for testing a PDF reader to ensure that it case for this would be for testing a PDF reader to ensure that it
handles odd configurations of input files. handles odd configurations of input files.
.. _ref.random-numbers: .. _random-numbers:
Random Number Generation Random Number Generation
------------------------ ------------------------
@ -484,7 +484,7 @@ details on how to do this, please refer to the top-level README.md file
in the source distribution and to comments in in the source distribution and to comments in
:file:`QUtil.hh`. :file:`QUtil.hh`.
.. _ref.adding-and-remove-pages: .. _adding-and-remove-pages:
Adding and Removing Pages Adding and Removing Pages
------------------------- -------------------------
@ -497,7 +497,7 @@ individual pages and manipulation of the ``/Pages`` tree itself. For
details, see ``addPage`` and surrounding methods in details, see ``addPage`` and surrounding methods in
:file:`QPDF.hh`. :file:`QPDF.hh`.
.. _ref.reserved-objects: .. _reserved-objects:
Reserving Object Numbers Reserving Object Numbers
------------------------ ------------------------
@ -520,11 +520,11 @@ construct the references. When finished, you can call
``QPDF::replaceReserved`` to replace the reserved objects with the real ``QPDF::replaceReserved`` to replace the reserved objects with the real
ones. This functionality will never be needed by most applications, but ones. This functionality will never be needed by most applications, but
it is used internally by QPDF when copying objects from other PDF files, it is used internally by QPDF when copying objects from other PDF files,
as discussed in :ref:`ref.foreign-objects`. For an example of how to use reserved as discussed in :ref:`foreign-objects`. For an example of how to use reserved
objects, search for ``newReserved`` in objects, search for ``newReserved`` in
:file:`test_driver.cc` in qpdf's sources. :file:`test_driver.cc` in qpdf's sources.
.. _ref.foreign-objects: .. _foreign-objects:
Copying Objects From Other PDF Files Copying Objects From Other PDF Files
------------------------------------ ------------------------------------
@ -560,7 +560,7 @@ source ``QPDF`` object must remain valid until you have finished with
the destination object. This is because the original object is still the destination object. This is because the original object is still
used to retrieve any referenced stream data from the copied object. used to retrieve any referenced stream data from the copied object.
.. _ref.rewriting: .. _rewriting:
Writing PDF Files Writing PDF Files
----------------- -----------------
@ -568,9 +568,9 @@ Writing PDF Files
The qpdf library supports file writing of ``QPDF`` objects to PDF files The qpdf library supports file writing of ``QPDF`` objects to PDF files
through the ``QPDFWriter`` class. The ``QPDFWriter`` class has two through the ``QPDFWriter`` class. The ``QPDFWriter`` class has two
writing modes: one for non-linearized files, and one for linearized writing modes: one for non-linearized files, and one for linearized
files. See :ref:`ref.linearization` for a description of files. See :ref:`linearization` for a description of
linearization is implemented. This section describes how we write linearization is implemented. This section describes how we write
non-linearized files including the creation of QDF files (see :ref:`ref.qdf`. non-linearized files including the creation of QDF files (see :ref:`qdf`.
This outline was written prior to implementation and is not exactly This outline was written prior to implementation and is not exactly
accurate, but it provides a correct "notional" idea of how writing accurate, but it provides a correct "notional" idea of how writing
@ -645,7 +645,7 @@ can be used to write out a new xref table. Finally we can write out the
trailer dictionary with appropriately computed /ID (see spec, 8.3, File trailer dictionary with appropriately computed /ID (see spec, 8.3, File
Identifiers), the cross reference table offset, and ``%%EOF``. Identifiers), the cross reference table offset, and ``%%EOF``.
.. _ref.filtered-streams: .. _filtered-streams:
Filtered Streams Filtered Streams
---------------- ----------------
@ -670,7 +670,7 @@ should write to whatever type of output is required. The ``QPDF`` class
has an interface to write raw or filtered stream contents to a given has an interface to write raw or filtered stream contents to a given
pipeline. pipeline.
.. _ref.object-accessors: .. _object-accessors:
Object Accessor Methods Object Accessor Methods
----------------------- -----------------------

View File

@ -1,4 +1,4 @@
.. _ref.installing: .. _installing:
Building and Installing QPDF Building and Installing QPDF
============================ ============================
@ -7,7 +7,7 @@ This chapter describes how to build and install qpdf. Please see also
the :file:`README.md` and the :file:`README.md` and
:file:`INSTALL` files in the source distribution. :file:`INSTALL` files in the source distribution.
.. _ref.prerequisites: .. _prerequisites:
System Requirements System Requirements
------------------- -------------------
@ -68,7 +68,7 @@ documentation, you need ``pdflatex``, ``latexmk``, and a fairly complete
LaTeX installation. Detailed requirements can be found in the Sphinx LaTeX installation. Detailed requirements can be found in the Sphinx
documentation. documentation.
.. _ref.building: .. _building:
Build Instructions Build Instructions
------------------ ------------------
@ -112,7 +112,7 @@ hand-crafted non-recursive Makefile that requires gnu make. If you're
really interested, please read the comments in the top-level really interested, please read the comments in the top-level
:file:`Makefile`. :file:`Makefile`.
.. _ref.crypto: .. _crypto:
Crypto Providers Crypto Providers
---------------- ----------------
@ -131,7 +131,7 @@ Additional implementations may be added if needed. It is also possible
for a developer to provide their own implementation without modifying for a developer to provide their own implementation without modifying
the qpdf library. the qpdf library.
.. _ref.crypto.build: .. _crypto.build:
Build Support For Crypto Providers Build Support For Crypto Providers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -192,7 +192,7 @@ build, and you can ignore
:file:`libqpdf/build.mk` to get the list of source :file:`libqpdf/build.mk` to get the list of source
files you need to build. files you need to build.
.. _ref.crypto.runtime: .. _crypto.runtime:
Runtime Crypto Provider Selection Runtime Crypto Provider Selection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -211,7 +211,7 @@ to compare behavior of two different crypto providers while testing
performance or reproducing a bug. It could also be useful for people who performance or reproducing a bug. It could also be useful for people who
are implementing their own crypto providers. are implementing their own crypto providers.
.. _ref.crypto.develop: .. _crypto.develop:
Crypto Provider Information for Developers Crypto Provider Information for Developers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -224,7 +224,7 @@ provider, you have to create a class derived from ``QPDFCryptoImpl`` and
register it with ``QPDFCryptoProvider``. For additional information, see register it with ``QPDFCryptoProvider``. For additional information, see
comments in :file:`include/qpdf/QPDFCryptoImpl.hh`. comments in :file:`include/qpdf/QPDFCryptoImpl.hh`.
.. _ref.crypto.design: .. _crypto.design:
Crypto Provider Design Notes Crypto Provider Design Notes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -298,7 +298,7 @@ Implementing the registration functions and internal storage of
registered providers was also easier using C++-11's functional registered providers was also easier using C++-11's functional
interfaces, which was another reason to require C++-11 at this time. interfaces, which was another reason to require C++-11 at this time.
.. _ref.packaging: .. _packaging:
Notes for Packagers Notes for Packagers
------------------- -------------------
@ -311,7 +311,7 @@ some things you may want to keep in mind:
However, qpdf still has a build-time dependency on perl. However, qpdf still has a build-time dependency on perl.
- Make sure you are getting the intended behavior with regard to crypto - Make sure you are getting the intended behavior with regard to crypto
providers. Read :ref:`ref.crypto.build` for details. providers. Read :ref:`crypto.build` for details.
- Passing :samp:`--enable-show-failed-test-output` to - Passing :samp:`--enable-show-failed-test-output` to
:command:`./configure` will cause any failed test :command:`./configure` will cause any failed test

View File

@ -1,9 +1,9 @@
.. _ref.json: .. _json:
QPDF JSON QPDF JSON
========= =========
.. _ref.json-overview: .. _json-overview:
Overview Overview
-------- --------
@ -18,7 +18,7 @@ files programmatically from the command-line in languages that can't
call or link with the qpdf library directly. Note that stream data can call or link with the qpdf library directly. Note that stream data can
be extracted from PDF files using other qpdf command-line options. be extracted from PDF files using other qpdf command-line options.
.. _ref.json-guarantees: .. _json-guarantees:
JSON Guarantees JSON Guarantees
--------------- ---------------

View File

@ -1,9 +1,9 @@
.. _ref.using-library: .. _using-library:
Using the QPDF Library Using the QPDF Library
====================== ======================
.. _ref.using.from-cxx: .. _using.from-cxx:
Using QPDF from C++ Using QPDF from C++
------------------- -------------------
@ -34,7 +34,7 @@ individual ``QPDF`` object instance (including ``QPDF``,
thread at a time. Multiple threads may simultaneously work with thread at a time. Multiple threads may simultaneously work with
different instances of these and all other QPDF objects. different instances of these and all other QPDF objects.
.. _ref.using.other-languages: .. _using.other-languages:
Using QPDF from other languages Using QPDF from other languages
------------------------------- -------------------------------
@ -65,9 +65,9 @@ Other Languages
command-line tool can produce a JSON representation of the PDF file's command-line tool can produce a JSON representation of the PDF file's
non-content data. This can facilitate interacting programmatically non-content data. This can facilitate interacting programmatically
with PDF files through qpdf's command line interface. For more with PDF files through qpdf's command line interface. For more
information, please see :ref:`ref.json`. information, please see :ref:`json`.
.. _ref.unicode-files: .. _unicode-files:
A Note About Unicode File Names A Note About Unicode File Names
------------------------------- -------------------------------

View File

@ -1,4 +1,4 @@
.. _ref.license: .. _license:
License License
======= =======

View File

@ -1,4 +1,4 @@
.. _ref.linearization: .. _linearization:
Linearization Linearization
============= =============
@ -6,7 +6,7 @@ Linearization
This chapter describes how ``QPDF`` and ``QPDFWriter`` implement This chapter describes how ``QPDF`` and ``QPDFWriter`` implement
creation and processing of linearized PDFS. creation and processing of linearized PDFS.
.. _ref.linearization-strategy: .. _linearization-strategy:
Basic Strategy for Linearization Basic Strategy for Linearization
-------------------------------- --------------------------------
@ -22,7 +22,7 @@ was first tested against linearized files created by external tools
(Acrobat and pdlin) and then used to validate files created by (Acrobat and pdlin) and then used to validate files created by
``QPDFWriter`` itself. ``QPDFWriter`` itself.
.. _ref.linearized.preparation: .. _linearized.preparation:
Preparing For Linearization Preparing For Linearization
--------------------------- ---------------------------
@ -34,7 +34,7 @@ tree). We also have to know which objects refer to which other objects,
being concerned with page boundaries and a few other cases. We refer to being concerned with page boundaries and a few other cases. We refer to
this part of preparing the PDF file as this part of preparing the PDF file as
*optimization*, discussed in *optimization*, discussed in
:ref:`ref.optimization`. Note the, in this context, the :ref:`optimization`. Note the, in this context, the
term *optimization* is a qpdf term, and the term *optimization* is a qpdf term, and the
term *linearization* is a term from the PDF term *linearization* is a term from the PDF
specification. Do not be confused by the fact that many applications specification. Do not be confused by the fact that many applications
@ -49,7 +49,7 @@ really only a few issues that need to be dealt with:
- Filling in offsets and byte sizes - Filling in offsets and byte sizes
.. _ref.optimization: .. _optimization:
Optimization Optimization
------------ ------------
@ -85,7 +85,7 @@ Note that pages and thumbnails have different object user types, so the
above test on a page will not include objects referenced by the page's above test on a page will not include objects referenced by the page's
thumbnail dictionary and nothing else. thumbnail dictionary and nothing else.
.. _ref.linearization.writing: .. _linearization.writing:
Writing Linearized Files Writing Linearized Files
------------------------ ------------------------
@ -131,7 +131,7 @@ Using this strategy, we can write linearized files to a non-seekable
output stream with only a single pass to disk or wherever the output is output stream with only a single pass to disk or wherever the output is
going. going.
.. _ref.linearization-data: .. _linearization-data:
Calculating Linearization Data Calculating Linearization Data
------------------------------ ------------------------------
@ -147,7 +147,7 @@ object is encountered that has not already been queued. (This could
happen only if there were a bug in the traversal code used to calculate happen only if there were a bug in the traversal code used to calculate
the linearization data.) the linearization data.)
.. _ref.linearization-issues: .. _linearization-issues:
Known Issues with Linearization Known Issues with Linearization
------------------------------- -------------------------------
@ -172,7 +172,7 @@ linearization appendix of the PDF specification.
most of the information needed to create thumbnail hint tables. There most of the information needed to create thumbnail hint tables. There
are comments in the code about this. are comments in the code about this.
.. _ref.linearization-debugging: .. _linearization-debugging:
Debugging Note Debugging Note
-------------- --------------

View File

@ -1,4 +1,4 @@
.. _ref.object-and-xref-streams: .. _object-and-xref-streams:
Object and Cross-Reference Streams Object and Cross-Reference Streams
================================== ==================================
@ -6,7 +6,7 @@ Object and Cross-Reference Streams
This chapter provides information about the implementation of object This chapter provides information about the implementation of object
stream and cross-reference stream support in qpdf. stream and cross-reference stream support in qpdf.
.. _ref.object-streams: .. _object-streams:
Object Streams Object Streams
-------------- --------------
@ -27,7 +27,7 @@ if the file is encrypted, though this is not specifically disallowed by
the specification. the specification.
There are additional restrictions for linearized files. See There are additional restrictions for linearized files. See
:ref:`ref.object-streams-linearization` for details. :ref:`object-streams-linearization` for details.
The PDF specification refers to objects in object streams as "compressed The PDF specification refers to objects in object streams as "compressed
objects" regardless of whether the object stream is compressed. objects" regardless of whether the object stream is compressed.
@ -62,7 +62,7 @@ is the object number and the byte offset of the object relative to the
first object in the stream, followed by the objects themselves, first object in the stream, followed by the objects themselves,
concatenated. concatenated.
.. _ref.xref-streams: .. _xref-streams:
Cross-Reference Streams Cross-Reference Streams
----------------------- -----------------------
@ -111,7 +111,7 @@ which are these:
The other fields in the xref stream, which may be indirect if desired, The other fields in the xref stream, which may be indirect if desired,
are the union of those from the xref table's trailer dictionary. are the union of those from the xref table's trailer dictionary.
.. _ref.xref-stream-data: .. _xref-stream-data:
Cross-Reference Stream Data Cross-Reference Stream Data
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -138,7 +138,7 @@ PDF 1.5 has three field types:
It seems standard to have the first entry in the table be ``0 0 0`` It seems standard to have the first entry in the table be ``0 0 0``
instead of ``0 0 ffff`` if there are no deleted objects. instead of ``0 0 ffff`` if there are no deleted objects.
.. _ref.object-streams-linearization: .. _object-streams-linearization:
Implications for Linearized Files Implications for Linearized Files
--------------------------------- ---------------------------------
@ -161,7 +161,7 @@ When numbering objects, all shared objects within both the first and
second halves of the linearized files must be numbered consecutively second halves of the linearized files must be numbered consecutively
after all normal uncompressed objects in that half. after all normal uncompressed objects in that half.
.. _ref.object-stream-implementation: .. _object-stream-implementation:
Implementation Notes Implementation Notes
-------------------- --------------------

View File

@ -1,4 +1,4 @@
.. _ref.overview: .. _overview:
What is QPDF? What is QPDF?
============= =============

View File

@ -1,4 +1,4 @@
.. _ref.qdf: .. _qdf:
QDF Mode QDF Mode
======== ========

View File

@ -1,4 +1,4 @@
.. _ref.release-notes: .. _release-notes:
Release Notes Release Notes
============= =============
@ -34,7 +34,7 @@ For a detailed list of changes, please see the file
error code of ``qpdf_e_object`` instead of error code of ``qpdf_e_object`` instead of
``qpdf_e_damaged_pdf``. Also, comments have been added to ``qpdf_e_damaged_pdf``. Also, comments have been added to
:file:`QPDFObjectHandle.hh` to explain in more detail what the :file:`QPDFObjectHandle.hh` to explain in more detail what the
behavior is. See :ref:`ref.object-accessors` for a more in-depth behavior is. See :ref:`object-accessors` for a more in-depth
discussion. discussion.
- Add ``Pl_Buffer::getMallocBuffer()`` to initialize a buffer - Add ``Pl_Buffer::getMallocBuffer()`` to initialize a buffer
@ -88,7 +88,7 @@ For a detailed list of changes, please see the file
acknowledgment moving forward. For qpdf 10.4, this change only acknowledgment moving forward. For qpdf 10.4, this change only
affects the command-line tool. Starting in qpdf 11, there will affects the command-line tool. Starting in qpdf 11, there will
be small API changes to require explicit acknowledgment in be small API changes to require explicit acknowledgment in
those cases as well. For additional information, see :ref:`ref.weak-crypto`. those cases as well. For additional information, see :ref:`weak-crypto`.
- Bug Fixes - Bug Fixes
@ -243,7 +243,7 @@ For a detailed list of changes, please see the file
- CLI Enhancements - CLI Enhancements
- Add new command line options for listing, saving, adding, - Add new command line options for listing, saving, adding,
removing, and and copying file attachments. See :ref:`ref.attachments` for details. removing, and and copying file attachments. See :ref:`attachments` for details.
- Page splitting and merging operations, as well as - Page splitting and merging operations, as well as
:samp:`--flatten-rotation`, are better behaved :samp:`--flatten-rotation`, are better behaved
@ -654,7 +654,7 @@ For a detailed list of changes, please see the file
expensive process of finding and removing unreferenced expensive process of finding and removing unreferenced
resources is likely to be of benefit. For most files, this new resources is likely to be of benefit. For most files, this new
default will result in a significant performance improvement default will result in a significant performance improvement
for splitting pages. See :ref:`ref.advanced-transformation` for a more detailed for splitting pages. See :ref:`advanced-transformation` for a more detailed
discussion. discussion.
- The :samp:`--preserve-unreferenced-resources` - The :samp:`--preserve-unreferenced-resources`
@ -786,8 +786,8 @@ For a detailed list of changes, please see the file
- A C++-11 compiler is now required to build qpdf. - A C++-11 compiler is now required to build qpdf.
- A new crypto provider that uses gnutls for crypto functions is - A new crypto provider that uses gnutls for crypto functions is
now available and can be enabled at build time. See :ref:`ref.crypto` for more information about crypto now available and can be enabled at build time. See :ref:`crypto` for more information about crypto
providers and :ref:`ref.crypto.build` for specific information about providers and :ref:`crypto.build` for specific information about
the build. the build.
- Library Enhancements - Library Enhancements
@ -811,12 +811,12 @@ For a detailed list of changes, please see the file
This includes the addition of new classes This includes the addition of new classes
``QPDFCryptoProvider`` and ``QPDFCryptoImpl`` and the ``QPDFCryptoProvider`` and ``QPDFCryptoImpl`` and the
recognition of the ``QPDF_CRYPTO_PROVIDER`` environment recognition of the ``QPDF_CRYPTO_PROVIDER`` environment
variable. Crypto providers are described in depth in :ref:`ref.crypto`. variable. Crypto providers are described in depth in :ref:`crypto`.
- CLI Enhancements - CLI Enhancements
- Addition of the :samp:`--show-crypto` option in - Addition of the :samp:`--show-crypto` option in
support of selectable crypto providers, as described in :ref:`ref.crypto`. support of selectable crypto providers, as described in :ref:`crypto`.
- Allow ``:even`` or ``:odd`` to be appended to numeric ranges - Allow ``:even`` or ``:odd`` to be appended to numeric ranges
for specification of the even or odd pages from among the pages for specification of the even or odd pages from among the pages
@ -885,7 +885,7 @@ For a detailed list of changes, please see the file
- The :samp:`--replace-input` option may be given - The :samp:`--replace-input` option may be given
in place of an output file name. This causes qpdf to overwrite in place of an output file name. This causes qpdf to overwrite
the input file with the output. See the description of the input file with the output. See the description of
:samp:`--replace-input` in :ref:`ref.basic-options` for more details. :samp:`--replace-input` in :ref:`basic-options` for more details.
- The :samp:`--recompress-flate` instructs - The :samp:`--recompress-flate` instructs
:command:`qpdf` to recompress streams that are :command:`qpdf` to recompress streams that are
@ -906,7 +906,7 @@ For a detailed list of changes, please see the file
conversion methods do range checking to ensure that the cast conversion methods do range checking to ensure that the cast
can be performed with no loss of information. Every use of can be performed with no loss of information. Every use of
``static_cast`` in the library was inspected to see if it could ``static_cast`` in the library was inspected to see if it could
use one of these safe converters instead. See :ref:`ref.casting` for additional details. use one of these safe converters instead. See :ref:`casting` for additional details.
- Method ``QPDF::anyWarnings`` tells whether there have been any - Method ``QPDF::anyWarnings`` tells whether there have been any
warnings without clearing the list of warnings. warnings without clearing the list of warnings.
@ -1100,7 +1100,7 @@ For a detailed list of changes, please see the file
previous releases when the passwords contain non-ASCII previous releases when the passwords contain non-ASCII
characters. In some cases, the behavior differs from previous characters. In some cases, the behavior differs from previous
releases. For a discussion of the current behavior, please see releases. For a discussion of the current behavior, please see
:ref:`ref.unicode-passwords`. The :ref:`unicode-passwords`. The
incompatibilities are as follows: incompatibilities are as follows:
- On Windows, qpdf now receives all command-line options as - On Windows, qpdf now receives all command-line options as
@ -1131,7 +1131,7 @@ For a detailed list of changes, please see the file
the PDF spec requires. While this is almost always the the PDF spec requires. While this is almost always the
correct behavior, it is possible to override the behavior if correct behavior, it is possible to override the behavior if
there is some reason to do so. This is discussed in more there is some reason to do so. This is discussed in more
depth in :ref:`ref.unicode-passwords`. depth in :ref:`unicode-passwords`.
- New options - New options
:samp:`--externalize-inline-images`, :samp:`--externalize-inline-images`,
@ -1140,12 +1140,12 @@ For a detailed list of changes, please see the file
handling of inline images and possible conversion of them to handling of inline images and possible conversion of them to
regular images. By default, regular images. By default,
:samp:`--optimize-images` now also applies to :samp:`--optimize-images` now also applies to
inline images. These options are discussed in :ref:`ref.advanced-transformation`. inline images. These options are discussed in :ref:`advanced-transformation`.
- Add options :samp:`--overlay` and - Add options :samp:`--overlay` and
:samp:`--underlay` for overlaying or :samp:`--underlay` for overlaying or
underlaying pages of other files onto output pages. See underlaying pages of other files onto output pages. See
:ref:`ref.overlay-underlay` for :ref:`overlay-underlay` for
details. details.
- When opening an encrypted file with a password, if the - When opening an encrypted file with a password, if the
@ -1154,12 +1154,12 @@ For a detailed list of changes, please see the file
passwords to try to compensate for possible character encoding passwords to try to compensate for possible character encoding
errors. This behavior can be suppressed with the errors. This behavior can be suppressed with the
:samp:`--suppress-password-recovery` option. :samp:`--suppress-password-recovery` option.
See :ref:`ref.unicode-passwords` for a full See :ref:`unicode-passwords` for a full
discussion. discussion.
- Add the :samp:`--password-mode` option to - Add the :samp:`--password-mode` option to
fine-tune how qpdf interprets password arguments, especially fine-tune how qpdf interprets password arguments, especially
when they contain non-ASCII characters. See :ref:`ref.unicode-passwords` for more information. when they contain non-ASCII characters. See :ref:`unicode-passwords` for more information.
- In the :samp:`--pages` option, it is now - In the :samp:`--pages` option, it is now
possible to copy the same page more than once from the same possible to copy the same page more than once from the same
@ -1333,7 +1333,7 @@ For a detailed list of changes, please see the file
- Page collation: add new option - Page collation: add new option
:samp:`--collate`. When specified, the :samp:`--collate`. When specified, the
semantics of :samp:`--pages` change from semantics of :samp:`--pages` change from
concatenation to collation. See :ref:`ref.page-selection` for examples and discussion. concatenation to collation. See :ref:`page-selection` for examples and discussion.
- Generation of information in JSON format, primarily to - Generation of information in JSON format, primarily to
facilitate use of qpdf from languages other than C++. Add new facilitate use of qpdf from languages other than C++. Add new
@ -1342,7 +1342,7 @@ For a detailed list of changes, please see the file
:samp:`--json-object` to generate a JSON :samp:`--json-object` to generate a JSON
representation of the PDF file. Run :command:`qpdf representation of the PDF file. Run :command:`qpdf
--json-help` to get a description of the JSON --json-help` to get a description of the JSON
format. For more information, see :ref:`ref.json`. format. For more information, see :ref:`json`.
- The :samp:`--generate-appearances` flag will - The :samp:`--generate-appearances` flag will
cause qpdf to generate appearances for form fields if the PDF cause qpdf to generate appearances for form fields if the PDF
@ -1500,7 +1500,7 @@ For a detailed list of changes, please see the file
- Notes for Packagers - Notes for Packagers
- A new section has been added to the documentation with notes - A new section has been added to the documentation with notes
for packagers. Please see :ref:`ref.packaging`. for packagers. Please see :ref:`packaging`.
- The qpdf detects out-of-date automatically generated files. If - The qpdf detects out-of-date automatically generated files. If
your packaging system automatically refreshes libtool or your packaging system automatically refreshes libtool or
@ -1522,7 +1522,7 @@ For a detailed list of changes, please see the file
:samp:`--keep-files-open={[yn]}` :samp:`--keep-files-open={[yn]}`
to override default determination of whether to keep files open to override default determination of whether to keep files open
when merging. Please see the discussion of when merging. Please see the discussion of
:samp:`--keep-files-open` in :ref:`ref.basic-options` for additional details. :samp:`--keep-files-open` in :ref:`basic-options` for additional details.
8.2.0: August 16, 2018 8.2.0: August 16, 2018
- Command-line Enhancements - Command-line Enhancements
@ -1588,7 +1588,7 @@ For a detailed list of changes, please see the file
page splitting is very slow, the old behavior (and speed) can page splitting is very slow, the old behavior (and speed) can
be enabled by specifying be enabled by specifying
:samp:`--preserve-unreferenced-resources`. For :samp:`--preserve-unreferenced-resources`. For
additional details, please see :ref:`ref.advanced-transformation`. additional details, please see :ref:`advanced-transformation`.
- When merging multiple PDF files, qpdf no longer leaves all the - When merging multiple PDF files, qpdf no longer leaves all the
files open. This makes it possible to merge numbers of files files open. This makes it possible to merge numbers of files
@ -1633,7 +1633,7 @@ For a detailed list of changes, please see the file
introduced. These are designed to provide a more convenient way introduced. These are designed to provide a more convenient way
of interacting with certain document features than using of interacting with certain document features than using
``QPDFObjectHandle`` directly. For details on helpers, see ``QPDFObjectHandle`` directly. For details on helpers, see
:ref:`ref.helper-classes`. Specific additional :ref:`helper-classes`. Specific additional
interfaces are described below. interfaces are described below.
- Add two new document helper classes: ``QPDFPageDocumentHelper`` - Add two new document helper classes: ``QPDFPageDocumentHelper``
@ -1718,7 +1718,7 @@ For a detailed list of changes, please see the file
- Enhancements to the :command:`qpdf` Command-line - Enhancements to the :command:`qpdf` Command-line
Tool. All new options listed here are documented in more detail in Tool. All new options listed here are documented in more detail in
:ref:`ref.using`. :ref:`using`.
- The option - The option
:samp:`--linearize-pass1={file}` :samp:`--linearize-pass1={file}`
@ -1774,7 +1774,7 @@ For a detailed list of changes, please see the file
the encryption key used by a file. This is a non-standard the encryption key used by a file. This is a non-standard
operation, but it can be useful in certain situations. Please see operation, but it can be useful in certain situations. Please see
the discussion of :samp:`--password-is-hex-key` in the discussion of :samp:`--password-is-hex-key` in
:ref:`ref.basic-options` or the comments around :ref:`basic-options` or the comments around
``QPDF::setPasswordIsHexKey`` in ``QPDF::setPasswordIsHexKey`` in
:file:`QPDF.hh` for additional details. :file:`QPDF.hh` for additional details.
@ -1832,10 +1832,10 @@ For a detailed list of changes, please see the file
- Enhancements to the :command:`qpdf` Command-line - Enhancements to the :command:`qpdf` Command-line
Tool. All new options listed here are documented in more detail in Tool. All new options listed here are documented in more detail in
:ref:`ref.using`. :ref:`using`.
- Command-line arguments can now be read from files or standard - Command-line arguments can now be read from files or standard
input using ``@file`` or ``@-`` syntax. Please see :ref:`ref.invocation`. input using ``@file`` or ``@-`` syntax. Please see :ref:`invocation`.
- :samp:`--rotate`: request page rotation - :samp:`--rotate`: request page rotation
@ -2147,7 +2147,7 @@ For a detailed list of changes, please see the file
``QPDFWriter::setMinimumPDFVersion`` and ``QPDFWriter::setMinimumPDFVersion`` and
``QPDFWriter::forcePDFVersion`` that accept an extension level, ``QPDFWriter::forcePDFVersion`` that accept an extension level,
and extended syntax for specifying forced and minimum versions on and extended syntax for specifying forced and minimum versions on
the command line as described in :ref:`ref.advanced-transformation`. Corresponding functions the command line as described in :ref:`advanced-transformation`. Corresponding functions
have been added to the C API as well. have been added to the C API as well.
- Minor fixes to prevent qpdf from referencing objects in the file - Minor fixes to prevent qpdf from referencing objects in the file
@ -2294,17 +2294,17 @@ For a detailed list of changes, please see the file
- Support for page selection (splitting and merging PDF files) has - Support for page selection (splitting and merging PDF files) has
been added to the :command:`qpdf` command-line been added to the :command:`qpdf` command-line
tool. See :ref:`ref.page-selection`. tool. See :ref:`page-selection`.
- Options have been added to the :command:`qpdf` - Options have been added to the :command:`qpdf`
command-line tool for copying encryption parameters from another command-line tool for copying encryption parameters from another
file. See :ref:`ref.basic-options`. file. See :ref:`basic-options`.
- New methods have been added to the ``QPDF`` object for adding and - New methods have been added to the ``QPDF`` object for adding and
removing pages. See :ref:`ref.adding-and-remove-pages`. removing pages. See :ref:`adding-and-remove-pages`.
- New methods have been added to the ``QPDF`` object for copying - New methods have been added to the ``QPDF`` object for copying
objects from other PDF files. See :ref:`ref.foreign-objects` objects from other PDF files. See :ref:`foreign-objects`
- A new method ``QPDFObjectHandle::parse`` has been added for - A new method ``QPDFObjectHandle::parse`` has been added for
constructing ``QPDFObjectHandle`` objects from a string constructing ``QPDFObjectHandle`` objects from a string

View File

@ -1,4 +1,4 @@
.. _ref.weak-crypto: .. _weak-crypto:
Weak Cryptography Weak Cryptography
================= =================