Provided by: qpdf_12.0.0-2_amd64 bug

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}]

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

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

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

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

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

       •      @- may be used to read arguments from stdin

       •      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:

       •      0: no errors or warnings

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

       •      2: errors detected

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

       --zopfli -- indicate whether zopfli is enabled and active
              If zopfli support is compiled in, indicate whether it is active,  and  exit  normally.  Otherwise,
              indicate  that  it  is  not  compiled  in,  and exit with an error code. If zopfli is compiled in,
              activate it by setting the ``QPDF_ZOPFLI`` environment variable.

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:

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

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

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

       •      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:

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

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

       •      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:

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

       •      disable: create output files with no object streams

       •      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

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

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

       •      z          the last page, same as r1

       •      a,b,c      pages a, b, and c

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

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

       •      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:

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

       •      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

       •      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 PDF file on the output.  Run qpdf --help=overlay-underlay for details.

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

              Underlay pages from another PDF 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-info -- remove file information
              Exclude file information (except modification date) from the output file.

       --remove-metadata -- remove metadata
              Exclude metadata from the output file.

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

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

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

       •      "start" must be a number >= 1

       •      "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 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 will 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 flag 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:

       •      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

       •      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 PDF files)

       These  options  allow  pages  from  another  PDF  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:

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

       •      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 12.0.0                                                                                      QPDF(1)