aboutsummaryrefslogtreecommitdiffstats
path: root/include
AgeCommit message (Collapse)Author
2022-07-24Add method QPDFObjGen::isIndirectm-holger
2022-07-24Add optional parameter separator to QPDFObjGen::unparsem-holger
Also, revert inlining of unparse and operator << from commit 4c6640c in order to avoid exposing QUtil.
2022-07-16Format code after previous pull requestJay Berkenbilt
2022-07-16Inline QPDFObjGen methodsm-holger
ABI breaking change
2022-06-27Run format-codeJay Berkenbilt
2022-06-27Refactor QPDFObject creation and cloningm-holger
Move responsibility for creating shared pointers to objects and cloning from QPDFObjectHandle to QPDFObject.
2022-06-27Refactor QPDFObjectTypeAccessor and QPDFObjectHandle::dereferencem-holger
2022-06-25Track whether certain page modifying methods have been calledJay Berkenbilt
We need to know whether pushInheritedAttributesToPage or getAllPages have been called when generating JSON output. When reading the JSON back in, we have to call the same methods so that object numbers will line up properly.
2022-06-25Add private method QPDFObjectHandle::getObjGenAsStrm-holger
Also, use methods to access objid and generation.
2022-06-19Add Pl_Function -- a generic function pipelineJay Berkenbilt
2022-06-19Add qpdfjob_register_progress_reporterJay Berkenbilt
2022-06-19Add QPDFJob::registerProgressReporterJay Berkenbilt
2022-06-19Move C-based ProgressReporter helper into QPDFWriterJay Berkenbilt
2022-06-19Add examples for output capture (fixes #691)Jay Berkenbilt
2022-06-19Add C API to QPDFLoggerJay Berkenbilt
2022-06-19Add more flexible funtions to qpdfjob C APIJay Berkenbilt
2022-06-18Expose exit code values to C API via Constants.hJay Berkenbilt
2022-06-18Use the default logger for other writes to stdout/stderrJay Berkenbilt
When there is no context for writing output or error messages, use the default logger.
2022-06-18QPDF, QPDFJob: use QPDFLogger instead of custom output streamsJay Berkenbilt
2022-06-18Add and test QPDFLogger classJay Berkenbilt
2022-06-18Add integer types to Pipeline::operator<<Jay Berkenbilt
2022-06-09Fix minor doc typos in JSON.hhm-holger
2022-05-31Update documentation for qpdf JSON v2Jay Berkenbilt
2022-05-31Add conversions to ISO-8601 date formatJay Berkenbilt
2022-05-21Format codeJay Berkenbilt
2022-05-21JSON: Fix large file supportJay Berkenbilt
2022-05-21Replace std::regex with validators for better performanceJay Berkenbilt
2022-05-20Exercise object description in testsJay Berkenbilt
2022-05-20Test --update-from-jsonJay Berkenbilt
2022-05-20JSON: detect duplicate dictionary keys while parsingJay Berkenbilt
2022-05-20Make version default to latest for --json-output (like --json)Jay Berkenbilt
2022-05-20Major rework -- see long commentsJay Berkenbilt
* Replace --create-from-json=file with --json-input, which causes the regular input to be treated as json. * Eliminate --to-json * In --json=2, bring back "objects" and eliminate "objectinfo". Stream data is never present. * In --json-output=2, write "qpdf-v2" with "objects" and include stream data.
2022-05-20Add QUtil::FileCloser to the public APIJay Berkenbilt
2022-05-20Support stream data -- not testedJay Berkenbilt
There are no automated tests yet, but committing work so far in preparation for some refactoring.
2022-05-20replaceStreamData: accept uninitialized filter/decode_parmsJay Berkenbilt
These mean to leave the original values alone. This is needed for reconstructing streams from JSON given that the stream data and stream dictionary may appear in any order in the JSON.
2022-05-20Back out fluent QPDFObjectHandle methods. Keep the andGet methods.Jay Berkenbilt
I decided these were confusing and inconsistent with how JSON works. They muddle the API rather than improving it.
2022-05-20Parse objects; stream data is not yet handledJay Berkenbilt
2022-05-20Add new error type for JSONJay Berkenbilt
2022-05-20Add private methods for reserving specific objectsJay Berkenbilt
2022-05-16Implement top-level qpdf json parsingJay Berkenbilt
2022-05-16Add scaffolding for QPDF JSON reactorJay Berkenbilt
2022-05-16Add --create-from-json and --update-from-json argumentsJay Berkenbilt
Also add stubs for top-level QPDF methods (createFromJSON, updateFromJSON)
2022-05-16Add QUtil::is_long_longJay Berkenbilt
2022-05-14JSON reactor: improve handling of nested containersJay Berkenbilt
Call the parent container's item method before calling the child item's start method so we can easily know the current nesting level when nested items are added.
2022-05-08Add --to-json optionJay Berkenbilt
2022-05-08Implement JSON v2 outputJay Berkenbilt
2022-05-08Fix typo in json output key nameJay Berkenbilt
moddify -> modify. Also carefully spell checked all remaining keys by splitting them into words and running a spell checker, not just relying on visual proofreading. That was the only one.
2022-05-08Implement JSON v2 for StreamJay Berkenbilt
Not fully exercised in this commit
2022-05-07Prepare code for JSON v2Jay Berkenbilt
Update getJSON() methods and calls to them
2022-05-07Objects json: write incrementally and in numeric orderJay Berkenbilt
The following script was used to adjust test data: ---------- #!/usr/bin/env python3 import json import sys import re def json_dumps(data): return json.dumps(data, ensure_ascii=False, indent=2, separators=(',', ': ')) for filename in sys.argv[1:]: with open(filename, 'r') as f: data = json.loads(f.read()) if 'objects' not in data: continue trailer = None to_sort = [] for k, v in data['objects'].items(): if k == 'trailer': trailer = v else: m = re.match(r'^(\d+) \d+ R', k) if m: to_sort.append([int(m.group(1)), k, v]) newobjects = {x[1]: x[2] for x in sorted(to_sort)} if trailer is not None: newobjects['trailer'] = trailer data['objects'] = newobjects print(json_dumps(data)) ----------