diff -up gambas-3.14.3/gb.pdf/configure.ac.poppler090 gambas-3.14.3/gb.pdf/configure.ac --- gambas-3.14.3/gb.pdf/configure.ac.poppler090 2020-01-17 18:33:39.000000000 -0500 +++ gambas-3.14.3/gb.pdf/configure.ac 2020-07-14 11:17:19.271386755 -0400 @@ -29,6 +29,8 @@ if test "$have_poppler" = "yes"; then AC_DEFINE_UNQUOTED(POPPLER_VERSION_0_76, $((1-$?)), Poppler version >= 0.76) pkg-config --atleast-version=0.83.0 poppler AC_DEFINE_UNQUOTED(POPPLER_VERSION_0_83, $((1-$?)), Poppler version >= 0.83) + pkg-config --atleast-version=0.90.0 poppler + AC_DEFINE_UNQUOTED(POPPLER_VERSION_0_90, $((1-$?)), Poppler version >= 0.90) fi AC_OUTPUT( \ diff -up gambas-3.14.3/gb.pdf/src/CPdfDocument.cpp.poppler090 gambas-3.14.3/gb.pdf/src/CPdfDocument.cpp --- gambas-3.14.3/gb.pdf/src/CPdfDocument.cpp.poppler090 2020-07-14 11:17:19.263386882 -0400 +++ gambas-3.14.3/gb.pdf/src/CPdfDocument.cpp 2020-07-14 12:16:19.518914007 -0400 @@ -104,7 +104,11 @@ END_PROPERTY static void return_unicode_string(const Unicode *unicode, int len) { +#if POPPLER_VERSION_0_90 + const UnicodeMap *uMap = NULL; +#else static UnicodeMap *uMap = NULL; +#endif GooString gstr; char buf[8]; /* 8 is enough for mapping an unicode char to a string */ @@ -112,10 +116,14 @@ static void return_unicode_string(const if (uMap == NULL) { +#if POPPLER_VERSION_0_90 + uMap = globalParams->getUnicodeMap("UTF-8"); +#else GooString *enc = new GooString("UTF-8"); uMap = globalParams->getUnicodeMap(enc); uMap->incRefCnt(); delete enc; +#endif } for (i = 0; i < len; ++i) { @@ -224,15 +232,24 @@ static void aux_return_date_info(void *_ #endif } -static const_LinkDest *get_dest(const_LinkAction *act) +#if POPPLER_VERSION_0_90 +static std::unique_ptr get_dest(const_LinkAction *act) +#else +static LinkDest *get_dest(const_LinkAction *act) +#endif { if (!act) return 0; switch (act->getKind()) { +#if POPPLER_VERSION_0_90 + case actionGoTo: return std::unique_ptr(((LinkGoTo*)act)->getDest()->copy()); + case actionGoToR: return std::unique_ptr(((LinkGoToR*)act)->getDest()->copy()); +#else case actionGoTo: return ((LinkGoTo*)act)->getDest(); case actionGoToR: return ((LinkGoToR*)act)->getDest(); +#endif default: return 0; } } @@ -240,7 +257,11 @@ static const_LinkDest *get_dest(const_Li static uint32_t aux_get_page_from_action(void *_object, const_LinkAction *act) { Ref pref; +#if POPPLER_VERSION_0_90 + static std::unique_ptr dest = get_dest(act); +#else const_LinkDest *dest = get_dest(act); +#endif const_GooString *name; if (!dest) @@ -280,7 +301,11 @@ static uint32_t aux_get_page_from_action static void aux_get_dimensions_from_action(const_LinkAction *act, CPDFRECT *rect) { +#if POPPLER_VERSION_0_90 + std::unique_ptr dest = get_dest(act); +#else const_LinkDest *dest = get_dest(act); +#endif if (!dest) return; @@ -292,7 +317,11 @@ static void aux_get_dimensions_from_acti static double aux_get_zoom_from_action(const_LinkAction *act) { +#if POPPLER_VERSION_0_90 + std::unique_ptr dest = get_dest(act); +#else const_LinkDest *dest = get_dest(act); +#endif if (dest) return dest->getZoom(); else @@ -303,18 +332,27 @@ static char* aux_get_target_from_action( { char *vl=NULL; char *uni=NULL; +#if POPPLER_VERSION_0_90 + std::string tmp; +#else const_GooString *tmp=NULL; +#endif + const_GooString *tmpfn=NULL; switch (act->getKind()) { case actionGoToR: - tmp=((LinkGoToR*)act)->getFileName(); break; + tmpfn=((LinkGoToR*)act)->getFileName(); break; case actionLaunch: - tmp=((LinkLaunch*)act)->getFileName(); break; + tmpfn=((LinkLaunch*)act)->getFileName(); break; case actionURI: +#if POPPLER_VERSION_0_90 + tmp=((LinkURI*)act)->getURI().c_str(); break; +#else tmp=((LinkURI*)act)->getURI(); break; +#endif case actionNamed: tmp=((LinkNamed*)act)->getName(); break; @@ -326,17 +364,24 @@ static char* aux_get_target_from_action( break; } - if (!tmp) return NULL; + if (tmp.empty() && !tmpfn) return NULL; - if (tmp->hasUnicodeMarker()) + if (tmpfn) { - GB.ConvString (&uni,tmp->c_str()+2,tmp->getLength()-2,"UTF-16BE","UTF-8"); - vl = GB.AddString(vl, uni, 0); - } + if (tmpfn->hasUnicodeMarker()) + { + GB.ConvString (&uni,tmpfn->c_str()+2,tmpfn->getLength()-2,"UTF-16BE","UTF-8"); + vl = GB.AddString(vl, uni, 0); + } + else + vl = GB.AddString(vl,tmpfn->c_str(),tmpfn->getLength()); + } else - vl = GB.AddString(vl,tmp->c_str(),tmp->getLength()); - - +#if POPPLER_VERSION_0_90 + vl = GB.AddString(vl,tmp.c_str(),tmp.size()); +#else + vl = GB.AddString(vl,tmp->c_str(),tmp->getLength()); +#endif return vl; } diff -up gambas-3.14.3/gb.pdf/src/CPdfDocument.h.poppler090 gambas-3.14.3/gb.pdf/src/CPdfDocument.h