diff options
author | Jay Berkenbilt <ejb@ql.org> | 2012-07-21 15:00:06 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2012-07-21 15:06:10 +0200 |
commit | 6bbea4baa0c06b39b1b71f1aa6fc276789296556 (patch) | |
tree | 62198136a609c86029d124323be9e2ea72f88d9a /qpdf/pdf_from_scratch.cc | |
parent | f3e267fce28c58039789379ba3488ad12c20a7f6 (diff) | |
download | qpdf-6bbea4baa0c06b39b1b71f1aa6fc276789296556.tar.zst |
Implement QPDFObjectHandle::parse
Move object parsing code from QPDF to QPDFObjectHandle and
parameterize the parts of it that are specific to a QPDF object.
Provide a version that can't handle indirect objects and that can be
called on an arbitrary string.
A side effect of this change is that the offset used when reporting
invalid stream length has changed, but since the new value seems like
a better value than the old one, the test suite has been updated
rather than making the code backward compatible. This only effects
the offset reported for invalid streams that lack /Length or have an
invalid /Length key.
Updated some test code and exmaples to use QPDFObjectHandle::parse.
Supporting changes include adding a BufferInputSource constructor that
takes a string.
Diffstat (limited to 'qpdf/pdf_from_scratch.cc')
-rw-r--r-- | qpdf/pdf_from_scratch.cc | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/qpdf/pdf_from_scratch.cc b/qpdf/pdf_from_scratch.cc index 2f853c24..10ef5512 100644 --- a/qpdf/pdf_from_scratch.cc +++ b/qpdf/pdf_from_scratch.cc @@ -38,25 +38,20 @@ void runtest(int n) // Create a minimal PDF from scratch. QPDFObjectHandle font = pdf.makeIndirectObject( - QPDFObjectHandle::newDictionary()); - font.replaceKey("/Type", newName("/Font")); - font.replaceKey("/Subtype", newName("/Type1")); - font.replaceKey("/Name", newName("/F1")); - font.replaceKey("/BaseFont", newName("/Helvetica")); - font.replaceKey("/Encoding", newName("/WinAnsiEncoding")); + QPDFObjectHandle::parse("<<" + " /Type /Font" + " /Subtype /Type1" + " /Name /F1" + " /BaseFont /Helvetica" + " /Encoding /WinAnsiEncoding" + ">>")); QPDFObjectHandle procset = pdf.makeIndirectObject( - QPDFObjectHandle::newArray()); - procset.appendItem(newName("/PDF")); - procset.appendItem(newName("/Text")); + QPDFObjectHandle::parse("[/PDF /Text]")); QPDFObjectHandle contents = createPageContents(pdf, "First Page"); - QPDFObjectHandle mediabox = QPDFObjectHandle::newArray(); - mediabox.appendItem(QPDFObjectHandle::newInteger(0)); - mediabox.appendItem(QPDFObjectHandle::newInteger(0)); - mediabox.appendItem(QPDFObjectHandle::newInteger(612)); - mediabox.appendItem(QPDFObjectHandle::newInteger(792)); + QPDFObjectHandle mediabox = QPDFObjectHandle::parse("[0 0 612 792]"); QPDFObjectHandle rfont = QPDFObjectHandle::newDictionary(); rfont.replaceKey("/F1", font); |