diff --git a/generators/poppler/CMakeLists.txt b/generators/poppler/CMakeLists.txt --- a/generators/poppler/CMakeLists.txt +++ b/generators/poppler/CMakeLists.txt @@ -41,6 +41,15 @@ } " HAVE_POPPLER_0_53) +check_cxx_source_compiles(" +#include +int main() +{ + Poppler::Document::RenderHint hint = Poppler::Document::HideAnnotations; + return 0; +} +" HAVE_POPPLER_0_60) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config-okular-poppler.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-okular-poppler.h diff --git a/generators/poppler/config-okular-poppler.h.cmake b/generators/poppler/config-okular-poppler.h.cmake --- a/generators/poppler/config-okular-poppler.h.cmake +++ b/generators/poppler/config-okular-poppler.h.cmake @@ -15,3 +15,6 @@ /* Defined if we have the 0.53 version of the Poppler library */ #cmakedefine HAVE_POPPLER_0_53 1 + +/* Defined if we have the 0.60 version of the Poppler library */ +#cmakedefine HAVE_POPPLER_0_60 1 diff --git a/generators/poppler/generator_pdf.cpp b/generators/poppler/generator_pdf.cpp --- a/generators/poppler/generator_pdf.cpp +++ b/generators/poppler/generator_pdf.cpp @@ -85,7 +85,7 @@ layout->addWidget(m_forceRaster); layout->addStretch(1); -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN) && !defined HAVE_POPPLER_0_60 m_printAnnots->setVisible( false ); #endif setPrintAnnots( true ); // Default value @@ -1076,15 +1076,24 @@ } #ifdef Q_OS_WIN - // Windows can only print by rasterization and with annotations, because that is + // Windows can only print by rasterization, because that is // currently the only way Okular implements printing without using UNIX-specific // tools like 'lpr'. forceRasterize = true; +#ifndef HAVE_POPPLER_0_60 + // The Document::HideAnnotations flags was introduced in poppler 0.60 printAnnots = true; #endif +#endif +#ifdef HAVE_POPPLER_0_60 + if ( forceRasterize ) + { + pdfdoc->setRenderHint(Poppler::Document::HideAnnotations, !printAnnots); +#else if ( forceRasterize && printAnnots) { +#endif QPainter painter; painter.begin(&printer);