Commit eeffc69d872e16468f3627054dfdad586fafae29

Authored by Jay Berkenbilt
1 parent fa967655

QPDFJob_json: implement handlers for pages

Showing 1 changed file with 34 additions and 9 deletions
libqpdf/QPDFJob_json.cc
@@ -426,13 +426,13 @@ Handlers::endInspect() @@ -426,13 +426,13 @@ Handlers::endInspect()
426 void 426 void
427 Handlers::beginOptionsAddAttachmentArray(JSON) 427 Handlers::beginOptionsAddAttachmentArray(JSON)
428 { 428 {
429 - // QXXXQ 429 + // nothing needed
430 } 430 }
431 431
432 void 432 void
433 Handlers::endOptionsAddAttachmentArray() 433 Handlers::endOptionsAddAttachmentArray()
434 { 434 {
435 - // QXXXQ 435 + // nothing needed
436 } 436 }
437 437
438 void 438 void
@@ -459,13 +459,13 @@ Handlers::setupOptionsAddAttachmentPath(std::string const& key) @@ -459,13 +459,13 @@ Handlers::setupOptionsAddAttachmentPath(std::string const& key)
459 void 459 void
460 Handlers::beginOptionsCopyAttachmentsFromArray(JSON) 460 Handlers::beginOptionsCopyAttachmentsFromArray(JSON)
461 { 461 {
462 - // QXXXQ 462 + // nothing needed
463 } 463 }
464 464
465 void 465 void
466 Handlers::endOptionsCopyAttachmentsFromArray() 466 Handlers::endOptionsCopyAttachmentsFromArray()
467 { 467 {
468 - // QXXXQ 468 + // nothing needed
469 } 469 }
470 470
471 void 471 void
@@ -500,25 +500,50 @@ Handlers::setupOptionsCopyAttachmentsFromPassword(std::string const& key) @@ -500,25 +500,50 @@ Handlers::setupOptionsCopyAttachmentsFromPassword(std::string const& key)
500 void 500 void
501 Handlers::beginOptionsPagesArray(JSON) 501 Handlers::beginOptionsPagesArray(JSON)
502 { 502 {
503 - // QXXXQ 503 + this->c_pages = c_main->pages();
504 } 504 }
505 505
506 void 506 void
507 Handlers::endOptionsPagesArray() 507 Handlers::endOptionsPagesArray()
508 { 508 {
509 - // QXXXQ 509 + c_pages->endPages();
  510 + c_pages = nullptr;
510 } 511 }
511 512
512 void 513 void
513 -Handlers::beginOptionsPages(JSON) 514 +Handlers::beginOptionsPages(JSON j)
514 { 515 {
515 - // QXXXQ 516 + std::string file;
  517 + std::string range("1-z");
  518 + std::string password;
  519 + bool file_seen = false;
  520 + bool password_seen = false;
  521 + j.forEachDictItem([&](std::string const& key, JSON value){
  522 + if (key == "file")
  523 + {
  524 + file_seen = value.getString(file);
  525 + }
  526 + else if (key == "range")
  527 + {
  528 + value.getString(range);
  529 + }
  530 + else if (key == "password")
  531 + {
  532 + password_seen = value.getString(password);
  533 + }
  534 + });
  535 + if (! file_seen)
  536 + {
  537 + usage("file is required in page specification");
  538 + }
  539 + this->c_pages->pageSpec(
  540 + file, range, password_seen ? password.c_str() : nullptr);
516 } 541 }
517 542
518 void 543 void
519 Handlers::endOptionsPages() 544 Handlers::endOptionsPages()
520 { 545 {
521 - // QXXXQ 546 + // nothing needed
522 } 547 }
523 548
524 void 549 void