From eeffc69d872e16468f3627054dfdad586fafae29 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 30 Jan 2022 14:06:57 -0500 Subject: QPDFJob_json: implement handlers for pages --- libqpdf/QPDFJob_json.cc | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) (limited to 'libqpdf/QPDFJob_json.cc') diff --git a/libqpdf/QPDFJob_json.cc b/libqpdf/QPDFJob_json.cc index 22a092d5..02e851b0 100644 --- a/libqpdf/QPDFJob_json.cc +++ b/libqpdf/QPDFJob_json.cc @@ -426,13 +426,13 @@ Handlers::endInspect() void Handlers::beginOptionsAddAttachmentArray(JSON) { - // QXXXQ + // nothing needed } void Handlers::endOptionsAddAttachmentArray() { - // QXXXQ + // nothing needed } void @@ -459,13 +459,13 @@ Handlers::setupOptionsAddAttachmentPath(std::string const& key) void Handlers::beginOptionsCopyAttachmentsFromArray(JSON) { - // QXXXQ + // nothing needed } void Handlers::endOptionsCopyAttachmentsFromArray() { - // QXXXQ + // nothing needed } void @@ -500,25 +500,50 @@ Handlers::setupOptionsCopyAttachmentsFromPassword(std::string const& key) void Handlers::beginOptionsPagesArray(JSON) { - // QXXXQ + this->c_pages = c_main->pages(); } void Handlers::endOptionsPagesArray() { - // QXXXQ + c_pages->endPages(); + c_pages = nullptr; } void -Handlers::beginOptionsPages(JSON) +Handlers::beginOptionsPages(JSON j) { - // QXXXQ + std::string file; + std::string range("1-z"); + std::string password; + bool file_seen = false; + bool password_seen = false; + j.forEachDictItem([&](std::string const& key, JSON value){ + if (key == "file") + { + file_seen = value.getString(file); + } + else if (key == "range") + { + value.getString(range); + } + else if (key == "password") + { + password_seen = value.getString(password); + } + }); + if (! file_seen) + { + usage("file is required in page specification"); + } + this->c_pages->pageSpec( + file, range, password_seen ? password.c_str() : nullptr); } void Handlers::endOptionsPages() { - // QXXXQ + // nothing needed } void -- cgit v1.2.3-54-g00ecf