job.yml 8.63 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
    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_class: Enc
    prefix: Enc40
    required_choices:
      extract: yn
      annotate: yn
      print: yn
      modify: yn
  - table: 128-bit encryption
    config: c_enc
    config_class: 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_class: 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
json:
  # The structure of this section defines what the json input to
  # QPDFJob looks like. If a key starts with underscore or has a value
  # that is a string, it does not map to a command-line argument. If
  # value is null, 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.
  _input:
    _file:
      _name: "input filename"
      main.password:
      password-file:
    empty:
  _output:
    _file:
      _name: "output filename"
    replace-input:
    split-pages:
    _options:
      qdf:
      preserve-unreferenced:
      newline-before-endstream:
      normalize-content:
      stream-data:
      compress-streams:
      recompress-flate:
      decode-level:
      decrypt:
      static-aes-iv:
      static-id:
      no-original-object-ids:
      copy-encryption:
      encryption-file-password:
      linearize:
      linearize-pass1:
      object-streams:
      min-version:
      force-version:
      progress:
      encrypt:
        key-length: "key length: 48, 128, 256"
        user-password: "user password"
        owner-password: "owner password"
        _40-bit:
          Enc40.annotate:
          Enc40.extract:
          Enc40.modify:
          Enc40.print:
        _128-bit:
          Enc128.accessibility:
          Enc128.annotate:
          Enc128.assemble:
          Enc128.cleartext-metadata:
          Enc128.extract:
          Enc128.form:
          Enc128.modify-other:
          Enc128.modify:
          Enc128.print:
          force-V4:
          use-aes:
        _256-bit:
          Enc256.accessibility:
          Enc256.annotate:
          Enc256.assemble:
          Enc256.cleartext-metadata:
          Enc256.extract:
          Enc256.form:
          Enc256.modify-other:
          Enc256.modify:
          Enc256.print:
          allow-insecure:
          force-R5:
  _options:
    allow-weak-crypto:
    deterministic-id:
    keep-files-open:
    keep-files-open-threshold:
    no-warn:
    verbose:
    warning-exit-0:
    ignore-xref-streams:
    password-is-hex-key:
    password-mode:
    suppress-password-recovery:
    suppress-recovery:
  _inspect:
    check:
    check-linearization:
    filtered-stream-data:
    is-encrypted:
    raw-stream-data:
    requires-password:
    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
  _transform:
    coalesce-contents:
    compression-level:
    externalize-inline-images:
    ii-min-bytes:
    remove-unreferenced-resources:
  _modify:
    add-attachment:
      - path: "attachment to add"
        creationdate:
        description:
        filename:
        key:
        mimetype:
        moddate:
        replace:
    remove-attachment:
    copy-attachments-from:
      - path: "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: