summaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFJob_json.cc156
-rw-r--r--libqpdf/qpdf/auto_job_json_decl.hh96
-rw-r--r--libqpdf/qpdf/auto_job_json_init.hh106
-rw-r--r--libqpdf/qpdf/auto_job_schema.hh309
4 files changed, 296 insertions, 371 deletions
diff --git a/libqpdf/QPDFJob_json.cc b/libqpdf/QPDFJob_json.cc
index 2da427c3..3091c7b1 100644
--- a/libqpdf/QPDFJob_json.cc
+++ b/libqpdf/QPDFJob_json.cc
@@ -220,18 +220,6 @@ Handlers::handle(JSON& j)
}
void
-Handlers::beginInput(JSON)
-{
- // nothing needed
-}
-
-void
-Handlers::endInput()
-{
- // nothing needed
-}
-
-void
Handlers::setupInputFile()
{
addParameter([this](char const* p) {
@@ -240,7 +228,7 @@ Handlers::setupInputFile()
}
void
-Handlers::setupInputPassword()
+Handlers::setupPassword()
{
addParameter([this](char const* p) {
c_main->password(p);
@@ -248,7 +236,7 @@ Handlers::setupInputPassword()
}
void
-Handlers::setupInputEmpty()
+Handlers::setupEmpty()
{
addBare([this]() {
c_main->emptyInput();
@@ -256,18 +244,6 @@ Handlers::setupInputEmpty()
}
void
-Handlers::beginOutput(JSON)
-{
- // nothing needed
-}
-
-void
-Handlers::endOutput()
-{
- // nothing needed
-}
-
-void
Handlers::setupOutputFile()
{
addParameter([this](char const* p) {
@@ -276,7 +252,7 @@ Handlers::setupOutputFile()
}
void
-Handlers::setupOutputReplaceInput()
+Handlers::setupReplaceInput()
{
addBare([this]() {
c_main->replaceInput();
@@ -284,19 +260,7 @@ Handlers::setupOutputReplaceInput()
}
void
-Handlers::beginOutputOptions(JSON)
-{
- // nothing needed
-}
-
-void
-Handlers::endOutputOptions()
-{
- // nothing needed
-}
-
-void
-Handlers::beginOutputOptionsEncrypt(JSON j)
+Handlers::beginEncrypt(JSON j)
{
// This method is only called if the overall JSON structure
// matches the schema, so we already know that keys that are
@@ -342,137 +306,113 @@ Handlers::beginOutputOptionsEncrypt(JSON j)
}
void
-Handlers::endOutputOptionsEncrypt()
+Handlers::endEncrypt()
{
this->c_enc->endEncrypt();
this->c_enc = nullptr;
}
void
-Handlers::setupOutputOptionsEncryptUserPassword()
+Handlers::setupEncryptUserPassword()
{
- // handled in beginOutputOptionsEncrypt
+ // handled in beginEncrypt
ignoreItem();
}
void
-Handlers::setupOutputOptionsEncryptOwnerPassword()
+Handlers::setupEncryptOwnerPassword()
{
- // handled in beginOutputOptionsEncrypt
+ // handled in beginEncrypt
ignoreItem();
}
void
-Handlers::beginOutputOptionsEncrypt40bit(JSON)
-{
- // nothing needed
-}
-
-void
-Handlers::endOutputOptionsEncrypt40bit()
-{
- // nothing needed
-}
-
-void
-Handlers::beginOutputOptionsEncrypt128bit(JSON)
-{
- // nothing needed
-}
-
-void
-Handlers::endOutputOptionsEncrypt128bit()
-{
- // nothing needed
-}
-
-void
-Handlers::beginOutputOptionsEncrypt256bit(JSON)
+Handlers::beginEncrypt40bit(JSON)
{
// nothing needed
}
void
-Handlers::endOutputOptionsEncrypt256bit()
+Handlers::endEncrypt40bit()
{
// nothing needed
}
void
-Handlers::beginOptions(JSON)
+Handlers::beginEncrypt128bit(JSON)
{
// nothing needed
}
void
-Handlers::endOptions()
+Handlers::endEncrypt128bit()
{
// nothing needed
}
void
-Handlers::beginInspect(JSON)
+Handlers::beginEncrypt256bit(JSON)
{
// nothing needed
}
void
-Handlers::endInspect()
+Handlers::endEncrypt256bit()
{
// nothing needed
}
void
-Handlers::beginInspectJsonKeyArray(JSON)
+Handlers::beginJsonKeyArray(JSON)
{
// nothing needed
}
void
-Handlers::endInspectJsonKeyArray()
+Handlers::endJsonKeyArray()
{
// nothing needed
}
void
-Handlers::beginInspectJsonObjectArray(JSON)
+Handlers::beginJsonObjectArray(JSON)
{
// nothing needed
}
void
-Handlers::endInspectJsonObjectArray()
+Handlers::endJsonObjectArray()
{
// nothing needed
}
void
-Handlers::beginOptionsAddAttachmentArray(JSON)
+Handlers::beginAddAttachmentArray(JSON)
{
// nothing needed
}
void
-Handlers::endOptionsAddAttachmentArray()
+Handlers::endAddAttachmentArray()
{
// nothing needed
}
void
-Handlers::beginOptionsAddAttachment(JSON)
+Handlers::beginAddAttachment(JSON)
{
this->c_att = c_main->addAttachment();
}
void
-Handlers::endOptionsAddAttachment()
+Handlers::endAddAttachment()
{
this->c_att->endAddAttachment();
this->c_att = nullptr;
}
void
-Handlers::setupOptionsAddAttachmentFile()
+Handlers::setupAddAttachmentFile()
{
addParameter([this](char const* p) {
c_att->file(p);
@@ -480,32 +420,32 @@ Handlers::setupOptionsAddAttachmentFile()
}
void
-Handlers::beginOptionsCopyAttachmentsFromArray(JSON)
+Handlers::beginCopyAttachmentsFromArray(JSON)
{
// nothing needed
}
void
-Handlers::endOptionsCopyAttachmentsFromArray()
+Handlers::endCopyAttachmentsFromArray()
{
// nothing needed
}
void
-Handlers::beginOptionsCopyAttachmentsFrom(JSON)
+Handlers::beginCopyAttachmentsFrom(JSON)
{
this->c_copy_att = c_main->copyAttachmentsFrom();
}
void
-Handlers::endOptionsCopyAttachmentsFrom()
+Handlers::endCopyAttachmentsFrom()
{
this->c_copy_att->endCopyAttachmentsFrom();
this->c_copy_att = nullptr;
}
void
-Handlers::setupOptionsCopyAttachmentsFromFile()
+Handlers::setupCopyAttachmentsFromFile()
{
addParameter([this](char const* p) {
c_copy_att->file(p);
@@ -513,7 +453,7 @@ Handlers::setupOptionsCopyAttachmentsFromFile()
}
void
-Handlers::setupOptionsCopyAttachmentsFromPassword()
+Handlers::setupCopyAttachmentsFromPassword()
{
addParameter([this](char const* p) {
c_copy_att->password(p);
@@ -521,20 +461,20 @@ Handlers::setupOptionsCopyAttachmentsFromPassword()
}
void
-Handlers::beginOptionsPagesArray(JSON)
+Handlers::beginPagesArray(JSON)
{
this->c_pages = c_main->pages();
}
void
-Handlers::endOptionsPagesArray()
+Handlers::endPagesArray()
{
c_pages->endPages();
c_pages = nullptr;
}
void
-Handlers::beginOptionsPages(JSON j)
+Handlers::beginPages(JSON j)
{
std::string file;
std::string range("1-z");
@@ -565,47 +505,47 @@ Handlers::beginOptionsPages(JSON j)
}
void
-Handlers::endOptionsPages()
+Handlers::endPages()
{
// nothing needed
}
void
-Handlers::setupOptionsPagesFile()
+Handlers::setupPagesFile()
{
- // handled in beginOptionsPages
+ // handled in beginPages
ignoreItem();
}
void
-Handlers::setupOptionsPagesPassword()
+Handlers::setupPagesPassword()
{
- // handled in beginOptionsPages
+ // handled in beginPages
ignoreItem();
}
void
-Handlers::setupOptionsPagesRange()
+Handlers::setupPagesRange()
{
- // handled in beginOptionsPages
+ // handled in beginPages
ignoreItem();
}
void
-Handlers::beginOptionsOverlay(JSON)
+Handlers::beginOverlay(JSON)
{
this->c_uo = c_main->overlay();
}
void
-Handlers::endOptionsOverlay()
+Handlers::endOverlay()
{
c_uo->endUnderlayOverlay();
c_uo = nullptr;
}
void
-Handlers::setupOptionsOverlayFile()
+Handlers::setupOverlayFile()
{
addParameter([this](char const* p) {
c_uo->file(p);
@@ -613,7 +553,7 @@ Handlers::setupOptionsOverlayFile()
}
void
-Handlers::setupOptionsOverlayPassword()
+Handlers::setupOverlayPassword()
{
addParameter([this](char const* p) {
c_uo->password(p);
@@ -621,20 +561,20 @@ Handlers::setupOptionsOverlayPassword()
}
void
-Handlers::beginOptionsUnderlay(JSON)
+Handlers::beginUnderlay(JSON)
{
this->c_uo = c_main->underlay();
}
void
-Handlers::endOptionsUnderlay()
+Handlers::endUnderlay()
{
c_uo->endUnderlayOverlay();
c_uo = nullptr;
}
void
-Handlers::setupOptionsUnderlayFile()
+Handlers::setupUnderlayFile()
{
addParameter([this](char const* p) {
c_uo->file(p);
@@ -642,7 +582,7 @@ Handlers::setupOptionsUnderlayFile()
}
void
-Handlers::setupOptionsUnderlayPassword()
+Handlers::setupUnderlayPassword()
{
addParameter([this](char const* p) {
c_uo->password(p);
diff --git a/libqpdf/qpdf/auto_job_json_decl.hh b/libqpdf/qpdf/auto_job_json_decl.hh
index ba9b7029..951e6a92 100644
--- a/libqpdf/qpdf/auto_job_json_decl.hh
+++ b/libqpdf/qpdf/auto_job_json_decl.hh
@@ -3,58 +3,48 @@
// Edits will be automatically overwritten if the build is
// run in maintainer mode.
//
-void beginInput(JSON);
-void endInput();
void setupInputFile();
-void setupInputPassword();
-void setupInputEmpty();
-void beginOutput(JSON);
-void endOutput();
+void setupPassword();
+void setupEmpty();
void setupOutputFile();
-void setupOutputReplaceInput();
-void beginOutputOptions(JSON);
-void endOutputOptions();
-void beginOutputOptionsEncrypt(JSON);
-void endOutputOptionsEncrypt();
-void setupOutputOptionsEncryptUserPassword();
-void setupOutputOptionsEncryptOwnerPassword();
-void beginOutputOptionsEncrypt40bit(JSON);
-void endOutputOptionsEncrypt40bit();
-void beginOutputOptionsEncrypt128bit(JSON);
-void endOutputOptionsEncrypt128bit();
-void beginOutputOptionsEncrypt256bit(JSON);
-void endOutputOptionsEncrypt256bit();
-void beginInspect(JSON);
-void endInspect();
-void beginInspectJsonKeyArray(JSON);
-void endInspectJsonKeyArray();
-void beginInspectJsonObjectArray(JSON);
-void endInspectJsonObjectArray();
-void beginOptions(JSON);
-void endOptions();
-void beginOptionsAddAttachmentArray(JSON);
-void endOptionsAddAttachmentArray();
-void beginOptionsAddAttachment(JSON);
-void endOptionsAddAttachment();
-void setupOptionsAddAttachmentFile();
-void beginOptionsCopyAttachmentsFromArray(JSON);
-void endOptionsCopyAttachmentsFromArray();
-void beginOptionsCopyAttachmentsFrom(JSON);
-void endOptionsCopyAttachmentsFrom();
-void setupOptionsCopyAttachmentsFromFile();
-void setupOptionsCopyAttachmentsFromPassword();
-void beginOptionsPagesArray(JSON);
-void endOptionsPagesArray();
-void beginOptionsPages(JSON);
-void endOptionsPages();
-void setupOptionsPagesFile();
-void setupOptionsPagesPassword();
-void setupOptionsPagesRange();
-void beginOptionsOverlay(JSON);
-void endOptionsOverlay();
-void setupOptionsOverlayFile();
-void setupOptionsOverlayPassword();
-void beginOptionsUnderlay(JSON);
-void endOptionsUnderlay();
-void setupOptionsUnderlayFile();
-void setupOptionsUnderlayPassword();
+void setupReplaceInput();
+void beginEncrypt(JSON);
+void endEncrypt();
+void setupEncryptUserPassword();
+void setupEncryptOwnerPassword();
+void beginEncrypt40bit(JSON);
+void endEncrypt40bit();
+void beginEncrypt128bit(JSON);
+void endEncrypt128bit();
+void beginEncrypt256bit(JSON);
+void endEncrypt256bit();
+void beginJsonKeyArray(JSON);
+void endJsonKeyArray();
+void beginJsonObjectArray(JSON);
+void endJsonObjectArray();
+void beginAddAttachmentArray(JSON);
+void endAddAttachmentArray();
+void beginAddAttachment(JSON);
+void endAddAttachment();
+void setupAddAttachmentFile();
+void beginCopyAttachmentsFromArray(JSON);
+void endCopyAttachmentsFromArray();
+void beginCopyAttachmentsFrom(JSON);
+void endCopyAttachmentsFrom();
+void setupCopyAttachmentsFromFile();
+void setupCopyAttachmentsFromPassword();
+void beginPagesArray(JSON);
+void endPagesArray();
+void beginPages(JSON);
+void endPages();
+void setupPagesFile();
+void setupPagesPassword();
+void setupPagesRange();
+void beginOverlay(JSON);
+void endOverlay();
+void setupOverlayFile();
+void setupOverlayPassword();
+void beginUnderlay(JSON);
+void endUnderlay();
+void setupUnderlayFile();
+void setupUnderlayPassword();
diff --git a/libqpdf/qpdf/auto_job_json_init.hh b/libqpdf/qpdf/auto_job_json_init.hh
index df55d328..3d19c76e 100644
--- a/libqpdf/qpdf/auto_job_json_init.hh
+++ b/libqpdf/qpdf/auto_job_json_init.hh
@@ -15,31 +15,24 @@ static char const* json_key_choices[] = {"acroform", "attachments", "encrypt", "
static char const* print128_choices[] = {"full", "low", "none", 0};
static char const* modify128_choices[] = {"all", "annotate", "form", "assembly", "none", 0};
-pushKey("input");
-beginDict(bindJSON(&Handlers::beginInput), bindBare(&Handlers::endInput)); // .input
-pushKey("file");
+pushKey("inputFile");
setupInputFile();
-popHandler(); // key: file
+popHandler(); // key: inputFile
pushKey("password");
-setupInputPassword();
+setupPassword();
popHandler(); // key: password
pushKey("passwordFile");
addParameter([this](char const* p) { c_main->passwordFile(p); });
popHandler(); // key: passwordFile
pushKey("empty");
-setupInputEmpty();
+setupEmpty();
popHandler(); // key: empty
-popHandler(); // key: input
-pushKey("output");
-beginDict(bindJSON(&Handlers::beginOutput), bindBare(&Handlers::endOutput)); // .output
-pushKey("file");
+pushKey("outputFile");
setupOutputFile();
-popHandler(); // key: file
+popHandler(); // key: outputFile
pushKey("replaceInput");
-setupOutputReplaceInput();
+setupReplaceInput();
popHandler(); // key: replaceInput
-pushKey("options");
-beginDict(bindJSON(&Handlers::beginOutputOptions), bindBare(&Handlers::endOutputOptions)); // .output.options
pushKey("qdf");
addBare([this]() { c_main->qdf(); });
popHandler(); // key: qdf
@@ -107,15 +100,15 @@ pushKey("splitPages");
addParameter([this](char const* p) { c_main->splitPages(p); });
popHandler(); // key: splitPages
pushKey("encrypt");
-beginDict(bindJSON(&Handlers::beginOutputOptionsEncrypt), bindBare(&Handlers::endOutputOptionsEncrypt)); // .output.options.encrypt
+beginDict(bindJSON(&Handlers::beginEncrypt), bindBare(&Handlers::endEncrypt)); // .encrypt
pushKey("userPassword");
-setupOutputOptionsEncryptUserPassword();
+setupEncryptUserPassword();
popHandler(); // key: userPassword
pushKey("ownerPassword");
-setupOutputOptionsEncryptOwnerPassword();
+setupEncryptOwnerPassword();
popHandler(); // key: ownerPassword
pushKey("40bit");
-beginDict(bindJSON(&Handlers::beginOutputOptionsEncrypt40bit), bindBare(&Handlers::endOutputOptionsEncrypt40bit)); // .output.options.encrypt.40bit
+beginDict(bindJSON(&Handlers::beginEncrypt40bit), bindBare(&Handlers::endEncrypt40bit)); // .encrypt.40bit
pushKey("annotate");
addChoices(yn_choices, [this](char const* p) { c_enc->annotate(p); });
popHandler(); // key: annotate
@@ -130,7 +123,7 @@ addChoices(print128_choices, [this](char const* p) { c_enc->print(p); });
popHandler(); // key: print
popHandler(); // key: 40bit
pushKey("128bit");
-beginDict(bindJSON(&Handlers::beginOutputOptionsEncrypt128bit), bindBare(&Handlers::endOutputOptionsEncrypt128bit)); // .output.options.encrypt.128bit
+beginDict(bindJSON(&Handlers::beginEncrypt128bit), bindBare(&Handlers::endEncrypt128bit)); // .encrypt.128bit
pushKey("accessibility");
addChoices(yn_choices, [this](char const* p) { c_enc->accessibility(p); });
popHandler(); // key: accessibility
@@ -166,7 +159,7 @@ addChoices(yn_choices, [this](char const* p) { c_enc->useAes(p); });
popHandler(); // key: useAes
popHandler(); // key: 128bit
pushKey("256bit");
-beginDict(bindJSON(&Handlers::beginOutputOptionsEncrypt256bit), bindBare(&Handlers::endOutputOptionsEncrypt256bit)); // .output.options.encrypt.256bit
+beginDict(bindJSON(&Handlers::beginEncrypt256bit), bindBare(&Handlers::endEncrypt256bit)); // .encrypt.256bit
pushKey("accessibility");
addChoices(yn_choices, [this](char const* p) { c_enc->accessibility(p); });
popHandler(); // key: accessibility
@@ -202,10 +195,6 @@ addBare([this]() { c_enc->forceR5(); });
popHandler(); // key: forceR5
popHandler(); // key: 256bit
popHandler(); // key: encrypt
-popHandler(); // key: options
-popHandler(); // key: output
-pushKey("inspect");
-beginDict(bindJSON(&Handlers::beginInspect), bindBare(&Handlers::endInspect)); // .inspect
pushKey("check");
addBare([this]() { c_main->check(); });
popHandler(); // key: check
@@ -252,18 +241,15 @@ pushKey("json");
addChoices(json_version_choices, [this](char const* p) { c_main->json(p); });
popHandler(); // key: json
pushKey("jsonKey");
-beginArray(bindJSON(&Handlers::beginInspectJsonKeyArray), bindBare(&Handlers::endInspectJsonKeyArray)); // .inspect.jsonKey[]
+beginArray(bindJSON(&Handlers::beginJsonKeyArray), bindBare(&Handlers::endJsonKeyArray)); // .jsonKey[]
addChoices(json_key_choices, [this](char const* p) { c_main->jsonKey(p); });
-popHandler(); // array: .inspect.jsonKey[]
+popHandler(); // array: .jsonKey[]
popHandler(); // key: jsonKey
pushKey("jsonObject");
-beginArray(bindJSON(&Handlers::beginInspectJsonObjectArray), bindBare(&Handlers::endInspectJsonObjectArray)); // .inspect.jsonObject[]
+beginArray(bindJSON(&Handlers::beginJsonObjectArray), bindBare(&Handlers::endJsonObjectArray)); // .jsonObject[]
addParameter([this](char const* p) { c_main->jsonObject(p); });
-popHandler(); // array: .inspect.jsonObject[]
+popHandler(); // array: .jsonObject[]
popHandler(); // key: jsonObject
-popHandler(); // key: inspect
-pushKey("options");
-beginDict(bindJSON(&Handlers::beginOptions), bindBare(&Handlers::endOptions)); // .options
pushKey("allowWeakCrypto");
addBare([this]() { c_main->allowWeakCrypto(); });
popHandler(); // key: allowWeakCrypto
@@ -310,10 +296,10 @@ pushKey("removeUnreferencedResources");
addChoices(remove_unref_choices, [this](char const* p) { c_main->removeUnreferencedResources(p); });
popHandler(); // key: removeUnreferencedResources
pushKey("addAttachment");
-beginArray(bindJSON(&Handlers::beginOptionsAddAttachmentArray), bindBare(&Handlers::endOptionsAddAttachmentArray)); // .options.addAttachment[]
-beginDict(bindJSON(&Handlers::beginOptionsAddAttachment), bindBare(&Handlers::endOptionsAddAttachment)); // .options.addAttachment
+beginArray(bindJSON(&Handlers::beginAddAttachmentArray), bindBare(&Handlers::endAddAttachmentArray)); // .addAttachment[]
+beginDict(bindJSON(&Handlers::beginAddAttachment), bindBare(&Handlers::endAddAttachment)); // .addAttachment
pushKey("file");
-setupOptionsAddAttachmentFile();
+setupAddAttachmentFile();
popHandler(); // key: file
pushKey("creationdate");
addParameter([this](char const* p) { c_att->creationdate(p); });
@@ -336,24 +322,24 @@ popHandler(); // key: moddate
pushKey("replace");
addBare([this]() { c_att->replace(); });
popHandler(); // key: replace
-popHandler(); // array: .options.addAttachment[]
+popHandler(); // array: .addAttachment[]
popHandler(); // key: addAttachment
pushKey("removeAttachment");
addParameter([this](char const* p) { c_main->removeAttachment(p); });
popHandler(); // key: removeAttachment
pushKey("copyAttachmentsFrom");
-beginArray(bindJSON(&Handlers::beginOptionsCopyAttachmentsFromArray), bindBare(&Handlers::endOptionsCopyAttachmentsFromArray)); // .options.copyAttachmentsFrom[]
-beginDict(bindJSON(&Handlers::beginOptionsCopyAttachmentsFrom), bindBare(&Handlers::endOptionsCopyAttachmentsFrom)); // .options.copyAttachmentsFrom
+beginArray(bindJSON(&Handlers::beginCopyAttachmentsFromArray), bindBare(&Handlers::endCopyAttachmentsFromArray)); // .copyAttachmentsFrom[]
+beginDict(bindJSON(&Handlers::beginCopyAttachmentsFrom), bindBare(&Handlers::endCopyAttachmentsFrom)); // .copyAttachmentsFrom
pushKey("file");
-setupOptionsCopyAttachmentsFromFile();
+setupCopyAttachmentsFromFile();
popHandler(); // key: file
pushKey("password");
-setupOptionsCopyAttachmentsFromPassword();
+setupCopyAttachmentsFromPassword();
popHandler(); // key: password
pushKey("prefix");
addParameter([this](char const* p) { c_copy_att->prefix(p); });
popHandler(); // key: prefix
-popHandler(); // array: .options.copyAttachmentsFrom[]
+popHandler(); // array: .copyAttachmentsFrom[]
popHandler(); // key: copyAttachmentsFrom
pushKey("collate");
addParameter([this](char const* p) { c_main->collate(p); });
@@ -383,18 +369,18 @@ pushKey("optimizeImages");
addBare([this]() { c_main->optimizeImages(); });
popHandler(); // key: optimizeImages
pushKey("pages");
-beginArray(bindJSON(&Handlers::beginOptionsPagesArray), bindBare(&Handlers::endOptionsPagesArray)); // .options.pages[]
-beginDict(bindJSON(&Handlers::beginOptionsPages), bindBare(&Handlers::endOptionsPages)); // .options.pages
+beginArray(bindJSON(&Handlers::beginPagesArray), bindBare(&Handlers::endPagesArray)); // .pages[]
+beginDict(bindJSON(&Handlers::beginPages), bindBare(&Handlers::endPages)); // .pages
pushKey("file");
-setupOptionsPagesFile();
+setupPagesFile();
popHandler(); // key: file
pushKey("password");
-setupOptionsPagesPassword();
+setupPagesPassword();
popHandler(); // key: password
pushKey("range");
-setupOptionsPagesRange();
+setupPagesRange();
popHandler(); // key: range
-popHandler(); // array: .options.pages[]
+popHandler(); // array: .pages[]
popHandler(); // key: pages
pushKey("removePageLabels");
addBare([this]() { c_main->removePageLabels(); });
@@ -403,12 +389,12 @@ pushKey("rotate");
addParameter([this](char const* p) { c_main->rotate(p); });
popHandler(); // key: rotate
pushKey("overlay");
-beginDict(bindJSON(&Handlers::beginOptionsOverlay), bindBare(&Handlers::endOptionsOverlay)); // .options.overlay
+beginDict(bindJSON(&Handlers::beginOverlay), bindBare(&Handlers::endOverlay)); // .overlay
pushKey("file");
-setupOptionsOverlayFile();
+setupOverlayFile();
popHandler(); // key: file
pushKey("password");
-setupOptionsOverlayPassword();
+setupOverlayPassword();
popHandler(); // key: password
pushKey("from");
addParameter([this](char const* p) { c_uo->from(p); });
@@ -421,12 +407,12 @@ addParameter([this](char const* p) { c_uo->to(p); });
popHandler(); // key: to
popHandler(); // key: overlay
pushKey("underlay");
-beginDict(bindJSON(&Handlers::beginOptionsUnderlay), bindBare(&Handlers::endOptionsUnderlay)); // .options.underlay
+beginDict(bindJSON(&Handlers::beginUnderlay), bindBare(&Handlers::endUnderlay)); // .underlay
pushKey("file");
-setupOptionsUnderlayFile();
+setupUnderlayFile();
popHandler(); // key: file
pushKey("password");
-setupOptionsUnderlayPassword();
+setupUnderlayPassword();
popHandler(); // key: password
pushKey("from");
addParameter([this](char const* p) { c_uo->from(p); });
@@ -438,4 +424,18 @@ pushKey("to");
addParameter([this](char const* p) { c_uo->to(p); });
popHandler(); // key: to
popHandler(); // key: underlay
-popHandler(); // key: options
+pushKey("warningExit0");
+addBare([this]() { c_main->warningExit0(); });
+popHandler(); // key: warningExit0
+pushKey("jobJsonFile");
+addParameter([this](char const* p) { c_main->jobJsonFile(p); });
+popHandler(); // key: jobJsonFile
+pushKey("preserveUnreferencedResources");
+addBare([this]() { c_main->preserveUnreferencedResources(); });
+popHandler(); // key: preserveUnreferencedResources
+pushKey("requiresPassword");
+addBare([this]() { c_main->requiresPassword(); });
+popHandler(); // key: requiresPassword
+pushKey("isEncrypted");
+addBare([this]() { c_main->isEncrypted(); });
+popHandler(); // key: isEncrypted
diff --git a/libqpdf/qpdf/auto_job_schema.hh b/libqpdf/qpdf/auto_job_schema.hh
index df430a27..e5bbb866 100644
--- a/libqpdf/qpdf/auto_job_schema.hh
+++ b/libqpdf/qpdf/auto_job_schema.hh
@@ -1,164 +1,159 @@
static constexpr char const* JOB_SCHEMA_DATA = R"({
- "input": {
- "file": "input filename",
- "password": "specify password",
- "passwordFile": "read password from a file",
- "empty": "empty input file"
- },
- "output": {
- "file": "output filename",
- "replaceInput": "set to true to replace input",
- "options": {
- "qdf": "enable viewing PDF code in a text editor",
- "preserveUnreferenced": "preserve unreferenced objects",
- "newlineBeforeEndstream": "force a newline before endstream",
- "normalizeContent": "fix newlines in content streams",
- "streamData": "control stream compression",
- "compressStreams": "compress uncompressed streams",
- "recompressFlate": "uncompress and recompress flate",
- "decodeLevel": "control which streams to uncompress",
- "decrypt": "remove encryption from input file",
- "deterministicId": "generate ID deterministically",
- "staticAesIv": "use a fixed AES vector",
- "staticId": "use a fixed document ID",
- "noOriginalObjectIds": "omit original object IDs in qdf",
- "copyEncryption": "copy another file's encryption details",
- "encryptionFilePassword": "supply password for copyEncryption",
- "linearize": "linearize (web-optimize) output",
- "linearizePass1": "save pass 1 of linearization",
- "objectStreams": "control use of object streams",
- "minVersion": "set minimum PDF version",
- "forceVersion": "set output PDF version",
- "progress": "show progress when writing",
- "splitPages": "write pages to separate files",
- "encrypt": {
- "userPassword": "user password",
- "ownerPassword": "owner password",
- "40bit": {
- "annotate": "restrict document annotation",
- "extract": "restrict text/graphic extraction",
- "modify": "restrict document modification",
- "print": "restrict printing"
- },
- "128bit": {
- "accessibility": "restrict document accessibility",
- "annotate": "restrict document annotation",
- "assemble": "restrict document assembly",
- "cleartextMetadata": "don't encrypt metadata",
- "extract": "restrict text/graphic extraction",
- "form": "restrict form filling",
- "modifyOther": "restrict other modifications",
- "modify": "restrict document modification",
- "print": "restrict printing",
- "forceV4": "force V=4 in encryption dictionary",
- "useAes": "use AES with 128-bit encryption"
- },
- "256bit": {
- "accessibility": "restrict document accessibility",
- "annotate": "restrict document annotation",
- "assemble": "restrict document assembly",
- "cleartextMetadata": "don't encrypt metadata",
- "extract": "restrict text/graphic extraction",
- "form": "restrict form filling",
- "modifyOther": "restrict other modifications",
- "modify": "restrict document modification",
- "print": "restrict printing",
- "allowInsecure": "allow empty owner passwords",
- "forceR5": "use unsupported R=5 encryption"
- }
- }
+ "inputFile": "input filename",
+ "password": "specify password",
+ "passwordFile": "read password from a file",
+ "empty": "empty input file",
+ "outputFile": "output filename",
+ "replaceInput": "replace input with output",
+ "qdf": "enable viewing PDF code in a text editor",
+ "preserveUnreferenced": "preserve unreferenced objects",
+ "newlineBeforeEndstream": "force a newline before endstream",
+ "normalizeContent": "fix newlines in content streams",
+ "streamData": "control stream compression",
+ "compressStreams": "compress uncompressed streams",
+ "recompressFlate": "uncompress and recompress flate",
+ "decodeLevel": "control which streams to uncompress",
+ "decrypt": "remove encryption from input file",
+ "deterministicId": "generate ID deterministically",
+ "staticAesIv": "use a fixed AES vector",
+ "staticId": "use a fixed document ID",
+ "noOriginalObjectIds": "omit original object IDs in qdf",
+ "copyEncryption": "copy another file's encryption details",
+ "encryptionFilePassword": "supply password for copyEncryption",
+ "linearize": "linearize (web-optimize) output",
+ "linearizePass1": "save pass 1 of linearization",
+ "objectStreams": "control use of object streams",
+ "minVersion": "set minimum PDF version",
+ "forceVersion": "set output PDF version",
+ "progress": "show progress when writing",
+ "splitPages": "write pages to separate files",
+ "encrypt": {
+ "userPassword": "user password",
+ "ownerPassword": "owner password",
+ "40bit": {
+ "annotate": "restrict document annotation",
+ "extract": "restrict text/graphic extraction",
+ "modify": "restrict document modification",
+ "print": "restrict printing"
+ },
+ "128bit": {
+ "accessibility": "restrict document accessibility",
+ "annotate": "restrict document annotation",
+ "assemble": "restrict document assembly",
+ "cleartextMetadata": "don't encrypt metadata",
+ "extract": "restrict text/graphic extraction",
+ "form": "restrict form filling",
+ "modifyOther": "restrict other modifications",
+ "modify": "restrict document modification",
+ "print": "restrict printing",
+ "forceV4": "force V=4 in encryption dictionary",
+ "useAes": "use AES with 128-bit encryption"
+ },
+ "256bit": {
+ "accessibility": "restrict document accessibility",
+ "annotate": "restrict document annotation",
+ "assemble": "restrict document assembly",
+ "cleartextMetadata": "don't encrypt metadata",
+ "extract": "restrict text/graphic extraction",
+ "form": "restrict form filling",
+ "modifyOther": "restrict other modifications",
+ "modify": "restrict document modification",
+ "print": "restrict printing",
+ "allowInsecure": "allow empty owner passwords",
+ "forceR5": "use unsupported R=5 encryption"
}
},
- "inspect": {
- "check": "partially check whether PDF is valid",
- "checkLinearization": "check linearization tables",
- "filteredStreamData": "show filtered stream data",
- "rawStreamData": "show raw stream data",
- "showEncryption": "information about encrypted files",
- "showEncryptionKey": "show key with showEncryption",
- "showLinearization": "show linearization hint tables",
- "showNpages": "show number of pages",
- "showObject": "show contents of an object",
- "showPages": "display page dictionary information",
- "showXref": "show cross reference data",
- "withImages": "include image details with showPages",
- "listAttachments": "list embedded files",
- "showAttachment": "export an embedded file",
- "json": "show file in json format",
- "jsonKey": [
- "restrict which keys are in json output"
- ],
- "jsonObject": [
- "restrict which objects are in JSON"
- ]
- },
- "options": {
- "allowWeakCrypto": "allow insecure cryptographic algorithms",
- "keepFilesOpen": "manage keeping multiple files open",
- "keepFilesOpenThreshold": "set threshold for keepFilesOpen",
- "noWarn": "suppress printing of warning messages",
- "verbose": "print additional information",
- "ignoreXrefStreams": "use xref tables rather than streams",
- "passwordIsHexKey": "provide hex-encoded encryption key",
- "passwordMode": "tweak how qpdf encodes passwords",
- "suppressPasswordRecovery": "don't try different password encodings",
- "suppressRecovery": "suppress error recovery",
- "coalesceContents": "combine content streams",
- "compressionLevel": "set compression level for flate",
- "externalizeInlineImages": "convert inline to regular images",
- "iiMinBytes": "set minimum size for externalizeInlineImages",
- "removeUnreferencedResources": "remove unreferenced page resources",
- "addAttachment": [
- {
- "file": "attachment to add",
- "creationdate": "set attachment's creation date",
- "description": "set attachment's description",
- "filename": "set attachment's displayed filename",
- "key": "specify attachment key",
- "mimetype": "attachment mime type, e.g. application/pdf",
- "moddate": "set attachment's modification date",
- "replace": "replace attachment with same key"
- }
- ],
- "removeAttachment": "remove an embedded file",
- "copyAttachmentsFrom": [
- {
- "file": "attachment source filename",
- "password": "specify password",
- "prefix": "key prefix for copying attachments"
- }
- ],
- "collate": "collate with pages",
- "flattenAnnotations": "push annotations into content",
- "flattenRotation": "remove rotation from page dictionary",
- "generateAppearances": "generate appearances for form fields",
- "keepInlineImages": "exclude inline images from optimization",
- "oiMinArea": "minimum area for optimizeImages",
- "oiMinHeight": "minimum height for optimizeImages",
- "oiMinWidth": "minimum width for optimizeImages",
- "optimizeImages": "use efficient compression for images",
- "pages": [
- {
- "file": "source for for pages",
- "password": "specify password",
- "range": "page range"
- }
- ],
- "removePageLabels": "remove explicit page numbers",
- "rotate": "rotate pages",
- "overlay": {
- "file": "source file for overlay",
+ "check": "partially check whether PDF is valid",
+ "checkLinearization": "check linearization tables",
+ "filteredStreamData": "show filtered stream data",
+ "rawStreamData": "show raw stream data",
+ "showEncryption": "information about encrypted files",
+ "showEncryptionKey": "show key with showEncryption",
+ "showLinearization": "show linearization hint tables",
+ "showNpages": "show number of pages",
+ "showObject": "show contents of an object",
+ "showPages": "display page dictionary information",
+ "showXref": "show cross reference data",
+ "withImages": "include image details with showPages",
+ "listAttachments": "list embedded files",
+ "showAttachment": "export an embedded file",
+ "json": "show file in json format",
+ "jsonKey": [
+ "restrict which keys are in json output"
+ ],
+ "jsonObject": [
+ "restrict which objects are in JSON"
+ ],
+ "allowWeakCrypto": "allow insecure cryptographic algorithms",
+ "keepFilesOpen": "manage keeping multiple files open",
+ "keepFilesOpenThreshold": "set threshold for keepFilesOpen",
+ "noWarn": "suppress printing of warning messages",
+ "verbose": "print additional information",
+ "ignoreXrefStreams": "use xref tables rather than streams",
+ "passwordIsHexKey": "provide hex-encoded encryption key",
+ "passwordMode": "tweak how qpdf encodes passwords",
+ "suppressPasswordRecovery": "don't try different password encodings",
+ "suppressRecovery": "suppress error recovery",
+ "coalesceContents": "combine content streams",
+ "compressionLevel": "set compression level for flate",
+ "externalizeInlineImages": "convert inline to regular images",
+ "iiMinBytes": "set minimum size for externalizeInlineImages",
+ "removeUnreferencedResources": "remove unreferenced page resources",
+ "addAttachment": [
+ {
+ "file": "attachment to add",
+ "creationdate": "set attachment's creation date",
+ "description": "set attachment's description",
+ "filename": "set attachment's displayed filename",
+ "key": "specify attachment key",
+ "mimetype": "attachment mime type, e.g. application/pdf",
+ "moddate": "set attachment's modification date",
+ "replace": "replace attachment with same key"
+ }
+ ],
+ "removeAttachment": "remove an embedded file",
+ "copyAttachmentsFrom": [
+ {
+ "file": "attachment source filename",
"password": "specify password",
- "from": "source pages for underlay/overlay",
- "repeat": "overlay/underlay pages to repeat",
- "to": "destination pages for underlay/overlay"
- },
- "underlay": {
- "file": "source file for underlay",
+ "prefix": "key prefix for copying attachments"
+ }
+ ],
+ "collate": "collate with pages",
+ "flattenAnnotations": "push annotations into content",
+ "flattenRotation": "remove rotation from page dictionary",
+ "generateAppearances": "generate appearances for form fields",
+ "keepInlineImages": "exclude inline images from optimization",
+ "oiMinArea": "minimum area for optimizeImages",
+ "oiMinHeight": "minimum height for optimizeImages",
+ "oiMinWidth": "minimum width for optimizeImages",
+ "optimizeImages": "use efficient compression for images",
+ "pages": [
+ {
+ "file": "source for for pages",
"password": "specify password",
- "from": "source pages for underlay/overlay",
- "repeat": "overlay/underlay pages to repeat",
- "to": "destination pages for underlay/overlay"
+ "range": "page range"
}
- }
+ ],
+ "removePageLabels": "remove explicit page numbers",
+ "rotate": "rotate pages",
+ "overlay": {
+ "file": "source file for overlay",
+ "password": "specify password",
+ "from": "source pages for underlay/overlay",
+ "repeat": "overlay/underlay pages to repeat",
+ "to": "destination pages for underlay/overlay"
+ },
+ "underlay": {
+ "file": "source file for underlay",
+ "password": "specify password",
+ "from": "source pages for underlay/overlay",
+ "repeat": "overlay/underlay pages to repeat",
+ "to": "destination pages for underlay/overlay"
+ },
+ "warningExit0": "exit 0 even with warnings",
+ "jobJsonFile": "job JSON file",
+ "preserveUnreferencedResources": "use removeUnreferencedResourcesNo",
+ "requiresPassword": "silently test a file's password",
+ "isEncrypted": "silently test whether a file is encrypted"
})";