• * 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.
    Jay Berkenbilt authored
     
    Browse File »



  • Update getJSON() methods and calls to them
    Jay Berkenbilt authored
     
    Browse File »
  • This script was used on 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 'objectinfo' not in data:
            continue
        trailer = None
        to_sort = []
        for k, v in data['objectinfo'].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])
        newobjectinfo = {x[1]: x[2] for x in sorted(to_sort)}
        if trailer is not None:
            newobjectinfo['trailer'] = trailer
        data['objectinfo'] = newobjectinfo
    print(json_dumps(data))
    ----------
    Jay Berkenbilt authored
     
    Browse File »
  • 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))
    ----------
    Jay Berkenbilt authored
     
    Browse File »
  • Jay Berkenbilt authored
     
    Browse File »
  • 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))
    ----------
    Jay Berkenbilt authored
     
    Browse File »
  • Testing json against schema requires an in-memory copy, so do it only
    when requested by the test suite.
    Jay Berkenbilt authored
     
    Browse File »
  • Jay Berkenbilt authored
     
    Browse File »
  • Jay Berkenbilt authored
     
    Browse File »








  • (patrepl and cleanpatch are my own utilities)
    
    patrepl s/PointerHolder/std::shared_ptr/g {include,libqpdf}/qpdf/*.hh
    patrepl s/PointerHolder/std::shared_ptr/g libqpdf/*.cc
    patrepl s/make_pointer_holder/std::make_shared/g libqpdf/*.cc
    patrepl s/make_array_pointer_holder/QUtil::make_shared_array/g libqpdf/*.cc
    patrepl s,qpdf/std::shared_ptr,qpdf/PointerHolder, **/*.cc **/*.hh
    git restore include/qpdf/PointerHolder.hh
    cleanpatch
    ./format-code
    Jay Berkenbilt authored
     
    Browse File »

  • Add comments to force line breaks, parenthesize function arguments
    that are contatenated strings, etc. -- these kinds of changes improve
    clang-format's results and also cause emacs cc-mode to match
    clang-format. After this type of change, most of the time, when
    clang-format and emacs disagree, clang-format is better.
    Jay Berkenbilt authored
     
    Browse File »



  • Remove test for type == /XObject in QPDFObjectHandle::isFormXObject
    as type value is optional (as per spec 8.10.2).
    
    Replace code to test for /Form in QPDFJob::shouldRemoveUnreferencedResources
    with a call to isFormXObject.
    m-holger authored
     
    Browse File »