# See "HOW TO ADD A COMMAND-LINE ARGUMENT" in README-maintainer. # REMEMBER: if you add an optional_choices or optional_parameter, you # have to explicitly remember to implement the overloaded config # method that takes no arguments. Since no generated code will call it # automatically, there is no automated reminder to do this. If you # forget, it will be a link error if someone tries to call it. choices: yn: - "y" - "n" password_mode: - bytes - hex-bytes - unicode - auto stream_data: - compress - preserve - uncompress decode_level: - none - generalized - specialized - all object_streams: - disable - preserve - generate remove_unref: - auto - "yes" - "no" flatten: - all - print - screen json_key: # The list of selectable top-level keys id duplicated in the # following places: job.yml, QPDFJob::json_schema, and # QPDFJob::doJSON. - acroform - attachments - encrypt - objectinfo # only v1 - objects # only v1 - outlines - pagelabels - pages - qpdf # only v2 json_output: - 2 - latest json_stream_data: - none - inline - file json_version: - 1 - 2 - latest enc_bits: - 40 - 128 - 256 print128: - full - low - none modify128: - all - annotate - form - assembly - none options: - table: help bare: - version - copyright - show-crypto - job-json-help optional_choices: json-help: json_version - table: main config: c_main manual: - add-attachment - copy-attachments-from - encrypt - overlay - pages - underlay - empty - replace-input - set-page-labels positional: true bare: - add-attachment - allow-weak-crypto - check - check-linearization - coalesce-contents - copy-attachments-from - decrypt - deterministic-id - empty - encrypt - externalize-inline-images - filtered-stream-data - flatten-rotation - generate-appearances - ignore-xref-streams - is-encrypted - json-input - keep-inline-images - linearize - list-attachments - newline-before-endstream - no-original-object-ids - no-warn - optimize-images - overlay - pages - password-is-hex-key - preserve-unreferenced - preserve-unreferenced-resources - progress - qdf - raw-stream-data - recompress-flate - remove-page-labels - replace-input - report-memory-usage - requires-password - remove-restrictions - set-page-labels - show-encryption - show-encryption-key - show-linearization - show-npages - show-pages - show-xref - static-aes-iv - static-id - suppress-password-recovery - suppress-recovery - test-json-schema - underlay - verbose - warning-exit-0 - with-images optional_parameter: - collate - split-pages required_parameter: compression-level: level copy-encryption: file encryption-file-password: password force-version: version ii-min-bytes: minimum job-json-file: file json-object: trailer keep-files-open-threshold: count linearize-pass1: filename min-version: version oi-min-area: minimum oi-min-height: minimum oi-min-width: minimum password: password password-file: password remove-attachment: attachment rotate: "[+|-]angle" show-attachment: attachment show-object: trailer json-stream-prefix: stream-file-prefix update-from-json: qpdf-json file required_choices: compress-streams: yn decode-level: decode_level flatten-annotations: flatten json-key: json_key json-stream-data: json_stream_data keep-files-open: yn normalize-content: yn object-streams: object_streams password-mode: password_mode remove-unreferenced-resources: remove_unref stream-data: stream_data optional_choices: json: json_version json-output: json_output - table: pages config: c_pages prefix: Pages positional: true required_parameter: file: file range: page-range password: password - table: encryption config: c_main prefix: Enc positional: true manual: - user-password - owner-password - bits required_parameter: user-password: user_password owner-password: owner_password required_choices: bits: enc_bits - table: 40-bit encryption config: c_enc config_prefix: Enc prefix: Enc40 required_choices: extract: yn annotate: yn print: yn modify: yn - table: 128-bit encryption config: c_enc config_prefix: Enc prefix: Enc128 bare: - cleartext-metadata - force-V4 required_choices: accessibility: yn extract: yn print: print128 assemble: yn annotate: yn form: yn modify-other: yn modify: modify128 use-aes: yn - table: 256-bit encryption config: c_enc config_prefix: Enc prefix: Enc256 bare: - cleartext-metadata - force-R5 - allow-insecure required_choices: accessibility: yn extract: yn print: print128 assemble: yn annotate: yn form: yn modify-other: yn modify: modify128 - table: underlay/overlay config: c_uo prefix: UO positional: true required_parameter: file: file to: page-range from: page-range repeat: page-range password: password - table: attachment config: c_att prefix: Att positional: true bare: - replace required_parameter: key: attachment-key filename: filename creationdate: creation-date moddate: modification-date mimetype: mime/type description: description - table: copy attachment config: c_copy_att prefix: CopyAtt positional: true required_parameter: prefix: prefix password: password - table: set page labels prefix: PageLabels positional: true json: # The structure of this section defines what the json input to # QPDFJob looks like. If a key starts with underscore, it does not # map to a command-line argument. If the value is a string, that is # the help information. Otherwise, if the value is null, it has to # match a command-line option, and its properties and help come from # other information known by generate_auto_job. This information is # used to construct a "schema" (as in JSON.hh) for the json input to # QPDFJob. The leading underscore is removed. If a key starts with a # double underscore, it corresponds to a command-line argument that # does not have a counterpart in the JSON. This signals that the # command-line argument was not forgotten, but it is otherwise # ignored by the JSON. *NOTE*: all keys are converted to camelCase # for the schema and must appear that way in the user-supplied json. # This makes it more convenient to populate JSON objects in some # languages. # input _inputFile: "input filename" main.password: password-file: empty: json-input: # output _outputFile: "output filename" replace-input: # output options qdf: preserve-unreferenced: newline-before-endstream: normalize-content: stream-data: compress-streams: recompress-flate: decode-level: decrypt: deterministic-id: static-aes-iv: static-id: no-original-object-ids: copy-encryption: encryption-file-password: linearize: linearize-pass1: object-streams: min-version: force-version: progress: split-pages: json-output: remove-restrictions: encrypt: user-password: owner-password: __bits: _40bit: Enc40.annotate: Enc40.extract: Enc40.modify: Enc40.print: _128bit: Enc128.accessibility: Enc128.annotate: Enc128.assemble: Enc128.cleartext-metadata: Enc128.extract: Enc128.form: Enc128.modify-other: Enc128.modify: Enc128.print: force-V4: use-aes: _256bit: Enc256.accessibility: Enc256.annotate: Enc256.assemble: Enc256.cleartext-metadata: Enc256.extract: Enc256.form: Enc256.modify-other: Enc256.modify: Enc256.print: allow-insecure: force-R5: # inspect check: check-linearization: filtered-stream-data: raw-stream-data: show-encryption: show-encryption-key: show-linearization: show-npages: show-object: show-pages: show-xref: with-images: list-attachments: show-attachment: json: json-key: - null json-object: - null json-stream-data: json-stream-prefix: # other options update-from-json: allow-weak-crypto: keep-files-open: keep-files-open-threshold: no-warn: verbose: test-json-schema: ignore-xref-streams: password-is-hex-key: password-mode: suppress-password-recovery: suppress-recovery: coalesce-contents: compression-level: externalize-inline-images: ii-min-bytes: remove-unreferenced-resources: add-attachment: - _file: "file to attach" creationdate: description: filename: key: mimetype: moddate: replace: remove-attachment: - null copy-attachments-from: - _file: "file to copy attachments from" CopyAtt.password: prefix: collate: flatten-annotations: flatten-rotation: generate-appearances: keep-inline-images: oi-min-area: oi-min-height: oi-min-width: optimize-images: pages: - Pages.file: Pages.password: range: remove-page-labels: report-memory-usage: rotate: set-page-labels: - null overlay: - UO.file: UO.password: from: repeat: to: underlay: - UO.file: UO.password: from: repeat: to: warning-exit-0: job-json-file: preserve-unreferenced-resources: requires-password: is-encrypted: