# 30_libpoppler.dpatch # # use libpoppler instead of libxpdf in pdfetex and xetex # don't build pdftosrc as it needs libpoppler from experimental @DPATCH@ build/source/configure | 6 +- build/source/configure.in | 8 +-- build/source/texk/web2c/pdftexdir/Makefile.in | 2 build/source/texk/web2c/pdftexdir/depend.mk | 58 +---------------------- build/source/texk/web2c/pdftexdir/pdftex.mk | 9 ++- build/source/texk/web2c/pdftexdir/pdftexextra.in | 2 build/source/texk/web2c/pdftexdir/pdftoepdf.cc | 54 ++++++++++----------- build/source/texk/web2c/pdftexdir/pdftosrc.cc | 40 ++++++++------- build/source/texk/web2c/pdftexdir/utils.c | 4 - build/source/texk/web2c/xetexdir/XeTeX_ext.c | 4 - build/source/texk/web2c/xetexdir/pdfimage.cpp | 24 +++++++-- build/source/texk/web2c/xetexdir/xetex.mk | 8 ++- 12 files changed, 96 insertions(+), 123 deletions(-) Index: texlive-bin-2007/build/source/texk/web2c/pdftexdir/depend.mk =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/pdftexdir/depend.mk 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/pdftexdir/depend.mk 2007-07-03 12:08:40.000000000 +0200 @@ -1,55 +1,5 @@ -epdf.o: epdf.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ - ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h -mapfile.o: mapfile.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ - ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h -papersiz.o: papersiz.c ptexlib.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h -utils.o: utils.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ - ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h \ - ../../../libs/zlib/zlib.h ../../../libs/zlib/zconf.h \ - ../../../libs/md5/md5.h pdftexextra.h \ - ../../../libs/obsdcompat/openbsd-compat.h -vfpacket.o: vfpacket.c ptexlib.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h -pkin.o: pkin.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ - ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h -writefont.o: writefont.c ../../../libs/xpdf/goo/gmem.h ptexlib.h \ - ../pdftexd.h ../texmfmp.h ../cpascal.h ../config.h ../help.h \ - ../texmfmem.h ../pdftexcoerce.h ptexmac.h -writet1.o: writet1.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ - ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h -writet3.o: writet3.c ptexlib.h ../pdftexd.h ../texmfmp.h ../cpascal.h \ - ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h ptexmac.h -writezip.o: writezip.c ptexlib.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h ../../../libs/zlib/zlib.h ../../../libs/zlib/zconf.h -writeenc.o: writeenc.c ptexlib.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h -writettf.o: writettf.c ptexlib.h writettf.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h macnames.c -writejpg.o: writejpg.c ptexlib.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h image.h -writepng.o: writepng.c ptexlib.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h image.h -writeimg.o: writeimg.c ptexlib.h ../pdftexd.h ../texmfmp.h \ - ../cpascal.h ../config.h ../help.h ../texmfmem.h ../pdftexcoerce.h \ - ptexmac.h image.h -pdftoepdf.o: pdftoepdf.cc ../../../libs/xpdf/xpdf/Object.h \ - ../../../libs/xpdf/goo/gmem.h ../../../libs/xpdf/xpdf/Array.h \ - ../../../libs/xpdf/xpdf/Dict.h ../../../libs/xpdf/xpdf/Stream.h \ - ../../../libs/xpdf/xpdf/XRef.h ../../../libs/xpdf/xpdf/Catalog.h \ - ../../../libs/xpdf/xpdf/Page.h ../../../libs/xpdf/xpdf/GfxFont.h \ - ../../../libs/xpdf/xpdf/Error.h epdf.h +pdftoepdf.o: pdftoepdf.cc epdf.h ../../kpathsea/c-auto.h \ + ../../kpathsea/c-proto.h ../../web2c/c-auto.h ../../web2c/config.h \ + ../../kpathsea/c-fopen.h ../../web2c/pdftexdir/ptexmac.h ttf2afm.o: ttf2afm.c writettf.h macnames.c -pdftosrc.o: pdftosrc.cc ../../../libs/xpdf/xpdf/Object.h \ - ../../../libs/xpdf/xpdf/Array.h ../../../libs/xpdf/xpdf/Dict.h \ - ../../../libs/xpdf/xpdf/Stream.h ../../../libs/xpdf/xpdf/XRef.h \ - ../../../libs/xpdf/xpdf/Catalog.h ../../../libs/xpdf/xpdf/Page.h \ - ../../../libs/xpdf/xpdf/PDFDoc.h ../../../libs/xpdf/xpdf/Link.h \ - ../../../libs/xpdf/xpdf/Error.h ../../../libs/xpdf/xpdf/config.h +pdftosrc.o: pdftosrc.cc Index: texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftoepdf.cc =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/pdftexdir/pdftoepdf.cc 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftoepdf.cc 2007-07-03 12:08:40.000000000 +0200 @@ -26,25 +26,24 @@ #include #include #include -#include -#include -#include -#include -#include #include -#include "Object.h" -#include "Stream.h" -#include "Array.h" -#include "Dict.h" -#include "XRef.h" -#include "Catalog.h" -#include "Link.h" -#include "Page.h" -#include "GfxFont.h" -#include "PDFDoc.h" -#include "GlobalParams.h" -#include "Error.h" - +#include +#include +#include +#include +#include +#include "poppler/Object.h" +#include "poppler/Stream.h" +#include "poppler/Array.h" +#include "poppler/Dict.h" +#include "poppler/XRef.h" +#include "poppler/Link.h" +#include "poppler/Catalog.h" +#include "poppler/Page.h" +#include "poppler/GfxFont.h" +#include "poppler/PDFDoc.h" +#include "poppler/GlobalParams.h" +#include "poppler/Error.h" #include "epdf.h" // This file is mostly C and not very much C++; it's just used to interface @@ -169,7 +168,7 @@ fprintf(stderr, "\npdfTeX Debug: Creating %s (%d)\n", p->file_name, p->occurences); #endif - GString *docName = new GString(p->file_name); + GooString *docName = new GooString(p->file_name); p->doc = new PDFDoc(docName); // takes ownership of docName if (!p->doc->isOk() || !p->doc->okToPrint()) { pdftex_fail("xpdf: reading PDF image failed"); @@ -511,7 +510,7 @@ int i, l, c; Ref ref; char *p; - GString *s; + GooString *s; if (obj->isBool()) { pdf_printf("%s", obj->getBool()? "true" : "false"); } else if (obj->isInt()) { @@ -703,7 +702,7 @@ epdf_num_pages = pdf_doc->doc->getCatalog()->getNumPages(); if (page_name) { // get page by name - GString name(page_name); + GooString name(page_name); LinkDest *link = pdf_doc->doc->findDest(&name); if (link == 0 || !link->isOk()) pdftex_fail("PDF inclusion: invalid destination <%s>", page_name); Index: texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftosrc.cc =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/pdftexdir/pdftosrc.cc 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftosrc.cc 2007-07-03 12:08:58.000000000 +0200 @@ -25,22 +25,23 @@ #include #include #include -#include #include -#include -#include -#include -#include "Object.h" -#include "Stream.h" -#include "Array.h" -#include "Dict.h" -#include "XRef.h" -#include "Catalog.h" -#include "Page.h" -#include "GfxFont.h" -#include "PDFDoc.h" -#include "GlobalParams.h" -#include "Error.h" + +#include +#include +#include +#include +#include "poppler/Object.h" +#include "poppler/Stream.h" +#include "poppler/Array.h" +#include "poppler/Dict.h" +#include "poppler/XRef.h" +#include "poppler/Catalog.h" +#include "poppler/Page.h" +#include "poppler/GfxFont.h" +#include "poppler/PDFDoc.h" +#include "poppler/GlobalParams.h" +#include "poppler/Error.h" static XRef *xref = 0; @@ -48,7 +49,7 @@ { char *p, buf[1024]; PDFDoc *doc; - GString *fileName; + GooString *fileName; Stream *s; Object srcStream, srcName, catalogDict; FILE *outfile; @@ -62,8 +63,8 @@ "Usage: pdftosrc []\n"); exit(1); } - fileName = new GString(argv[1]); - globalParams = new GlobalParams(); + fileName = new GooString(argv[1]); + globalParams = new GlobalParams(NULL); doc = new PDFDoc(fileName); if (!doc->isOk()) { fprintf(stderr, "Invalid PDF file\n"); @@ -83,7 +84,7 @@ } srcStream.initNull(); if (objnum == 0) { - catalogDict.dictLookup("SourceObject", &srcStream); + catalogDict.dictLookup(UGooString("SourceObject"), &srcStream); if (!srcStream.isStream("SourceFile")) { fprintf(stderr, "No SourceObject found\n"); exit(1); Index: texlive-bin-2007/build/source/texk/web2c/pdftexdir/Makefile.in =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/pdftexdir/Makefile.in 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/pdftexdir/Makefile.in 2007-07-03 12:08:40.000000000 +0200 @@ -8,7 +8,7 @@ kpathsea_srcdir_parent = $(srcdir)/../.. kpathsea_dir_parent = ../.. -ALL_CXXFLAGS = @CXXFLAGS@ @DEFS@ $(XXCFLAGS) -I. -I$(srcdir) -I$(kpathsea_dir_parent) -I$(kpathsea_srcdir_parent) @LIBXPDFCPPFLAGS@ -I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. -I$(LIBOBSDCOMPATFSRCDIR) -I$(LIBOBSDCOMPATFSRCDIR)/.. +ALL_CXXFLAGS = @CXXFLAGS@ @DEFS@ $(XXCFLAGS) -I. -I$(srcdir) -I$(kpathsea_dir_parent) -I$(kpathsea_srcdir_parent) -I/usr/include/poppler -I$(LIBOBSDCOMPATDIR) -I$(LIBOBSDCOMPATDIR)/.. -I$(LIBOBSDCOMPATFSRCDIR) -I$(LIBOBSDCOMPATFSRCDIR)/.. CXX = @CXX@ .SUFFIXES: .cc .o Index: texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftex.mk =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/pdftexdir/pdftex.mk 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftex.mk 2007-07-03 12:08:40.000000000 +0200 @@ -2,6 +2,9 @@ # This fragment contains the parts of the makefile that are most likely to # differ between releases of pdfeTeX. +# use libpoppler instead of included xpdf code +ADDLDFLAGS = -lpoppler + # We build pdftex pdftex = @PETEX@ pdftex pdftexdir = pdftexdir @@ -29,7 +32,7 @@ # Making pdftex pdftex: pdftexd.h $(pdftex_o) $(pdftexextra_o) $(pdftexlibsdep) - @CXXHACKLINK@ $(pdftex_o) $(pdftexextra_o) $(pdftexlibs) $(socketlibs) @CXXHACKLDLIBS@ @CXXLDEXTRA@ + @CXXHACKLINK@ $(pdftex_o) $(pdftexextra_o) $(pdftexlibs) $(socketlibs) @CXXHACKLDLIBS@ @CXXLDEXTRA@ $(ADDLDFLAGS) # C file dependencies. $(pdftex_c) pdftexcoerce.h pdftexd.h: pdftex.p $(web2c_texmf) $(srcdir)/$(pdftexdir)/pdftex.defines $(srcdir)/$(pdftexdir)/pdftex.h @@ -153,10 +156,10 @@ rm -f ttf2afm.c macnames.c # # pdftosrc -pdftosrc = pdftosrc +pdftosrc = pdftosrc: $(pdftexdir)/pdftosrc.o $(LIBXPDFDEP) - @CXXHACKLINK@ $(pdftexdir)/pdftosrc.o $(LDLIBXPDF) -lm @CXXLDEXTRA@ + @CXXHACKLINK@ $(pdftexdir)/pdftosrc.o $(LDLIBXPDF) -lm @CXXLDEXTRA@ $(ADDLDFLAGS) $(pdftexdir)/pdftosrc.o:$(srcdir)/$(pdftexdir)/pdftosrc.cc cd $(pdftexdir) && $(MAKE) pdftosrc.o check: pdftosrc-check Index: texlive-bin-2007/build/source/configure =================================================================== --- texlive-bin-2007.orig/build/source/configure 2007-07-03 12:08:40.000000000 +0200 +++ texlive-bin-2007/build/source/configure 2007-07-03 12:08:40.000000000 +0200 @@ -3459,9 +3459,9 @@ # we need libxpdf for pdf[ex]tex, xetex test ! -d $srcdir/$LIBXPDFDIR && : ${needs_libxpdf=no} -test "$with_pdftex" != no && : ${needs_libxpdf=yes} -test "$with_pdfetex" != no && : ${needs_libxpdf=yes} -test "$with_xetex" != no && : ${needs_libxpdf=yes} +test "$with_pdftex" != no && : ${needs_libxpdf=no} +test "$with_pdfetex" != no && : ${needs_libxpdf=no} +test "$with_xetex" != no && : ${needs_libxpdf=no} : ${needs_libxpdf=no} export needs_libxpdf Index: texlive-bin-2007/build/source/configure.in =================================================================== --- texlive-bin-2007.orig/build/source/configure.in 2007-07-03 12:08:40.000000000 +0200 +++ texlive-bin-2007/build/source/configure.in 2007-07-03 12:08:40.000000000 +0200 @@ -157,9 +157,9 @@ # we need libxpdf for pdf[ex]tex, xetex test ! -d $srcdir/$LIBXPDFDIR && : ${needs_libxpdf=no} -test "$with_pdftex" != no && : ${needs_libxpdf=yes} -test "$with_pdfetex" != no && : ${needs_libxpdf=yes} -test "$with_xetex" != no && : ${needs_libxpdf=yes} +test "$with_pdftex" != no && : ${needs_libxpdf=no} +test "$with_pdfetex" != no && : ${needs_libxpdf=no} +test "$with_xetex" != no && : ${needs_libxpdf=no} : ${needs_libxpdf=no} export needs_libxpdf @@ -207,7 +207,7 @@ sinclude(libs/libpng/libpng.ac) sinclude(libs/zlib/zlib.ac) sinclude(libs/ncurses/ncurses.ac) -sinclude(libs/xpdf/libxpdf.ac) +#sinclude(libs/xpdf/libxpdf.ac) sinclude(libs/t1lib/t1lib.ac) sinclude(libs/gd/gd.ac) sinclude(libs/freetype/freetype.ac) Index: texlive-bin-2007/build/source/texk/web2c/xetexdir/XeTeX_ext.c =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/xetexdir/XeTeX_ext.c 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/xetexdir/XeTeX_ext.c 2007-07-03 12:08:40.000000000 +0200 @@ -33,7 +33,7 @@ */ #ifdef XETEX_OTHER -#include "xpdf/config.h" +#include "poppler/poppler-config.h" #include "png.h" #endif @@ -194,7 +194,7 @@ #else "Compiled with fontconfig version %d.%d.%d; using %d.%d.%d\n" "Compiled with libpng version %s; using %s\n" - "Compiled with xpdf version %s\n" + "Compiled with libpoppler version %s\n" #endif ; Index: texlive-bin-2007/build/source/texk/web2c/xetexdir/pdfimage.cpp =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/xetexdir/pdfimage.cpp 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/xetexdir/pdfimage.cpp 2007-07-03 12:08:40.000000000 +0200 @@ -11,10 +11,24 @@ #include "pdfimage.h" -#include "PDFDoc.h" -#include "Catalog.h" -#include "Page.h" -#include "GString.h" +#include +#include +#include +#include +#include +#include "poppler/Object.h" +#include "poppler/Stream.h" +#include "poppler/Array.h" +#include "poppler/Dict.h" +#include "poppler/XRef.h" +#include "poppler/Link.h" +#include "poppler/Catalog.h" +#include "poppler/Page.h" +#include "poppler/GfxFont.h" +#include "poppler/PDFDoc.h" +#include "poppler/GlobalParams.h" +#include "poppler/Error.h" + #include "XeTeX_ext.h" @@ -28,7 +42,7 @@ int pdf_get_rect(char* filename, int page_num, int pdf_box, realrect* box) { - GString* name = new GString(filename); + GooString* name = new GooString(filename); PDFDoc* doc = new PDFDoc(name); if (!doc) { Index: texlive-bin-2007/build/source/texk/web2c/xetexdir/xetex.mk =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/xetexdir/xetex.mk 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/xetexdir/xetex.mk 2007-07-03 12:08:40.000000000 +0200 @@ -4,6 +4,10 @@ Makefile: $(srcdir)/xetexdir/xetex.mk +# use libpoppler instead of included xpdf code +ADDLDFLAGS = -lpoppler + + # We build xetex unless configure decides to skip it xetex = @XETEX@ xetex @@ -29,7 +33,7 @@ @XETEX_GENERIC@ XETEX_DEFINES = -DXETEX_OTHER -@XETEX_GENERIC@ EXTRALIBS = @LDLIBXPDF@ @LDLIBPNG@ @LDFONTCONFIG@ +@XETEX_GENERIC@ EXTRALIBS = @LDLIBXPDF@ @LDLIBPNG@ @LDFONTCONFIG@ $(ADDLDFLAGS) @XETEX_GENERIC@ EXTRADEPS = @LIBXPDFDEP@ @LIBPNGDEP@ @@ -144,7 +148,7 @@ $(compile) $(ALL_CFLAGS) $(LIBPNGCPPFLAGS) $(ZLIBCPPFLAGS) -c $< -o $@ pdfimage.o: $(srcdir)/xetexdir/pdfimage.cpp $(srcdir)/xetexdir/pdfimage.h - $(CXX) $(ALL_CFLAGS) $(LIBXPDFCPPFLAGS) -c $< -o $@ + $(CXX) $(ALL_CFLAGS) $(LIBXPDFCPPFLAGS) -I/usr/include/poppler -c $< -o $@ XeTeX_pic.o: $(srcdir)/xetexdir/XeTeX_pic.c $(srcdir)/xetexdir/XeTeX_ext.h $(XeTeXImageHdrs) $(compile) $(TECKITFLAGS) $(ALL_CFLAGS) $(XETEX_DEFINES) -c $< -o $@ Index: texlive-bin-2007/build/source/texk/web2c/pdftexdir/utils.c =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/pdftexdir/utils.c 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/pdftexdir/utils.c 2007-07-03 12:08:40.000000000 +0200 @@ -37,7 +37,7 @@ #include "zlib.h" #include "ptexlib.h" #include "png.h" -#include "xpdf/config.h" /* just to get the xpdf version */ +#include "poppler/poppler-config.h" /* just to get the xpdf version */ #define check_nprintf(size_get, size_want) \ if ((unsigned)(size_get) >= (unsigned)(size_want)) \ @@ -1261,7 +1261,7 @@ (void) asprintf(versions, "Compiled with libpng %s; using libpng %s\n" "Compiled with zlib %s; using zlib %s\n" - "Compiled with xpdf version %s\n", + "Compiled with libpoppler version %s\n", PNG_LIBPNG_VER_STRING, png_libpng_ver, ZLIB_VERSION, zlib_version, xpdfVersion); } Index: texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftexextra.in =================================================================== --- texlive-bin-2007.orig/build/source/texk/web2c/pdftexdir/pdftexextra.in 2007-07-03 12:03:20.000000000 +0200 +++ texlive-bin-2007/build/source/texk/web2c/pdftexdir/pdftexextra.in 2007-07-03 12:08:40.000000000 +0200 @@ -26,7 +26,7 @@ (generated from ../lib/texmfmp.c). */ -#define BANNER "This is pdfTeX, Version 3.141592-PDFTEX-VERSION-ETEX-VERSION" +#define BANNER "This is pdfTeX using libpoppler, Version 3.141592-PDFTEX-VERSION-ETEX-VERSION" #define COPYRIGHT_HOLDER "Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX)" #define AUTHOR NULL #define PROGRAM_HELP PDFTEXHELP