manpagez: man pages & more
man qpdf(1)
Home | html | info | man
qpdf(1)                          User Commands                         qpdf(1)


NAME

       qpdf - PDF transformation software


SYNOPSIS

       qpdf [ options ] infilename [ outfilename ]


DESCRIPTION

       The qpdf program is used to convert one PDF file to another equivalent
       PDF file.  It is capable of performing a variety of transformations
       such as linearization (also known as web optimization or fast web
       viewing), encryption, and decryption of PDF files.  It also has many
       options for inspecting or checking PDF files, some of which are useful
       primarily to PDF developers.

       For a summary of qpdf's options, please run qpdf --help. A complete
       manual can be found at https://qpdf.readthedocs.io.


USAGE (basic invocation)

       Read a PDF file, apply transformations or modifications, and write a
       new PDF file.

       Usage: qpdf [infile] [options] [outfile]
          OR  qpdf --help[={topic|--option}]


       o      infile, options, and outfile may be in any order as long as
              infile precedes outfile.

       o      Use --empty in place of an input file for a zero-page, empty
              input

       o      Use --replace-input in place of an output file to overwrite the
              input file with the output

       o      outfile may be - to write to stdout; reading from stdin is not
              supported

       o      @filename is an argument file; each line is treated as a
              separate command-line argument

       o      @- may be used to read arguments from stdin

       o      Later options may override earlier options if contradictory

       Related Options:

       --empty -- use empty file as input
              Use in place of infile for an empty input. Especially useful
              with --pages.

       --replace-input -- overwrite input with output
              Use in place of outfile to overwrite the input file with the
              output.

       --job-json-file -- job JSON file
              --job-json-file=file

              Specify the name of a file whose contents are expected to
              contain a QPDFJob JSON file. Run qpdf --job-json-help for a
              description of the JSON input file format.


