job.yml 8.9 KB
# See "HOW TO ADD A COMMAND-LINE ARGUMENT" in README-maintainer.
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
    - objects
    - outlines
    - pagelabels
    - pages
  print128:
    - full
    - low
    - none
  modify128:
    - all
    - annotate
    - form
    - assembly
    - none
options:
  - table: help
    bare:
      - version
      - copyright
      - json-help
      - show-crypto
      - job-json-help
  - table: main
    config: c_main
    manual:
      - add-attachment
      - copy-attachments-from
      - encrypt
      - overlay
      - pages
      - underlay
      - empty
      - replace-input
    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
      - 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
      - requires-password
      - show-encryption
      - show-encryption-key
      - show-linearization
      - show-npages
      - show-pages
      - show-xref
      - static-aes-iv
      - static-id
      - suppress-password-recovery
      - suppress-recovery
      - 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
    required_choices:
      compress-streams: yn
      decode-level: decode_level
      flatten-annotations: flatten
      json-key: json_key
      keep-files-open: yn
      normalize-content: yn
      object-streams: object_streams
      password-mode: password_mode
      remove-unreferenced-resources: remove_unref
      stream-data: stream_data
  - table: pages
    config: c_pages
    prefix: Pages
    positional: true
    manual:
      - password
    required_parameter:
      password: password
  - table: encryption
    prefix: Enc
    positional: true
  - 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:
      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
no-json:
  - preserve-unreferenced-resources
  - job-json-file
  - replace-input
  - warning-exit-0
  - requires-password
  - is-encrypted
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. *NOTE*: all keys are
  # converted to camelCase for the schema and must be appear that way
  # in the user-supplied json. This makes it more convenient to
  # populate JSON objects in some languages.
  _input:
    _file: "input filename"
    main.password:
    password-file:
    empty:
  _output:
    _file: "output filename"
    _replace-input: "set to true to replace input"
    _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:
      encrypt:
        _user-password: "user password"
        _owner-password: "owner password"
        _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
  _options:
    allow-weak-crypto:
    keep-files-open:
    keep-files-open-threshold:
    no-warn:
    verbose:
    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: "attachment to add"
        creationdate:
        description:
        filename:
        key:
        mimetype:
        moddate:
        replace:
    remove-attachment:
    copy-attachments-from:
      - _file: "attachment source filename"
        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:
      - _file: "source for for pages"
        Pages.password:
        _range: "page range"
    remove-page-labels:
    rotate:
    overlay:
      _file: "source file for overlay"
      UO.password:
      from:
      repeat:
      to:
    underlay:
      _file: "source file for underlay"
      UO.password:
      from:
      repeat:
      to: