pdf2djvu/poppler-0.58.patch

112 lines
3.1 KiB
Diff
Raw Normal View History

2017-09-08 08:12:00 +00:00
From 435cd4bddd69f742467114cc0f9331e48f30cabc Mon Sep 17 00:00:00 2001
From: Jakub Wilk <jwilk@jwilk.net>
Date: Sat, 2 Sep 2017 15:58:25 +0200
Subject: [PATCH] Fix compatibility with Poppler 0.58.
http://cgit.freedesktop.org/poppler/poppler/commit/?id=3c29ded4bee5eadb829ed46af2ec92be57b0077b
http://cgit.freedesktop.org/poppler/poppler/commit/?id=9773c1534668d84b8267c3e5c9d612076fa231a5
---
pdf-backend.cc | 14 ++++++++++++--
pdf-backend.hh | 12 ++++++++++++
pdf2djvu.cc | 5 ++++-
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/pdf-backend.cc b/pdf-backend.cc
index 2499402..554c5c0 100644
--- a/pdf-backend.cc
+++ b/pdf-backend.cc
@@ -402,7 +402,7 @@ pdf::Metadata::Metadata(pdf::Document &document)
date_fields.push_back(std::make_pair("ModDate", &this->mod_date));
pdf::OwnedObject info;
- document.getDocInfo(&info);
+ document.get_doc_info(info);
if (!info.isDict())
return;
pdf::Dict *info_dict = info.getDict();
@@ -591,17 +591,27 @@ double pdf::get_path_area(splash::Path &path)
pdf::Object *pdf::dict_lookup(pdf::Object &dict, const char *key, pdf::Object *object)
{
+#if POPPLER_VERSION < 5800
return dict.dictLookup(const_cast<char*>(key), object);
+#else
+ *object = dict.dictLookup(const_cast<char*>(key));
+ return object;
+#endif
}
pdf::Object *pdf::dict_lookup(pdf::Object *dict, const char *key, pdf::Object *object)
{
- return dict->dictLookup(const_cast<char*>(key), object);
+ return pdf::dict_lookup(*dict, key, object);
}
pdf::Object *pdf::dict_lookup(pdf::Dict *dict, const char *key, pdf::Object *object)
{
+#if POPPLER_VERSION < 5800
return dict->lookup(const_cast<char*>(key), object);
+#else
+ *object = dict->lookup(const_cast<char*>(key));
+ return object;
+#endif
}
diff --git a/pdf-backend.hh b/pdf-backend.hh
index 6a430c7..f50269e 100644
--- a/pdf-backend.hh
+++ b/pdf-backend.hh
@@ -274,6 +274,7 @@ namespace pdf
* ====================================
*/
+#if POPPLER_VERSION < 5800
class OwnedObject : public Object
{
public:
@@ -282,6 +283,9 @@ namespace pdf
this->free();
}
};
+#else
+ typedef ::Object OwnedObject;
+#endif
/* class pdf::Environment
@@ -315,6 +319,14 @@ namespace pdf
void display_page(Renderer *renderer, int npage, double hdpi, double vdpi, bool crop, bool do_links);
void get_page_size(int n, bool crop, double &width, double &height);
const std::string get_xmp();
+ void get_doc_info(pdf::OwnedObject &info)
+ {
+#if POPPLER_VERSION < 5800
+ this->getDocInfo(&info);
+#else
+ info = this->getDocInfo();
+#endif
+ }
class LoadError : public std::runtime_error
{
public:
diff --git a/pdf2djvu.cc b/pdf2djvu.cc
index ea3f7b0..9c16be7 100644
--- a/pdf2djvu.cc
+++ b/pdf2djvu.cc
@@ -716,10 +716,13 @@ void pdf_outline_to_djvu_outline(pdf::Object *node, pdf::Catalog *catalog,
}
pdf::dict_lookup(current, "Next", &next);
+#if POPPLER_VERSION < 5800
current.free();
current = next;
+#else
+ current = std::move(next);
+#endif
}
- current.free();
}
static void pdf_outline_to_djvu_outline(pdf::Document &doc, djvu::Outline &djvu_outline,