Age | Commit message (Collapse) | Author | |
---|---|---|---|
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 | |
2022-05-07 | Top-level json: write incrementally | Jay Berkenbilt | |
This commit just changes the order in which fields are written to the json without changing their content. All the json files in the test suite were modified with this script to ensure that we didn't get any changes other than ordering. ---------- #!/usr/bin/env python3 import json import sys 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()) newdata = {} for i in ('version', 'parameters', 'pages', 'pagelabels', 'acroform', 'attachments', 'encrypt', 'outlines', 'objects', 'objectinfo'): if i in data: newdata[i] = data[i] print(json_dumps(newdata)) ---------- | |||
2022-05-07 | Add next to Pl_String and fix comments | Jay Berkenbilt | |
2022-05-07 | Add --test-json-schema command-line option | Jay Berkenbilt | |
2022-05-07 | QPDFJob: have doJSON write to a pipeline | Jay Berkenbilt | |
2022-05-07 | JSON: add blob type that generates base64-encoded binary data | Jay Berkenbilt | |
2022-05-04 | Change JSON parser to parse from an InputSource | Jay Berkenbilt | |
2022-05-04 | Add new FileInputSource constructors | Jay Berkenbilt | |
2022-05-04 | JSON: add write methods and implement unparse() in terms of those | Jay Berkenbilt | |
2022-05-04 | Add new Pl_String Pipeline | Jay Berkenbilt | |
2022-05-04 | Add new Pl_OStream Pipeline | Jay Berkenbilt | |
2022-05-04 | Add new Pipeline convenience methods | Jay Berkenbilt | |
2022-05-04 | Make Pipeline::write take an unsigned char const* (API change) | Jay Berkenbilt | |
2022-05-04 | Make assert handling less error-prone | Jay Berkenbilt | |
Prevent my future self or other contributors from using assert in tests and then having that assert not do anything because of the NDEBUG macro. | |||
2022-05-02 | Add reactors to the JSON parser | Jay Berkenbilt | |
2022-05-01 | Spell check | Jay Berkenbilt | |
2022-04-30 | Mark weak encryption with API changes (fixes #576) | Jay Berkenbilt | |
2022-04-30 | Remove deprecated (pre-8.4.0) encryption APIs | Jay Berkenbilt | |
2022-04-30 | Add comments around non-security-related uses of MD5 | Jay Berkenbilt | |
2022-04-30 | Revert "Remove QPDFObjectHandle::replaceOrRemoveKey" | Jay Berkenbilt | |
This reverts commit dc059560e73e0b373a6e54e71b07e3af4b692cb4. I changed my mind. There's no harm in leaving it deprecated for a release cycle. | |||
2022-04-30 | Remove QPDFObjectHandle::replaceOrRemoveKey | Jay Berkenbilt | |
See ChangeLog for rationale for not deprecating it as originally planned. | |||
2022-04-30 | Add new QPDFObjectHandle methods for more fluent programming | Jay Berkenbilt | |
2022-04-24 | Deprecate replaceOrRemoveKey -- it's the same as replaceKey | Jay Berkenbilt | |