found 651169 luatex/0.70.1-2 thanks Alle venerdì 9 dicembre 2011, Hilmar Preuße ha scritto: > Upstream has a better patch, which uses the features of 0.17 as long > as 0.17 is available. > > http://foundry.supelec.fr/gf/project/luatex/scmsvn/?action=browse&pat > h=%2Ftrunk%2Fsource%2Ftexk%2Fweb2c%2Fluatexdir%2Flua%2Flepdflib.cc&r1 > =4343&r2=4346&view=patch > > We should use that one.
Indeed, but an important part of r4346 (the change to epdf.h[1], in particular) has been missing, which causes the effects of the libpoppler-0.18 patch to not be used when compiling against poppler 0.18.x. The only drawback of that is that it (ab)uses a poppler frontend (the cpp one) to know the poppler version, so you'll need to build depend on libpoppler-cpp-dev too (only used for few #defines, no linking nor runtime usage of poppler-cpp). Attached there is an improved version of the existing libpoppler-0.18 patch which also includes the file above; it (with the addition of the libpoppler-cpp-dev B-D) allowed me to build luatex with both poppler 0.16.x and poppler 0.18.x. [1] source/texk/web2c/luatexdir/image/epdf.h Thanks, -- Pino Toscano
--- a/source/texk/web2c/luatexdir/lua/lepdflib.cc +++ b/source/texk/web2c/luatexdir/lua/lepdflib.cc @@ -89,7 +89,10 @@ new_poppler_userdata(Annots); new_poppler_userdata(Array); new_poppler_userdata(Catalog); +#if POPPLER_VERSION_MAJOR == 0 && (POPPLER_VERSION_MINOR < 17 || \ + ( POPPLER_VERSION_MINOR == 17 && POPPLER_VERSION_MICRO < 2)) new_poppler_userdata(EmbFile); +#endif new_poppler_userdata(Dict); //new_poppler_userdata(GooString); new_poppler_userdata(LinkDest); @@ -393,7 +396,11 @@ printf("\n===== Annot GC ===== uin=<%p>\n", uin); #endif if (uin->atype == ALLOC_LEPDF) +#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 17 delete(Annot *) uin->d; +#else + ((Annot *) uin->d)->decRefCnt(); +#endif return 0; } @@ -410,6 +417,8 @@ //********************************************************************** // AnnotBorderStyle +#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 17 + m_poppler_get_DOUBLE(AnnotBorderStyle, getWidth); m_poppler__tostring(AnnotBorderStyle); @@ -420,9 +429,9 @@ uin = (udstruct *) luaL_checkudata(L, 1, M_Annots); if (uin->pd != NULL && uin->pd->pc != uin->pc) pdfdoc_changed_error(L); -#ifdef DEBUG +# ifdef DEBUG printf("\n===== Annots GC ===== uin=<%p>\n", uin); -#endif +# endif if (uin->atype == ALLOC_LEPDF) delete(Annots *) uin->d; return 0; @@ -435,6 +444,8 @@ {NULL, NULL} // sentinel }; +#endif + //********************************************************************** // Annots @@ -684,6 +695,8 @@ m_poppler_get_poppler(Catalog, Object, getDests); m_poppler_get_INT(Catalog, numEmbeddedFiles); +#if POPPLER_VERSION_MAJOR == 0 && (POPPLER_VERSION_MINOR < 17 || \ + ( POPPLER_VERSION_MINOR == 17 && POPPLER_VERSION_MICRO < 2)) static int m_Catalog_embeddedFile(lua_State * L) { EmbFile *ef; @@ -707,6 +720,7 @@ lua_pushnil(L); return 1; } +#endif m_poppler_get_INT(Catalog, numJS); @@ -749,7 +763,9 @@ {"findDest", m_Catalog_findDest}, {"getDests", m_Catalog_getDests}, {"numEmbeddedFiles", m_Catalog_numEmbeddedFiles}, +#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 17 {"embeddedFile", m_Catalog_embeddedFile}, +#endif {"numJS", m_Catalog_numJS}, {"getJS", m_Catalog_getJS}, {"getOutline", m_Catalog_getOutline}, @@ -761,6 +777,9 @@ //********************************************************************** // EmbFile +#if POPPLER_VERSION_MAJOR == 0 && (POPPLER_VERSION_MINOR < 17 || \ + ( POPPLER_VERSION_MINOR == 17 && POPPLER_VERSION_MICRO < 2)) + m_poppler_get_GOOSTRING(EmbFile, name); m_poppler_get_GOOSTRING(EmbFile, description); m_poppler_get_INT(EmbFile, size); @@ -801,6 +820,8 @@ {NULL, NULL} // sentinel }; +#endif + //********************************************************************** // Dict @@ -2683,11 +2704,16 @@ { register_meta(Annot); // TODO register_meta(AnnotBorder); +#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 17 register_meta(AnnotBorderStyle); +#endif register_meta(Annots); register_meta(Array); register_meta(Catalog); +#if POPPLER_VERSION_MAJOR == 0 && (POPPLER_VERSION_MINOR < 17 || \ + ( POPPLER_VERSION_MINOR == 17 && POPPLER_VERSION_MICRO < 2)) register_meta(EmbFile); +#endif register_meta(Dict); register_meta(GooString); register_meta(LinkDest); --- a/source/texk/web2c/luatexdir/image/epdf.h +++ b/source/texk/web2c/luatexdir/image/epdf.h @@ -33,6 +33,7 @@ # include <sys/stat.h> # include <dirent.h> # include <poppler-config.h> +# include <cpp/poppler-version.h> # include <goo/GooString.h> # include <goo/gmem.h> # include <goo/gfile.h>
signature.asc
Description: This is a digitally signed message part.