EXIT-STATUS (meanings of qpdf's exit codes)

       Meaning of exit codes:


       o      0: no errors or warnings

       o      1: not used by qpdf but may be used by the shell if unable to
              invoke qpdf

       o      2: errors detected

       o      3: warnings detected, unless --warning-exit-0 is given

       Related Options:

       --warning-exit-0 -- exit 0 even with warnings
              Use exit status 0 instead of 3 when warnings are present. When
              combined with --no-warn, warnings are completely ignored.


COMPLETION (shell completion)

       Shell completion is supported with bash and zsh. Use eval $(qpdf
       --completion-bash) or eval $(qpdf --completion-zsh) to enable. The
       QPDF_EXECUTABLE environment variable overrides the path to qpdf that
       these commands output.

       Related Options:

       --completion-bash -- enable bash completion
              Output a command that enables bash completion

       --completion-zsh -- enable zsh completion
              Output a command that enables zsh completion


HELP (information about qpdf)

       Help options provide some information about qpdf itself. Help options
       are only valid as the first and only command-line argument.

       Related Options:

       --help -- provide help
              --help[=--option|topic]

              --help: provide general information and a list of topics
              --help=--option: provide help on a specific option --help=topic:
              provide help on a topic

       --version -- show qpdf version
              Display the version of qpdf.

       --copyright -- show copyright information
              Display copyright and license information.

       --show-crypto -- show available crypto providers
              Show a list of available crypto providers, one per line. The
              default provider is shown first.

       --job-json-help -- show format of job JSON
              Describe the format of the QPDFJob JSON input used by --job-
              json-file.


GENERAL (general options)

       General options control qpdf's behavior in ways that are not directly
       related to the operation it is performing.

       Related Options:

       --password -- password for encrypted file
              --password=password

              Specify a password for an encrypted, password-protected file.
              Not needed for encrypted files without a password.

       --password-file -- read password from a file
              --password-file=filename

              The first line of the specified file is used as the password.
              This is used in place of the --password option.

       --verbose -- print additional information
              Output additional information about various things qpdf is
              doing, including information about files created and operations
              performed.

       --progress -- show progress when writing
              Indicate progress when writing files.

       --no-warn -- suppress printing of warning messages
              Suppress printing of warning messages. If warnings were
              encountered, qpdf still exits with exit status 3.  Use
              --warning-exit-0 with --no-warn to completely ignore warnings.

       --deterministic-id -- generate ID deterministically
              Generate a secure, random document ID only using static
              information, such as the page contents. Does not use the file's
              name or attributes or the current time.

       --allow-weak-crypto -- allow insecure cryptographic algorithms
              Allow creation of files with weak cryptographic algorithms. This
              option is necessary to create 40-bit files or 128-bit files that
              use RC4 encryption.

       --keep-files-open -- manage keeping multiple files open
              --keep-files-open=[y|n]

              When qpdf needs to work with many files, as when merging large
              numbers of files, explicitly indicate whether files should be
              kept open. The default behavior is to determine this based on
              the number of files.

       --keep-files-open-threshold -- set threshold for --keep-files-open
              --keep-files-open-threshold=count

              Set the threshold used by --keep-files-open, overriding the
              default value of 200.


ADVANCED-CONTROL (tweak qpdf's behavior)

       Advanced control options control qpdf's behavior in ways that would
       normally never be needed by a user but that may be useful to developers
       or people investigating problems with specific files.

       Related Options:

       --password-is-hex-key -- provide hex-encoded encryption key
              Provide the underlying file encryption key as a hex-encoded
              string rather than supplying a password. This is an expert
              option.

       --suppress-password-recovery -- don't try different password encodings
              Suppress qpdf's usual behavior of attempting different encodings
              of a password that contains non-ASCII Unicode characters if the
              first attempt doesn't succeed.

       --password-mode -- tweak how qpdf encodes passwords
              --password-mode=mode

              Fine-tune how qpdf controls encoding of Unicode passwords. Valid
              options are auto, bytes, hex-bytes, and unicode.

       --suppress-recovery -- suppress error recovery
              Avoid attempting to recover when errors are found in a file's
              cross reference table or stream lengths.

       --ignore-xref-streams -- use xref tables rather than streams
              Ignore any cross-reference streams in the file, falling back to
              cross-reference tables or triggering document recovery.


TRANSFORMATION (make structural PDF changes)

       The options below tell qpdf to apply transformations that change the
       structure without changing the content.

       Related Options:

       --linearize -- linearize (web-optimize) output
              Create linearized (web-optimized) output files.

       --encrypt -- start encryption options
              --encrypt [options] --

              Run qpdf --help=encryption for details.

       --decrypt -- remove encryption from input file
              Create an unencrypted output file even if the input file was
              encrypted. Normally qpdf preserves whatever encryption was
              present on the input file. This option overrides that behavior.

       --remove-restrictions -- remove security restrictions from input file
              Remove restrictions associated with digitally signed PDF files.
              This may be combined with --decrypt to allow free editing of
              previously signed/encrypted files. This option invalidates and
              disables any digital signatures but leaves their visual
              appearances intact.

       --copy-encryption -- copy another file's encryption details
              --copy-encryption=file

              Copy encryption details from the specified file instead of
              preserving the input file's encryption. Use --encryption-file-
              password to specify the encryption file's password.

       --encryption-file-password -- supply password for --copy-encryption
              --encryption-file-password=password

              If the file named in --copy-encryption requires a password, use
              this option to supply the password.

       --qdf -- enable viewing PDF code in a text editor
              Create a PDF file suitable for viewing in a text editor and even
              editing. This is for editing the PDF code, not the page
              contents.  All streams that can be uncompressed are
              uncompressed, and content streams are normalized, among other
              changes. The companion tool "fix-qdf" can be used to repair
              hand-edited QDF files. QDF is a feature specific to the qpdf
              tool. Please see the "QDF Mode" chapter in the manual.

       --no-original-object-ids -- omit original object IDs in qdf
              Omit comments in a QDF file indicating the object ID an object
              had in the original file.

       --compress-streams -- compress uncompressed streams
              --compress-streams=[y|n]

              Setting --compress-streams=n prevents qpdf from compressing
              uncompressed streams. This can be useful if you are leaving some
              streams uncompressed intentionally.

       --decode-level -- control which streams to uncompress
              --decode-level=parameter

              When uncompressing streams, control which types of compression
              schemes should be uncompressed:

       o      none: don't uncompress anything. This is the default with
              --json-output.

       o      generalized: uncompress streams compressed with a general-
              purpose compression algorithm. This is the default except when
              --json-output is given.

       o      specialized: in addition to generalized, also uncompress streams
              compressed with a special-purpose but non-lossy compression
              scheme

       o      all: in addition to specialized, uncompress streams compressed
              with lossy compression schemes like JPEG (DCT) qpdf does not
              know how to uncompress all compression schemes.

       --stream-data -- control stream compression
              --stream-data=parameter

              This option controls how streams are compressed in the output.
              It is less granular than the newer options, --compress-streams
              and --decode-level.

              Parameters:

       o      compress: same as --compress-streams=y --decode-
              level=generalized

       o      preserve: same as --compress-streams=n --decode-level=none

       o      uncompress: same as --compress-streams=n --decode-
              level=generalized

       --recompress-flate -- uncompress and recompress flate
              The default generalized compression scheme used by PDF is flate,
              which is the same as used by zip and gzip. Usually qpdf just
              leaves these alone. This option tells qpdf to uncompress and
              recompress streams compressed with flate. This can be useful
              when combined with --compression-level.

       --compression-level -- set compression level for flate
              --compression-level=level

              Set a compression level from 1 (least, fastest) to 9 (most,
              slowest) when compressing files with flate (used in zip and
              gzip), which is the default compression for most PDF files.  You
              need --recompress-flate with this option if you want to change
              already compressed streams.

       --normalize-content -- fix newlines in content streams
              --normalize-content=[y|n]

              Normalize newlines to UNIX-style newlines in PDF content
              streams, which is useful for viewing them in a programmer's text
              editor across multiple platforms. This is also turned on by
              --qdf.

       --object-streams -- control use of object streams
              --object-streams=mode

              Control what qpdf does regarding object streams. Options:

       o      preserve: preserve original object streams, if any (the default)

       o      disable: create output files with no object streams

       o      generate: create object streams, and compress objects when
              possible

       --preserve-unreferenced -- preserve unreferenced objects
              Preserve all objects from the input even if not referenced.

       --remove-unreferenced-resources -- remove unreferenced page resources
              --remove-unreferenced-resources=parameter

              Remove from a page's resource dictionary any resources that are
              not referenced in the page's contents. Parameters: "auto"
              (default), "yes", "no".

       --preserve-unreferenced-resources -- use
       --remove-unreferenced-resources=no
              Synonym for --remove-unreferenced-resources=no. Use that
              instead.

       --newline-before-endstream -- force a newline before endstream
              For an extra newline before endstream. Using this option enables
              qpdf to preserve PDF/A when rewriting such files.

       --coalesce-contents -- combine content streams
              If a page has an array of content streams, concatenate them into
              a single content stream.

       --externalize-inline-images -- convert inline to regular images
              Convert inline images to regular images.

       --ii-min-bytes -- set minimum size for --externalize-inline-images
              --ii-min-bytes=size-in-bytes

              Don't externalize inline images smaller than this size. The
              default is 1,024. Use 0 for no minimum.

       --min-version -- set minimum PDF version
              --min-version=version

              Force the PDF version of the output to be at least the specified
              version. The version number format is "major.minor[.extension-
              level]", which sets the version header to "major.minor" and the
              extension level, if specified, to "extension-level".

       --force-version -- set output PDF version
              --force-version=version

              Force the output PDF file's PDF version header to be the
              specified value, even if the file uses features that may not be
              available in that version.


PAGE-RANGES (page range syntax)

       A full description of the page range syntax, with examples, can be
       found in the manual. In summary, a range is a comma-separated list of
       groups. A group is a number or a range of numbers separated by a dash.
       A group may be prepended by x to exclude its members from the previous
       group. A number may be one of


       o      <n>        where <n> represents a number is the <n>th page

       o      r<n>       is the <n>th page from the end

       o      z          the last page, same as r1


       o      a,b,c      pages a, b, and c

       o      a-b        pages a through b inclusive; if a > b, this counts
              down

       o      a-b,xc     pages a through b except page c

       o      a-b,xc-d   pages a through b except pages c through d

              You can append :even or :odd to select every other page from the
              resulting set of pages, where :odd starts with the first page
              and :even starts with the second page. These are odd and even
              pages from the resulting set, not based on the original page
              numbers.


MODIFICATION (change parts of the PDF)

       Modification options make systematic changes to certain parts of the
       PDF, causing the PDF to render differently from the original.

       Related Options:

       --pages -- begin page selection
              --pages [--file=]file [options] [...] --

              Run qpdf --help=page-selection for details.

       --file -- source for pages
              --file=file

              Specify the file for the current page operation. This is used
              with --pages, --overlay, and --underlay and appears between the
              option and the terminating --. Run qpdf --help=page-selection
              for details.

       --range -- page range
              --range=numeric-range

              Specify the page range for the current page operation with
              --pages. If omitted, all pages are selected. This is used with
              --pages and appears between --pages and --. Run qpdf
              --help=page-selection for details.

       --collate -- collate with --pages
              --collate[=n[,m,...]]

              Collate rather than concatenate pages specified with --pages.
              With a numeric parameter, collate in groups of n. The default is
              1. With comma-separated numeric parameters, take n from the
              first file, m from the second, etc. Run qpdf --help=page-
              selection for additional details.

       --split-pages -- write pages to separate files
              --split-pages[=n]

              This option causes qpdf to create separate output files for each
              page or group of pages rather than a single output file.

              File names are generated from the specified output file as
              follows:


       o      If the string %d appears in the output file name, it is replaced
              with a zero-padded page range starting from 1

       o      Otherwise, if the output file name ends in .pdf (case
              insensitive), a zero-padded page range, preceded by a dash, is
              inserted before the file extension

       o      Otherwise, the file name is appended with a zero-padded page
              range preceded by a dash.

              Page ranges are single page numbers for single-page groups or
              first-last for multi-page groups.

       --overlay -- begin overlay options
              --overlay file [options] --

              Overlay pages from another file on the output.  Run qpdf
              --help=overlay-underlay for details.

       --underlay -- begin underlay options
              --underlay file [options] --

              Underlay pages from another file on the output.  Run qpdf
              --help=overlay-underlay for details.

       --flatten-rotation -- remove rotation from page dictionary
              For each page that is rotated using the /Rotate key in the
              page's dictionary, remove the /Rotate key and implement the
              identical rotation semantics by modifying the page's contents.
              This can be useful if a broken PDF viewer fails to properly
              consider page rotation metadata.

       --flatten-annotations -- push annotations into content
              --flatten-annotations=parameter

              Push page annotations into the content streams. This may be
              necessary in some case when printing or splitting files.
              Parameters: "all", "print", "screen".

       --rotate -- rotate pages
              --rotate=[+|-]angle[:page-range]

              Rotate specified pages by multiples of 90 degrees specifying
              either absolute or relative angles. "angle" may be 0, 90, 180,
              or 270. You almost always want to use +angle or -angle rather
              than just angle, as discussed in the manual. Run qpdf
              --help=page-ranges for help with page ranges.

       --generate-appearances -- generate appearances for form fields
              PDF form fields consist of values and appearances, which may be
              inconsistent with each other if a form field value has been
              modified without updating its appearance. This option tells qpdf
              to generate new appearance streams. There are some limitations,
              which are discussed in the manual.

       --optimize-images -- use efficient compression for images
              Attempt to use DCT (JPEG) compression for images that fall
              within certain constraints as long as doing so decreases the
              size in bytes of the image. See also help for the following
              options:
                --oi-min-width
                --oi-min-height
                --oi-min-area
                --keep-inline-images

       --oi-min-width -- minimum width for --optimize-images
              --oi-min-width=width

              Don't optimize images whose width is below the specified value.

       --oi-min-height -- minimum height for --optimize-images
              --oi-min-height=height

              Don't optimize images whose height is below the specified value.

       --oi-min-area -- minimum area for --optimize-images
              --oi-min-area=area-in-pixels

              Don't optimize images whose area in pixels is below the
              specified value.

       --keep-inline-images -- exclude inline images from optimization
              Prevent inline images from being considered by --optimize-
              images.

       --remove-page-labels -- remove explicit page numbers
              Exclude page labels (explicit page numbers) from the output
              file.

       --set-page-labels -- number pages for the entire document
              --set-page-labels label-spec ... --

              Set page labels (explicit page numbers) for the entire file.
              Each label-spec has the form

              first-page:[type][/start[/prefix]]

              where


       o      "first-page" represents a sequential page number using the same
              format as page ranges: a number, a number preceded by "r" to
              indicate counting from the end, or "z" indicating the last page

       o      "type" is one of - D: Arabic numerals (digits) - A: Upper-case
              alphabetic characters - a: Lower-case alphabetic characters - R:
              Upper-case Roman numerals - r: Lower-case Roman numerals -
              omitted: the page number does not appear, though the prefix,
                if specified will still appear

       o      "start" must be a number >= 1

       o      "prefix"` may be any string and is prepended to each page label

              The first label spec must have a first-page value of 1,
              indicating the first page of the document. If multiple page
              label specs are specified, they must be given in increasing
              order.

              If multiple page label specs are specified, they must be given
              in increasing order.

              A given page label spec causes pages to be numbered according to
              that scheme starting with first-page and continuing until the
              next label spec or the end of the document. If you want to omit
              numbering starting at a certain page, you can use first-page: as
              the spec.

              Example: "1:r 5:D" would number the first four pages i through
              iv, then the remaining pages with Arabic numerals starting with
              1 and continuing sequentially until the end of the document. For
              additional examples, please consult the manual.


ENCRYPTION (create encrypted files)

       Create encrypted files. Usage:

       --encrypt   [--user-password=user-password]   [--owner-password=owner-
       password]   --bits=key-length [options] --

       OR

       --encrypt user-password owner-password key-length [options] --

       The first form, with flags for the passwords and bit length, was
       introduced in qpdf 11.7.0. Only the --bits option is is mandatory.
       This form allows you to use any text as the password. If passwords are
       specified, they must be given before the --bits option.

       The second form has been in qpdf since the beginning and wil continue
       to be supported. Either or both of user-password and owner-password may
       be empty strings.

       The key-length parameter must be either 40, 128, or 256. The user
       and/or owner password may be omitted. Omitting either password enables
       the PDF file to be opened without a password. Specifying the same value
       for the user and owner password and specifying an empty owner password
       are both considered insecure.

       Encryption options are terminated by "--" by itself.

       40-bit encryption is insecure, as is 128-bit encryption without AES.
       Use 256-bit encryption unless you have a specific reason to use an
       insecure format, such as testing or compatibility with very old
       viewers. You must use the --allow-weak-crypto to create encrypted files
       that use insecure cryptographic algorithms. The --allow-weak-crypto
       flag appears outside of --encrypt ... -- (before --encrypt or after
       --).

       Available options vary by key length. Not all readers respect all
       restrictions. Different PDF readers respond differently to various
       combinations of options. Sometimes a PDF viewer may show you
       restrictions that differ from what you selected. This is probably not a
       bug in qpdf.

       Options for 40-bit only:
         --annotate=[y|n]         restrict comments, filling forms, and
       signing
         --extract=[y|n]          restrict text/graphic extraction
         --modify=[y|n]           restrict document modification
         --print=[y|n]            restrict printing

       Options for 128-bit or 256-bit:
         --accessibility=[y|n]    restrict accessibility (usually ignored)
         --annotate=[y|n]         restrict commenting/filling form fields
         --assemble=[y|n]         restrict document assembly
         --extract=[y|n]          restrict text/graphic extraction
         --form=[y|n]             restrict filling form fields
         --modify-other=[y|n]     restrict other modifications
         --modify=modify-opt      control modify access by level
         --print=print-opt        control printing access
         --cleartext-metadata     prevent encryption of metadata

       For 128-bit only:
         --use-aes=[y|n]          indicates whether to use AES encryption
         --force-V4               forces use of V=4 encryption handler

       For 256-bit only:
         --force-R5               forces use of deprecated R=5 encryption
         --allow-insecure         allow user password with empty owner
       password

       Values for print-opt:
         none                     disallow printing
         low                      allow only low-resolution printing
         full                     allow full printing

       Values for modify-opt:
         none                     allow no modifications
         assembly                 allow document assembly only
         form                     assembly + filling in form fields and
       signing
         annotate                 form + commenting and modifying forms
         all                      allow full document modification

       Related Options:

       --user-password -- specify user password
              --user-password=user-password

              Set the user password of the encrypted file.

       --owner-password -- specify owner password
              --owner-password=owner-password

              Set the owner password of the encrypted file.

       --bits -- specify encryption key length
              --bits={48|128|256}

              Specify the encryption key length. For best security, always use
              a key length of 256.

       --accessibility -- restrict document accessibility
              --accessibility=[y|n]

              This option is ignored except with very old encryption formats.
              The current PDF specification does not allow restriction of
              document accessibility. This option is not available with 40-bit
              encryption.

       --annotate -- restrict document annotation
              --annotate=[y|n]

              Enable/disable modifying annotations including making comments
              and filling in form fields. For 128-bit and 256-bit encryption,
              this also enables editing, creating, and deleting form fields
              unless --modify-other=n or --modify=none is also specified.

       --assemble -- restrict document assembly
              --assemble=[y|n]

              Enable/disable document assembly (rotation and reordering of
              pages). This option is not available with 40-bit encryption.

       --extract -- restrict text/graphic extraction
              --extract=[y|n]

              Enable/disable text/graphic extraction for purposes other than
              accessibility.

       --form -- restrict form filling
              --form=[y|n]

              Enable/disable whether filling form fields is allowed even if
              modification of annotations is disabled. This option is not
              available with 40-bit encryption.

       --modify-other -- restrict other modifications
              --modify-other=[y|n]

              Enable/disable modifications not controlled by --assemble,
              --annotate, or --form. --modify-other=n is implied by any of the
              other --modify options. This option is not available with 40-bit
              encryption.

       --modify -- restrict document modification
              --modify=modify-opt

              For 40-bit files, modify-opt may only be y or n and controls all
              aspects of document modification.

              For 128-bit and 256-bit encryption, modify-opt values allow
              enabling and disabling levels of restriction in a manner similar
              to how some PDF creation tools do it. modify-opt values map to
              other combinations of options as follows:

              all: allow full modification (the default) annotate: --modify-
              other=n form: --modify-other=n --annotate=n assembly: --modify-
              other=n --annotate=n --form=n none: --modify-other=n
              --annotate=n --form=n --assemble=n

       --print -- restrict printing
              --print=print-opt

              Control what kind of printing is allowed. For 40-bit encryption,
              print-opt may only be y or n and enables or disables all
              printing. For 128-bit and 256-bit encryption, print-opt may have
              the following values:

              none: disallow printing low: allow low-resolution printing only
              full: allow full printing (the default)

       --cleartext-metadata -- don't encrypt metadata
              If specified, don't encrypt document metadata even when
              encrypting the rest of the document. This option is not
              available with 40-bit encryption.

       --use-aes -- use AES with 128-bit encryption
              --use-aes=[y|n]

              Enables/disables use of the more secure AES encryption with
              128-bit encryption. Specifying --use-aes=y forces the PDF
              version to be at least 1.6. This option is only available with
              128-bit encryption. The default is "n" for compatibility
              reasons. Use 256-bit encryption instead.

       --allow-insecure -- allow empty owner passwords
              Allow creation of PDF files with empty owner passwords and non-
              empty user passwords when using 256-bit encryption.

       --force-V4 -- force V=4 in encryption dictionary
              This option is for testing and is never needed in practice since
              qpdf does this automatically when needed.

       --force-R5 -- use unsupported R=5 encryption
              Use an undocumented, unsupported, deprecated encryption
              algorithm that existed only in Acrobat version IX. This option
              should not be used except for compatibility testing.


PAGE-SELECTION (select pages from one or more files)

       Use the --pages option to select pages from multiple files. Usage:

       qpdf in.pdf --pages --file=input-file     [--range=page-range]
       [--password=password] [...] -- out.pdf

       OR

       qpdf in.pdf --pages input-file [--password=password] [page-range]
       [...] -- out.pdf

       Between --pages and the -- that terminates pages option, repeat the
       following:

       --file=filename [--range=page-range] [--password=password] [options]

       For compatibility, the file and range can be specified positionally.
       qpdf versions prior to 11.9.0 require --password=password to
       immediately follow the filename. In the older syntax, repeat the
       following:

       filename [--password=password] [page-range]

       Document-level information, such as outlines, tags, etc., is taken from
       in.pdf and is preserved in out.pdf. You can use --empty in place of an
       input file to start from an empty file and just copy pages equally from
       all files. You can use "." as a shorthand for the primary input file
       (if not --empty). In the above example, "." would refer to in.pdf.

       Use --password=password to specify the password for a password-
       protected input file. If the same input file is used more than once,
       you only need to supply the password the first time. If the page range
       is omitted, all pages are selected.

       Run qpdf --help=page-ranges for help with page ranges.

       Use --collate=n to cause pages to be collated in groups of n pages
       (default 1) instead of concatenating the input.  Use
       --collate=i,j,k,... to take i from the first, then j from the second,
       then k from the third, then i from the first, etc.

       Examples:


       o      Start with in.pdf and append all pages from a.pdf and the even
              pages from b.pdf, and write the output to out.pdf. Document-
              level information from in.pdf is retained. Note the use of "."
              to refer to in.pdf.

                qpdf in.pdf --pages . a.pdf b.pdf 1-z:even -- out.pdf


       o      Take all the pages from a.pdf, all the pages from b.pdf in
              reverse, and only pages 3 and 6 from c.pdf and write the result
              to out.pdf. Use password "x" to open b.pdf:

                qpdf --empty --pages a.pdf b.pdf --password=x z-1 c.pdf 3,6

              More examples are in the manual.


OVERLAY-UNDERLAY (overlay/underlay pages from other files)

       These options allow pages from another file to be overlaid or underlaid
       on the primary output. Overlaid pages are drawn on top of the
       destination page and may obscure the page. Underlaid pages are drawn
       below the destination page. Usage:

       {--overlay|--underlay} [--file=]file
             [--password=password]
             [--to=page-range]
             [--from=[page-range]]
             [--repeat=page-range]
             --

       Note the use of "--" by itself to terminate overlay/underlay options.

       For overlay and underlay, a file and optional password are specified,
       along with a series of optional page ranges. The default behavior is
       that each page of the overlay or underlay file is imposed on the
       corresponding page of the primary output until it runs out of pages,
       and any extra pages are ignored. You can also give a page range with
       --repeat to cause those pages to be repeated after the original pages
       are exhausted.

       This options are repeatable. Pages will be stacked in order of
       appearance: first underlays, then the original page, then overlays.

       Run qpdf --help=page-ranges for help with page ranges.

       Related Options:

       --to -- destination pages for underlay/overlay
              --to=page-range

              Specify the range of pages in the primary output to apply
              overlay/underlay to. See qpdf --help=page-ranges for help with
              the page range syntax.

       --from -- source pages for underlay/overlay
              --from=[page-range]

              Specify pages from the overlay/underlay file that are applied to
              the destination pages. See qpdf --help=page-ranges for help with
              the page range syntax. The page range may be omitted if --repeat
              is used.

       --repeat -- overlay/underlay pages to repeat
              --repeat=page-range

              Specify pages from the overlay/underlay that are repeated after
              "from" pages have been exhausted. See qpdf --help=page-ranges
              for help with the page range syntax.


ATTACHMENTS (work with embedded files)

       It is possible to list, add, or delete embedded files (also known as
       attachments) and to copy attachments from other files. See help on
       individual options for details. Run qpdf --help=add-attachment for
       additional details about adding attachments. See also --help=--list-
       attachments and --help=--show-attachment.

       Related Options:

       --add-attachment -- start add attachment options
              --add-attachment file [options] --

              The --add-attachment flag and its options may be repeated to add
              multiple attachments. Run qpdf --help=add-attachment for
              details.

       --copy-attachments-from -- start copy attachment options
              --copy-attachments-from file [options] --

              The --copy-attachments-from flag and its options may be repeated
              to copy attachments from multiple files. Run qpdf --help=copy-
              attachments for details.

       --remove-attachment -- remove an embedded file
              --remove-attachment=key

              Remove an embedded file using its key. Get the key with --list-
              attachments.


PDF-DATES (PDF date format)

       When a date is required, the date should conform to the PDF date format
       specification, which is "D:yyyymmddhhmmssz" where "z" is either
       literally upper case "Z" for UTC or a timezone offset in the form
       "-hh'mm'" or "+hh'mm'". Negative timezone offsets indicate time before
       UTC. Positive offsets indicate how far after. For example, US Eastern
       Standard Time (America/New_York) is "-05'00'", and Indian Standard Time
       (Asia/Calcutta) is "+05'30'".

       Examples:

       o      D:20210207161528-05'00'   February 7, 2021 at 4:15:28 p.m.

       o      D:20210207211528Z         February 7, 2021 at 21:15:28 UTC


ADD-ATTACHMENT (attach (embed) files)

       The options listed below appear between --add-attachment and its
       terminating "--".

       Related Options:

       --key -- specify attachment key
              --key=key

              Specify the key to use for the attachment in the embedded files
              table. It defaults to the last element (basename) of the
              attached file's filename.

       --filename -- set attachment's displayed filename
              --filename=name

              Specify the filename to be used for the attachment. This is what
              is usually displayed to the user and is the name most graphical
              PDF viewers will use when saving a file. It defaults to the last
              element (basename) of the attached file's filename.

       --creationdate -- set attachment's creation date
              --creationdate=date

              Specify the attachment's creation date in PDF format; defaults
              to the current time. Run qpdf --help=pdf-dates for information
              about the date format.

       --moddate -- set attachment's modification date
              --moddate=date

              Specify the attachment's modification date in PDF format;
              defaults to the current time. Run qpdf --help=pdf-dates for
              information about the date format.

       --mimetype -- attachment mime type, e.g. application/pdf
              --mimetype=type/subtype

              Specify the mime type for the attachment, such as text/plain,
              application/pdf, image/png, etc.

       --description -- set attachment's description
              --description="text"

              Supply descriptive text for the attachment, displayed by some
              PDF viewers.

       --replace -- replace attachment with same key
              Indicate that any existing attachment with the same key should
              be replaced by the new attachment. Otherwise, qpdf gives an
              error if an attachment with that key is already present.


COPY-ATTACHMENTS (copy attachments from another file)

       The options listed below appear between --copy-attachments-from and its
       terminating "--".

       To copy attachments from a password-protected file, use the --password
       option after the file name.

       Related Options:

       --prefix -- key prefix for copying attachments
              --prefix=prefix

              Prepend a prefix to each key; may be needed if there are
              duplicate attachment keys. This affects the key only, not the
              file name.


INSPECTION (inspect PDF files)

       These options provide tools for inspecting PDF files. When any of the
       options in this section are specified, no output file may be given.

       Related Options:

       --is-encrypted -- silently test whether a file is encrypted
              Silently exit with a code indicating the file's encryption
              status:

              0: the file is encrypted 1: not used 2: the file is not
              encrypted

              This can be used with password-protected files even if you don't
              know the password.

       --requires-password -- silently test a file's password
              Silently exit with a code indicating the file's password status:

              0: a password, other than as supplied, is required 1: not used
              2: the file is not encrypted 3: the file is encrypted, and
              correct password (if any) has been supplied

       --check -- partially check whether PDF is valid
              Check the structure of the PDF file as well as a number of other
              aspects of the file, and write information about the file to
              standard output. Note that qpdf does not perform any validation
              of the actual PDF page content or semantic correctness of the
              PDF file. It merely checks that the PDF file is syntactically
              valid. See also qpdf --help=exit-status.

       --show-encryption -- information about encrypted files
              Show document encryption parameters. Also show the document's
              user password if the owner password is given and the file was
              encrypted using older encryption formats that allow user
              password recovery.

       --show-encryption-key -- show key with --show-encryption
              When used with --show-encryption or --check, causes the
              underlying encryption key to be displayed.

       --check-linearization -- check linearization tables
              Check to see whether a file is linearized and, if so, whether
              the linearization hint tables are correct.

       --show-linearization -- show linearization hint tables
              Check and display all data in the linearization hint tables.

       --show-xref -- show cross reference data
              Show the contents of the cross-reference table or stream (object
              locations in the file) in a human-readable form. This is
              especially useful for files with cross-reference streams, which
              are stored in a binary format.

       --show-object -- show contents of an object
              --show-object={trailer|obj[,gen]}

              Show the contents of the given object. This is especially useful
              for inspecting objects that are inside of object streams (also
              known as "compressed objects").

       --raw-stream-data -- show raw stream data
              When used with --show-object, if the object is a stream, write
              the raw (compressed) binary stream data to standard output
              instead of the object's contents. See also --filtered-stream-
              data.

       --filtered-stream-data -- show filtered stream data
              When used with --show-object, if the object is a stream, write
              the filtered (uncompressed, potentially binary) stream data to
              standard output instead of the object's contents. See also
              --raw-stream-data.

       --show-npages -- show number of pages
              Print the number of pages in the input file on a line by itself.
              Useful for scripts.

       --show-pages -- display page dictionary information
              Show the object and generation number for each page dictionary
              object and for each content stream associated with the page.

       --with-images -- include image details with --show-pages
              When used with --show-pages, also shows the object and
              generation numbers for the image objects on each page.

       --list-attachments -- list embedded files
              Show the key and stream number for each embedded file. Combine
              with --verbose for more detailed information.

       --show-attachment -- export an embedded file
              --show-attachment=key

              Write the contents of the specified attachment to standard
              output as binary data. Get the key with --list-attachments.


JSON (JSON output for PDF information)

       Show information about the PDF file in JSON format. Please see the JSON
       chapter in the qpdf manual for details.

       Related Options:

       --json -- show file in JSON format
              --json[=version]

              Generate a JSON representation of the file. This is described in
              depth in the JSON section of the manual. "version" may be a
              specific version or "latest" (the default). Run qpdf --json-help
              for a description of the generated JSON object.

       --json-help -- show format of JSON output
              --json-help[=version]

              Describe the format of the JSON output by writing to standard
              output a JSON object with the same keys and with values
              containing descriptive text.

       --json-key -- limit which keys are in JSON output
              --json-key=key

              This option is repeatable. If given, only the specified top-
              level keys will be included in the JSON output. Otherwise, all
              keys will be included. With --json-output, when not given, only
              the "qpdf" key will appear in the output.

       --json-object -- limit which objects are in JSON
              --json-object={trailer|obj[,gen]}

              This option is repeatable. If given, only specified objects will
              be shown in the "objects" key of the JSON output. Otherwise, all
              objects will be shown.

       --json-stream-data -- how to handle streams in json output
              --json-stream-data={none|inline|file}

              When used with --json, this option controls whether streams in
              json output should be omitted, written inline (base64-encoded)
              or written to a file. If "file" is chosen, the file will be the
              name of the output file appended with -nnn where nnn is the
              object number. The prefix can be overridden with --json-stream-
              prefix. The default is "none", except when --json-output is
              specified, in which case the default is "inline".

       --json-stream-prefix -- prefix for json stream data files
              --json-stream-prefix=file-prefix

              When used with --json-stream-data=file, --json-stream-data=file-
              prefix sets the prefix for stream data files, overriding the
              default, which is to use the output file name. Whatever is given
              here will be appended with -nnn to create the name of the file
              that will contain the data for the stream stream in object nnn.

       --json-output -- apply defaults for JSON serialization
              --json-output[=version]

              Implies --json=version. Changes default values for certain
              options so that the JSON output written is the most faithful
              representation of the original PDF and contains no additional
              JSON keys. See also --json-stream-data, --json-stream-prefix,
              and --decode-level.

       --json-input -- input file is qpdf JSON
              Treat the input file as a JSON file in qpdf JSON format. See the
              "qpdf JSON Format" section of the manual for information about
              how to use this option.

       --update-from-json -- update a PDF from qpdf JSON
              --update-from-json=qpdf-json-file

              Update a PDF file from a JSON file. Please see the "qpdf JSON"
              chapter of the manual for information about how to use this
              option.


TESTING (options for testing or debugging)

       The options below are useful when writing automated test code that
       includes files created by qpdf or when testing qpdf itself.

       Related Options:

       --static-id -- use a fixed document ID
              Use a fixed value for the document ID. This is intended for
              testing only. Never use it for production files. See also qpdf
              --help=--deterministic-id.

       --static-aes-iv -- use a fixed AES vector
              Use a static initialization vector for AES-CBC. This is intended
              for testing only so that output files can be reproducible. Never
              use it for production files. This option is not secure since it
              significantly weakens the encryption.

       --linearize-pass1 -- save pass 1 of linearization
              --linearize-pass1=file

              Write the first pass of linearization to the named file. The
              resulting file is not a valid PDF file. This option is useful
              only for debugging qpdf.

       --test-json-schema -- test generated json against schema
              This is used by qpdf's test suite to check consistency between
              the output of qpdf --json and the output of qpdf --json-help.

       --report-memory-usage -- best effort report of memory usage
              This is used by qpdf's performance test suite to report the
              maximum amount of memory used in supported environments.


SEE ALSO

       For a summary of qpdf's options, please run qpdf --help.  A complete
       manual can be found at https://qpdf.readthedocs.io.

qpdf version 11.9.0                                                    qpdf(1)

qpdf 11.9.0 - Generated Sun Feb 25 05:53:31 CST 2024
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.