aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/pdf_from_scratch.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2012-07-21 15:00:06 +0200
committerJay Berkenbilt <ejb@ql.org>2012-07-21 15:06:10 +0200
commit6bbea4baa0c06b39b1b71f1aa6fc276789296556 (patch)
tree62198136a609c86029d124323be9e2ea72f88d9a /qpdf/pdf_from_scratch.cc
parentf3e267fce28c58039789379ba3488ad12c20a7f6 (diff)
downloadqpdf-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.cc23
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);