diff --git a/generators/poppler/CMakeLists.txt b/generators/poppler/CMakeLists.txt index 7afd22671..f59580e46 100644 --- a/generators/poppler/CMakeLists.txt +++ b/generators/poppler/CMakeLists.txt @@ -1,4 +1,19 @@ +# check for Poppler::PSConverter::setOutputDevice() +set(CMAKE_REQUIRED_INCLUDES ${POPPLER_INCLUDE_DIR} ${QT_INCLUDE_DIR}) +set(CMAKE_REQUIRED_LIBRARIES ${POPPLER_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY}) +check_cxx_source_compiles(" +#include +int main() +{ + Poppler::Document * doc = Poppler::Document::load(\"foo\"); + Poppler::PSConverter * psconv = doc->psConverter(); + psconv->setOutputDevice( 0 ); + return 0; +} +" POPPLER_HAVE_PSCONVERTER_SETOUTPUTDEVICE) +macro_bool_to_01(POPPLER_HAVE_PSCONVERTER_SETOUTPUTDEVICE _POPPLER_HAVE_PSCONVERTER_SETOUTPUTDEVICE) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config-okular-poppler.h.cmake diff --git a/generators/poppler/config-okular-poppler.h.cmake b/generators/poppler/config-okular-poppler.h.cmake index d38180a44..b526da9ed 100644 --- a/generators/poppler/config-okular-poppler.h.cmake +++ b/generators/poppler/config-okular-poppler.h.cmake @@ -1,2 +1,5 @@ /* Defined if we have the 0.6 version of the Poppler library */ #cmakedefine HAVE_POPPLER_0_6 1 + +/* Defined if Poppler::PSConverter has setOutputDevice */ +#define POPPLER_HAVE_PSCONVERTER_SETOUTPUTDEVICE ${_POPPLER_HAVE_PSCONVERTER_SETOUTPUTDEVICE} diff --git a/generators/poppler/generator_pdf.cpp b/generators/poppler/generator_pdf.cpp index 9331ef534..e2886cfea 100644 --- a/generators/poppler/generator_pdf.cpp +++ b/generators/poppler/generator_pdf.cpp @@ -875,7 +875,9 @@ bool PDFGenerator::print( KPrinter& printer ) if ( !tf.open() ) return false; QString tempfilename = tf.fileName(); +#if !POPPLER_HAVE_PSCONVERTER_SETOUTPUTDEVICE tf.close(); +#endif QList pageList; if (!printer.previewOnly()) pageList = printer.pageList(); @@ -903,7 +905,11 @@ bool PDFGenerator::print( KPrinter& printer ) } bool forceRasterize = printer.option("kde-okular-poppler-forceRaster").toInt(); Poppler::PSConverter *psConverter = pdfdoc->psConverter(); +#if POPPLER_HAVE_PSCONVERTER_SETOUTPUTDEVICE + psConverter->setOutputDevice(&tf); +#else psConverter->setOutputFileName(tempfilename); +#endif psConverter->setPageList(pageList); psConverter->setPaperWidth(width); psConverter->setPaperHeight(height);