aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2024-01-10 02:29:38 +0100
committerJay Berkenbilt <ejb@ql.org>2024-01-11 12:13:57 +0100
commit6cf04b0a8863512765864287271248a61eac6214 (patch)
treec14e9e98c7453d8ee613054b4a225781b5d20171
parent0161f62e38fa44ef7fe88138d62a9f0b96f2921d (diff)
downloadqpdf-6cf04b0a8863512765864287271248a61eac6214.tar.zst
Allow repetition of overlay/underlay
This is just QPDFJob wiring.
-rw-r--r--job.sums8
-rw-r--r--job.yml20
-rw-r--r--libqpdf/QPDFJob_json.cc24
-rw-r--r--libqpdf/qpdf/auto_job_json_decl.hh4
-rw-r--r--libqpdf/qpdf/auto_job_json_init.hh4
-rw-r--r--libqpdf/qpdf/auto_job_schema.hh32
6 files changed, 64 insertions, 28 deletions
diff --git a/job.sums b/job.sums
index ca1941a8..4e1feeb1 100644
--- a/job.sums
+++ b/job.sums
@@ -7,13 +7,13 @@ include/qpdf/auto_job_c_enc.hh 28446f3c32153a52afa239ea40503e6cc8ac2c026813526a3
include/qpdf/auto_job_c_main.hh dbfc221d1533120d1aa9c361d8d2483dea5fcb1c0fd95144d98d305e64ed32a6
include/qpdf/auto_job_c_pages.hh 09ca15649cc94fdaf6d9bdae28a20723f2a66616bf15aa86d83df31051d82506
include/qpdf/auto_job_c_uo.hh 9c2f98a355858dd54d0bba444b73177a59c9e56833e02fa6406f429c07f39e62
-job.yml 790dd0f62f124a6cc97cc54bae992a1f1b1f3a9b4f0294bcf123868f3d3b39d3
+job.yml 53cad86659db6722e8f415aacb19fc51ab81bb1589c3cb8f65ec893bb4bf5566
libqpdf/qpdf/auto_job_decl.hh 20d6affe1e260f5a1af4f1d82a820b933835440ff03020e877382da2e8dac6c6
libqpdf/qpdf/auto_job_help.hh 5808d936f6cd41af278ca298ed0c0762ce0a16956cbe1757a40e4443485cf31e
libqpdf/qpdf/auto_job_init.hh 19d1da7c4c0c635bd1c5db8d5f17df8edad3442f8eba006adb075cec295fa158
-libqpdf/qpdf/auto_job_json_decl.hh 7c7fbf9f7fdf7a1f5f7cedb09af16b8dcf30b6860947bd38c970385b05d22fc1
-libqpdf/qpdf/auto_job_json_init.hh 436567565691252d62a1852564729925ef996e78eba9ea3d947829c05f72a309
-libqpdf/qpdf/auto_job_schema.hh 30dcb22bfa76d731dfa2cc2a226d7deaa25145f964b19ab44161356c909e4dc1
+libqpdf/qpdf/auto_job_json_decl.hh 843892c8e8652a86b7eb573893ef24050b7f36fe313f7251874be5cd4cdbe3fd
+libqpdf/qpdf/auto_job_json_init.hh a87256c082427ec0318223762472970b2eced535c0c8b0288d45c8cdaaf62f74
+libqpdf/qpdf/auto_job_schema.hh 5dac568dff39614e161a0af59a0f328f1e28edf69b96f08bb76fd592d51bb053
manual/_ext/qpdf.py 6add6321666031d55ed4aedf7c00e5662bba856dfcd66ccb526563bffefbb580
manual/cli.rst 0e6a957defa4839abb9a69414de6a5ec5524fd6ff56fe9abf8f241bee54813e2
manual/qpdf.1 7250b4e26033fca6b6b9cb23a51e1f46c26f8033663901d4af06b451e287e814
diff --git a/job.yml b/job.yml
index 079d36d5..6f5c6fb7 100644
--- a/job.yml
+++ b/job.yml
@@ -446,17 +446,17 @@ json:
set-page-labels:
- null
overlay:
- UO.file:
- UO.password:
- from:
- repeat:
- to:
+ - UO.file:
+ UO.password:
+ from:
+ repeat:
+ to:
underlay:
- UO.file:
- UO.password:
- from:
- repeat:
- to:
+ - UO.file:
+ UO.password:
+ from:
+ repeat:
+ to:
warning-exit-0:
job-json-file:
preserve-unreferenced-resources:
diff --git a/libqpdf/QPDFJob_json.cc b/libqpdf/QPDFJob_json.cc
index c26c97f6..fefe8fff 100644
--- a/libqpdf/QPDFJob_json.cc
+++ b/libqpdf/QPDFJob_json.cc
@@ -522,6 +522,18 @@ Handlers::setupPagesPassword()
}
void
+Handlers::beginOverlayArray(JSON)
+{
+ // nothing needed
+}
+
+void
+Handlers::endOverlayArray()
+{
+ // nothing needed
+}
+
+void
Handlers::beginOverlay(JSON j)
{
this->c_uo = c_main->overlay();
@@ -549,6 +561,18 @@ Handlers::setupOverlayPassword()
}
void
+Handlers::beginUnderlayArray(JSON)
+{
+ // nothing needed
+}
+
+void
+Handlers::endUnderlayArray()
+{
+ // nothing needed
+}
+
+void
Handlers::beginUnderlay(JSON j)
{
this->c_uo = c_main->underlay();
diff --git a/libqpdf/qpdf/auto_job_json_decl.hh b/libqpdf/qpdf/auto_job_json_decl.hh
index d7cb9595..a5a393a2 100644
--- a/libqpdf/qpdf/auto_job_json_decl.hh
+++ b/libqpdf/qpdf/auto_job_json_decl.hh
@@ -46,10 +46,14 @@ void setupPagesPassword();
void beginSetPageLabelsArray(JSON);
void endSetPageLabelsArray();
void setupSetPageLabels();
+void beginOverlayArray(JSON);
+void endOverlayArray();
void beginOverlay(JSON);
void endOverlay();
void setupOverlayFile();
void setupOverlayPassword();
+void beginUnderlayArray(JSON);
+void endUnderlayArray();
void beginUnderlay(JSON);
void endUnderlay();
void setupUnderlayFile();
diff --git a/libqpdf/qpdf/auto_job_json_init.hh b/libqpdf/qpdf/auto_job_json_init.hh
index aaa1fb64..ee4c7421 100644
--- a/libqpdf/qpdf/auto_job_json_init.hh
+++ b/libqpdf/qpdf/auto_job_json_init.hh
@@ -427,6 +427,7 @@ setupSetPageLabels();
popHandler(); // array: .setPageLabels[]
popHandler(); // key: setPageLabels
pushKey("overlay");
+beginArray(bindJSON(&Handlers::beginOverlayArray), bindBare(&Handlers::endOverlayArray)); // .overlay[]
beginDict(bindJSON(&Handlers::beginOverlay), bindBare(&Handlers::endOverlay)); // .overlay
pushKey("file");
setupOverlayFile();
@@ -443,8 +444,10 @@ popHandler(); // key: repeat
pushKey("to");
addParameter([this](std::string const& p) { c_uo->to(p); });
popHandler(); // key: to
+popHandler(); // array: .overlay[]
popHandler(); // key: overlay
pushKey("underlay");
+beginArray(bindJSON(&Handlers::beginUnderlayArray), bindBare(&Handlers::endUnderlayArray)); // .underlay[]
beginDict(bindJSON(&Handlers::beginUnderlay), bindBare(&Handlers::endUnderlay)); // .underlay
pushKey("file");
setupUnderlayFile();
@@ -461,6 +464,7 @@ popHandler(); // key: repeat
pushKey("to");
addParameter([this](std::string const& p) { c_uo->to(p); });
popHandler(); // key: to
+popHandler(); // array: .underlay[]
popHandler(); // key: underlay
pushKey("warningExit0");
addBare([this]() { c_main->warningExit0(); });
diff --git a/libqpdf/qpdf/auto_job_schema.hh b/libqpdf/qpdf/auto_job_schema.hh
index 507a54a4..df75a5e8 100644
--- a/libqpdf/qpdf/auto_job_schema.hh
+++ b/libqpdf/qpdf/auto_job_schema.hh
@@ -151,20 +151,24 @@ static constexpr char const* JOB_SCHEMA_DATA = R"({
"setPageLabels": [
"number pages for the entire document"
],
- "overlay": {
- "file": "source for pages",
- "password": "password for encrypted file",
- "from": "source pages for underlay/overlay",
- "repeat": "overlay/underlay pages to repeat",
- "to": "destination pages for underlay/overlay"
- },
- "underlay": {
- "file": "source for pages",
- "password": "password for encrypted file",
- "from": "source pages for underlay/overlay",
- "repeat": "overlay/underlay pages to repeat",
- "to": "destination pages for underlay/overlay"
- },
+ "overlay": [
+ {
+ "file": "source for pages",
+ "password": "password for encrypted file",
+ "from": "source pages for underlay/overlay",
+ "repeat": "overlay/underlay pages to repeat",
+ "to": "destination pages for underlay/overlay"
+ }
+ ],
+ "underlay": [
+ {
+ "file": "source for pages",
+ "password": "password for encrypted file",
+ "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 removeUnreferencedResources=no",