poppler/Catalog.cc | 2 +- poppler/Dict.cc | 4 ++++ poppler/Dict.h | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-)
New commits: commit 52e25cca7e75a8b8eac95a3cec258f1cd9f8ecaa Author: Albert Astals Cid <[email protected]> Date: Tue Nov 23 20:31:14 2010 +0000 If it is not a Page but has no Kids either let's just pretend it's a page Fixes broken PDF at bug 31861 diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc index 6b28997..664d18a 100644 --- a/poppler/Catalog.cc +++ b/poppler/Catalog.cc @@ -333,7 +333,7 @@ GBool Catalog::cachePageTree(int page) Object kid; kids.arrayGet(kidsIdx, &kid); kids.free(); - if (kid.isDict("Page")) { + if (kid.isDict("Page") || (kid.isDict() && !kid.getDict()->hasKey("Kids"))) { PageAttrs *attrs = new PageAttrs(attrsList->back(), kid.getDict()); Page *p = new Page(xref, lastCachedPage+1, kid.getDict(), kidRef.getRef(), attrs, form); diff --git a/poppler/Dict.cc b/poppler/Dict.cc index 2318e69..1428113 100644 --- a/poppler/Dict.cc +++ b/poppler/Dict.cc @@ -141,6 +141,10 @@ inline DictEntry *Dict::find(char *key) { return NULL; } +GBool Dict::hasKey(char *key) { + return find(key) != NULL; +} + void Dict::remove(char *key) { if (sorted) { const int pos = binarySearch(key, entries, length); diff --git a/poppler/Dict.h b/poppler/Dict.h index 95c596c..f4ed64a 100644 --- a/poppler/Dict.h +++ b/poppler/Dict.h @@ -87,6 +87,8 @@ public: void setXRef(XRef *xrefA) { xref = xrefA; } XRef *getXRef() { return xref; } + + GBool hasKey(char *key); private: _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
