Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-07-24 | Add optional parameter separator to QPDFObjGen::unparse | m-holger | |
Also, revert inlining of unparse and operator << from commit 4c6640c in order to avoid exposing QUtil. | |||
2022-07-16 | Format code after previous pull request | Jay Berkenbilt | |
2022-07-16 | Inline QPDFObjGen methods | m-holger | |
ABI breaking change | |||
2022-06-27 | Run format-code | Jay Berkenbilt | |
2022-06-27 | Refactor QPDFObject creation and cloning | m-holger | |
Move responsibility for creating shared pointers to objects and cloning from QPDFObjectHandle to QPDFObject. | |||
2022-06-27 | Refactor QPDFObjectTypeAccessor and QPDFObjectHandle::dereference | m-holger | |
2022-06-25 | Track whether certain page modifying methods have been called | Jay 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-25 | Add private method QPDFObjectHandle::getObjGenAsStr | m-holger | |
Also, use methods to access objid and generation. | |||
2022-06-19 | Add Pl_Function -- a generic function pipeline | Jay Berkenbilt | |
2022-06-19 | Add qpdfjob_register_progress_reporter | Jay Berkenbilt | |
2022-06-19 | Add QPDFJob::registerProgressReporter | Jay Berkenbilt | |
2022-06-19 | Move C-based ProgressReporter helper into QPDFWriter | Jay Berkenbilt | |
2022-06-19 | Add examples for output capture (fixes #691) | Jay Berkenbilt | |
2022-06-19 | Add C API to QPDFLogger | Jay Berkenbilt | |
2022-06-19 | Add more flexible funtions to qpdfjob C API | Jay Berkenbilt | |
2022-06-18 | Expose exit code values to C API via Constants.h | Jay Berkenbilt | |
2022-06-18 | Use the default logger for other writes to stdout/stderr | Jay Berkenbilt | |
When there is no context for writing output or error messages, use the default logger. | |||
2022-06-18 | QPDF, QPDFJob: use QPDFLogger instead of custom output streams | Jay Berkenbilt | |
2022-06-18 | Add and test QPDFLogger class | Jay Berkenbilt | |
2022-06-18 | Add integer types to Pipeline::operator<< | Jay Berkenbilt | |
2022-06-09 | Fix minor doc typos in JSON.hh | m-holger | |
2022-05-31 | Update documentation for qpdf JSON v2 | Jay Berkenbilt | |
2022-05-31 | Add conversions to ISO-8601 date format | Jay Berkenbilt | |
2022-05-21 | Format code | Jay Berkenbilt | |
2022-05-21 | JSON: Fix large file support | Jay Berkenbilt | |
2022-05-21 | Replace std::regex with validators for better performance | Jay Berkenbilt | |
2022-05-20 | Exercise object description in tests | Jay Berkenbilt | |
2022-05-20 | Test --update-from-json | Jay Berkenbilt | |
2022-05-20 | JSON: detect duplicate dictionary keys while parsing | Jay Berkenbilt | |
2022-05-20 | Make version default to latest for --json-output (like --json) | Jay Berkenbilt | |
2022-05-20 | Major rework -- see long comments | Jay 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-20 | Add QUtil::FileCloser to the public API | Jay Berkenbilt | |
2022-05-20 | Support stream data -- not tested | Jay Berkenbilt | |
There are no automated tests yet, but committing work so far in preparation for some refactoring. | |||
2022-05-20 | replaceStreamData: accept uninitialized filter/decode_parms | Jay 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-20 | Back 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-20 | Parse objects; stream data is not yet handled | Jay Berkenbilt | |
2022-05-20 | Add new error type for JSON | Jay Berkenbilt | |
2022-05-20 | Add private methods for reserving specific objects | Jay Berkenbilt | |
2022-05-16 | Implement top-level qpdf json parsing | Jay Berkenbilt | |
2022-05-16 | Add scaffolding for QPDF JSON reactor | Jay Berkenbilt | |
2022-05-16 | Add --create-from-json and --update-from-json arguments | Jay Berkenbilt | |
Also add stubs for top-level QPDF methods (createFromJSON, updateFromJSON) | |||
2022-05-16 | Add QUtil::is_long_long | Jay Berkenbilt | |
2022-05-14 | JSON reactor: improve handling of nested containers | Jay 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-08 | Add --to-json option | Jay Berkenbilt | |
2022-05-08 | Implement JSON v2 output | Jay Berkenbilt | |
2022-05-08 | Fix typo in json output key name | Jay 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-08 | Implement JSON v2 for Stream | Jay Berkenbilt | |
Not fully exercised in this commit | |||
2022-05-07 | Prepare code for JSON v2 | Jay Berkenbilt | |
Update getJSON() methods and calls to them | |||
2022-05-07 | Objects json: write incrementally and in numeric order | Jay 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)) ---------- | |||
2022-05-07 | Make JSON::writeNext public | Jay Berkenbilt | |