2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-11-09 23:00:57 +00:00
qpdf/job.yml
Jay Berkenbilt 6cf04b0a88 Allow repetition of overlay/underlay
This is just QPDFJob wiring.
2024-01-11 06:13:57 -05:00

465 lines
10 KiB
YAML

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