diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-11-03 15:12:50 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-11-03 21:00:05 +0100 |
commit | 73752683c936af0f5a556982c2c59516d2914ee3 (patch) | |
tree | 1a9e52b7aa9eef21891ce918a75362c69539ee2f /qpdf/qpdf.cc | |
parent | a3a3203f4150e63a303b76060367b8d3b2b21fd3 (diff) | |
download | qpdf-73752683c936af0f5a556982c2c59516d2914ee3.tar.zst |
Fix overlay/underlay on page with no resources (fixes #527)
Diffstat (limited to 'qpdf/qpdf.cc')
-rw-r--r-- | qpdf/qpdf.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc index 2ed03cff..e1cd62da 100644 --- a/qpdf/qpdf.cc +++ b/qpdf/qpdf.cc @@ -5226,6 +5226,12 @@ static void do_under_overlay_for_page( std::string content; int min_suffix = 1; QPDFObjectHandle resources = dest_page.getAttribute("/Resources", true); + if (! resources.isDictionary()) + { + QTC::TC("qpdf", "qpdf overlay page with no resources"); + resources = QPDFObjectHandle::newDictionary(); + dest_page.getObjectHandle().replaceKey("/Resources", resources); + } for (std::vector<int>::iterator iter = pagenos[pageno].begin(); iter != pagenos[pageno].end(); ++iter) { @@ -5257,7 +5263,11 @@ static void do_under_overlay_for_page( { resources.mergeResources( QPDFObjectHandle::parse("<< /XObject << >> >>")); - resources.getKey("/XObject").replaceKey(name, fo[from_pageno]); + auto xobject = resources.getKey("/XObject"); + if (xobject.isDictionary()) + { + xobject.replaceKey(name, fo[from_pageno]); + } ++min_suffix; content += new_content; } |