From 6cf04b0a8863512765864287271248a61eac6214 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Tue, 9 Jan 2024 20:29:38 -0500 Subject: Allow repetition of overlay/underlay This is just QPDFJob wiring. --- libqpdf/QPDFJob_json.cc | 24 ++++++++++++++++++++++++ libqpdf/qpdf/auto_job_json_decl.hh | 4 ++++ libqpdf/qpdf/auto_job_json_init.hh | 4 ++++ libqpdf/qpdf/auto_job_schema.hh | 32 ++++++++++++++++++-------------- 4 files changed, 50 insertions(+), 14 deletions(-) (limited to 'libqpdf') 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 @@ -521,6 +521,18 @@ Handlers::setupPagesPassword() addParameter([this](char const* p) { c_pages->password(p); }); } +void +Handlers::beginOverlayArray(JSON) +{ + // nothing needed +} + +void +Handlers::endOverlayArray() +{ + // nothing needed +} + void Handlers::beginOverlay(JSON j) { @@ -548,6 +560,18 @@ Handlers::setupOverlayPassword() addParameter([this](char const* p) { c_uo->password(p); }); } +void +Handlers::beginUnderlayArray(JSON) +{ + // nothing needed +} + +void +Handlers::endUnderlayArray() +{ + // nothing needed +} + void Handlers::beginUnderlay(JSON j) { 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", -- cgit v1.2.3-54-g00ecf