aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFJob_json.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-01-30 20:06:57 +0100
committerJay Berkenbilt <ejb@ql.org>2022-01-31 21:57:45 +0100
commiteeffc69d872e16468f3627054dfdad586fafae29 (patch)
tree0ec205d02b956b2f5d2e010b03b9d90793db57c7 /libqpdf/QPDFJob_json.cc
parentfa9676557e3065d75f732622bd498d5572ba686e (diff)
downloadqpdf-eeffc69d872e16468f3627054dfdad586fafae29.tar.zst
QPDFJob_json: implement handlers for pages
Diffstat (limited to 'libqpdf/QPDFJob_json.cc')
-rw-r--r--libqpdf/QPDFJob_json.cc43
1 files changed, 34 insertions, 9 deletions
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