Index: PDFDocument.m =================================================================== --- PDFDocument.m (revision 3309) +++ PDFDocument.m (working copy) @@ -1,6 +1,6 @@ /* * Copyright (C) 2003 Stefan Kleine Stegemann - * (C) 2013 The GNUstep Application Team + * (C) 2013-2016 The GNUstep Application Team * * Authors: Stefan Kleine Stegemann * Riccardo Mottola @@ -287,6 +287,7 @@ [aText cString], pageNum, maxPage, + 0, &xMin, &yMin, &xMax, Index: configure =================================================================== --- configure (revision 3309) +++ configure (working copy) @@ -3102,7 +3102,7 @@ -ac_config_files="$ac_config_files GNUmakefile xpdf/GNUmakefile xpdf/bridge/GNUmakefile xpdf/xpdf-3.02/GNUmakefile" +ac_config_files="$ac_config_files GNUmakefile xpdf/GNUmakefile xpdf/bridge/GNUmakefile xpdf/xpdf-3.04/GNUmakefile" cat >confcache <<\_ACEOF Index: configure.ac =================================================================== --- configure.ac (revision 3309) +++ configure.ac (working copy) @@ -107,7 +107,7 @@ AC_SUBST(lib_freetype_includes) AC_SUBST(lib_freetype_add_includes) -AC_CONFIG_FILES([GNUmakefile xpdf/GNUmakefile xpdf/bridge/GNUmakefile xpdf/xpdf-3.02/GNUmakefile]) +AC_CONFIG_FILES([GNUmakefile xpdf/GNUmakefile xpdf/bridge/GNUmakefile xpdf/xpdf-3.04/GNUmakefile]) AC_OUTPUT Index: xpdf/bridge/XPDFBridge.cc =================================================================== --- xpdf/bridge/XPDFBridge.cc (revision 3309) +++ xpdf/bridge/XPDFBridge.cc (working copy) @@ -1,6 +1,6 @@ /* * Copyright (C) 2003 Stefan Kleine Stegemann - * 2012-2013 GNUstep Aplication Project + * 2012-2016 GNUstep Application Project * * Authors: Stefan Kleine Stegemann * Riccardo Mottola @@ -162,6 +162,7 @@ SearchContext* PDFSearch_CreateSearchContext(XPDFObject pdfDoc) { + TextOutputControl *toControl; SearchContext* theContext = (SearchContext*)calloc(1, sizeof(SearchContext)); if (!theContext) { @@ -170,9 +171,11 @@ return NULL; } + toControl = new TextOutputControl(); + toControl->mode = textOutPhysLayout; theContext->pdfDoc = pdfDoc; theContext->currentPage = -1; - theContext->textOutputDevice = new TextOutputDev(NULL, gTrue, gFalse, gFalse); + theContext->textOutputDevice = new TextOutputDev(NULL, toControl, gFalse); if (!static_cast(theContext->textOutputDevice)->isOk()) { @@ -181,7 +184,7 @@ PDFSearch_DestroySearchContext(theContext); return NULL; } - + delete toControl; return theContext; } @@ -206,6 +209,7 @@ const char* text, int* pageA, int toPage, + short wholeWord, double *xMin, double* yMin, double* xMax, @@ -226,7 +230,12 @@ int found = 0; int startPage = *pageA; GBool top; + GBool wholeWordBool; + wholeWordBool = gFalse; + if (wholeWord) + wholeWordBool = gTrue; + TextOutputDev* textOut = static_cast(aSearchContext->textOutputDevice); if (!textOut->isOk()) { @@ -271,12 +280,12 @@ if (page == startPage) { found = - textOut->findText(u, len, top, gTrue, gFalse, gFalse, gFalse, gFalse, xMin, yMin, xMax, yMax); + textOut->findText(u, len, top, gTrue, gFalse, gFalse, gFalse, gFalse, wholeWordBool, xMin, yMin, xMax, yMax); } else { found = - textOut->findText(u, len, gTrue, gTrue, gFalse, gFalse, gFalse, gFalse, xMin, yMin, xMax, yMax); + textOut->findText(u, len, gTrue, gTrue, gFalse, gFalse, gFalse, gFalse, wholeWordBool, xMin, yMin, xMax, yMax); } if (found) @@ -301,12 +310,12 @@ if (page == startPage) { found = - textOut->findText(u, len, gTrue, gTrue, gFalse, gFalse, gFalse, gFalse, xMin, yMin, xMax, yMax); + textOut->findText(u, len, gTrue, gTrue, gFalse, gFalse, gFalse, gFalse, wholeWordBool, xMin, yMin, xMax, yMax); } else { found = - textOut->findText(u, len, gTrue, gFalse, gFalse, gFalse, gFalse, gFalse, xMin, yMin, xMax, yMax); + textOut->findText(u, len, gTrue, gFalse, gFalse, gFalse, gFalse, gFalse, wholeWordBool, xMin, yMin, xMax, yMax); } if (found) @@ -377,11 +386,15 @@ { PDFDoc *doc = TO_PDFDoc(pdfDoc); TextOutputDev *textOut; + TextOutputControl *toControl; int got = 1; + + toControl = new TextOutputControl(); + toControl->mode = textOutPhysLayout; XPDF_AcquireLock(); - textOut = new TextOutputDev((TextOutputFunc)func, (void *)1, gFalse, gFalse); + textOut = new TextOutputDev((TextOutputFunc)func, (void *)1, toControl); if (textOut->isOk()) { doc->displayPages(textOut, 1, doc->getNumPages(), 72, 72, 0, @@ -390,7 +403,8 @@ got = 0; } - delete textOut; + delete textOut; + delete toControl; XPDF_ReleaseLock(); return got; @@ -405,11 +419,14 @@ char** textA, int* length) { + TextOutputControl *toControl; XPDF_AcquireLock(); PDFDoc* doc = TO_PDFDoc(pdfDoc); + toControl = new TextOutputControl(); + toControl->mode = textOutPhysLayout; - TextOutputDev* textOut = new TextOutputDev(NULL, gTrue, gFalse, gFalse); + TextOutputDev* textOut = new TextOutputDev(NULL, toControl, gFalse); if (!textOut->isOk()) { delete textOut; @@ -436,6 +453,7 @@ } delete textOut; + delete toControl; XPDF_ReleaseLock(); } @@ -616,6 +634,7 @@ const char* fontFile, DisplayFontType type) { + /* FIXME how to replace this ? DisplayFontParam* dfp; dfp = new DisplayFontParam(new GString(fontName), @@ -641,6 +660,7 @@ } globalParams->addDisplayFont(dfp); + */ } @@ -648,6 +668,7 @@ const char** fontFile, DisplayFontType* type) { + /* FIXME how to replace this ? DisplayFontParam* dfp; *fontFile = NULL; @@ -671,6 +692,7 @@ } } } + */ } @@ -775,7 +797,7 @@ #define TO_PSOutputDev(object) (static_cast(object)) -void OutputPS(void* stream, char* data, int len) +void OutputPS(void* stream, const char* data, int len) { char* buffer = (char*)malloc((len + 1) * sizeof(char)); memcpy(buffer, data, len); @@ -791,8 +813,7 @@ { PSOutputDev* psDev = new PSOutputDev(OutputPS, NULL, - TO_PDFDoc(pdfDoc)->getXRef(), - TO_PDFDoc(pdfDoc)->getCatalog(), + TO_PDFDoc(pdfDoc), firstPage, lastPage, psModePS); Index: xpdf/bridge/XPDFBridge.h =================================================================== --- xpdf/bridge/XPDFBridge.h (revision 3309) +++ xpdf/bridge/XPDFBridge.h (working copy) @@ -1,6 +1,10 @@ /* * Copyright (C) 2003 Stefan Kleine Stegemann + * 2016 GNUstep Application Project * + * Authors: Stefan Kleine Stegemann + * Riccardo Mottola + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 @@ -128,6 +132,7 @@ const char* text, int* pageA, int toPage, + short wholeWord, double *xMin, double* yMin, double* xMax, Index: xpdf-src =================================================================== --- xpdf-src (revision 3309) +++ xpdf-src (working copy) @@ -1,2 +1,2 @@ # which xpdf sources should be used? -XPDF_SRC=xpdf-3.02 +XPDF_SRC=xpdf-3.04