aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
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 /libqpdf
parent0161f62e38fa44ef7fe88138d62a9f0b96f2921d (diff)
downloadqpdf-6cf04b0a8863512765864287271248a61eac6214.tar.zst
Allow repetition of overlay/underlay
This is just QPDFJob wiring.
Diffstat (limited to 'libqpdf')
-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
4 files changed, 50 insertions, 14 deletions
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",