aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFJob.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-05-08 19:42:16 +0200
committerJay Berkenbilt <ejb@ql.org>2022-05-16 19:41:40 +0200
commit4fe2e06b4787ffb639f965ac840b51018308ec07 (patch)
tree667474624e264384d544cbed4324b909478f3450 /libqpdf/QPDFJob.cc
parented6130036c65124cb236e709201330404a4b1d72 (diff)
downloadqpdf-4fe2e06b4787ffb639f965ac840b51018308ec07.tar.zst
Add --create-from-json and --update-from-json arguments
Also add stubs for top-level QPDF methods (createFromJSON, updateFromJSON)
Diffstat (limited to 'libqpdf/QPDFJob.cc')
-rw-r--r--libqpdf/QPDFJob.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc
index 55bebdcb..41e57c58 100644
--- a/libqpdf/QPDFJob.cc
+++ b/libqpdf/QPDFJob.cc
@@ -553,6 +553,13 @@ QPDFJob::run()
if (m->check_is_encrypted || m->check_requires_password) {
return;
}
+
+ // If we are updating from JSON, this has to be done first before
+ // other options may cause transformations to the input.
+ if (!this->m->update_from_json.empty()) {
+ pdf.updateFromJSON(this->m->update_from_json);
+ }
+
bool other_warnings = false;
std::vector<std::shared_ptr<QPDF>> page_heap;
if (!m->page_specs.empty()) {
@@ -1937,7 +1944,11 @@ QPDFJob::doProcessOnce(
auto pdf = std::make_shared<QPDF>();
setQPDFOptions(*pdf);
if (empty) {
- pdf->emptyPDF();
+ if (!this->m->create_from_json.empty()) {
+ pdf->createFromJSON(this->m->create_from_json);
+ } else {
+ pdf->emptyPDF();
+ }
} else {
fn(pdf.get(), password);
}