Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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), encryp-
     tion, and decryption of PDF files.  It also has many options for inspecting
     or  checking  PDF files, some of which are useful primarily to PDF develop-
     ers.

     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 in-
	    put file with the output

     *	    outfile may be - to write to stdout; reading from stdin is not  sup-
	    ported

     *	    @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  com-
	    bined with --no-warn, warnings are completely ignored.

COMPLETION (shell completion)
     Shell  completion is supported with bash and zsh. Use eval $(qpdf --comple-
     tion-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 re-
     lated 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  attrib-
	    utes or the current time.

     --allow-weak-crypto -- allow insecure cryptographic algorithms
	    Allow creation of files with weak cryptographic algorithms. This op-
	    tion  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  num-
	    bers  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  nor-
     mally  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 op-
	    tions 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 struc-
     ture 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 en-
	    crypted. 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  previ-
	    ously  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	preserv-
	    ing  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 fea-
	    ture 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 uncom-
	    pressed 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  ex-
	    tension 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 re-
	    sulting 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 rota-
	    tion 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 neces-
	    sary 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 in-
	    consistent 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  dis-
	    cussed 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 for-
	    mat 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 al-
	    phabetic characters - a: Lower-case alphabetic characters -  R:  Up-
	    per-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 addi-
	    tional examples, please consult the manual.

ENCRYPTION (create encrypted files)
     Create encrypted files. Usage:

     --encrypt	 [--user-password=user-password]   [--owner-password=owner-pass-
     word]   --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 inse-
     cure 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	restric-
     tions. 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 ac-
	    cessibility. 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  ac-
	    cessibility.

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

	    Enable/disable  whether filling form fields is allowed even if modi-
	    fication 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, --anno-
	    tate, or --form. --modify-other=n is implied by  any  of  the  other
	    --modify  options.	This option is not available with 40-bit encryp-
	    tion.

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

	    For 40-bit files, modify-opt may only be y or n and controls all as-
	    pects 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 combina-
	    tions 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]	[--pass-
     word=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 follow-
     ing:

     --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  in-
     put  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 informa-
	    tion 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 destina-
     tion 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 over-
	    lay/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 at-
     tachments) 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-attach-
	    ments for details.

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

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

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

     Related Options:

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

	    Specify  the key to use for the attachment in the embedded files ta-
	    ble. 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, appli-
	    cation/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 op-
     tion 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 op-
     tions 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 as-
	    pects  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 lo-
	    cations 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 ob-
	    ject 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  de-
	    scription 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 descrip-
	    tive 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  ob-
	    jects 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-pre-
	    fix 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" chap-
	    ter 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=--de-
	    terministic-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	signifi-
	    cantly weakens the encryption.

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

	    Write the first pass of linearization to the named file. The result-
	    ing file is not a valid PDF file. This option is useful only for de-
	    bugging 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.10.1							 QPDF(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=qpdf&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help