Poppler — библиотека для работы с PDF файлами для Linux, Windows, Mac.
Готовая к употреблению сборка здесь: http://sourceforge.net/projects/poppler-win32/
HOW-TO по компиляции.
Для начала, скачаем всё необходимое
Распаковываем архивы.
Для удобства, основной путь у меня такой: C:\Qt\Projects\poppler и в дальнейшем я отталкиваюсь именно от этой папки.
Архивы распаковываем в папку tools, каждый в отдельную папочку.
Так же для компиляции нам понадобится CMake, MinGW устанавливать «по умолчанию»
MinGW можно использовать тот, что идёт вместе с QT либо ту же версию, что и при ручной сборке QT.
Так же потребуются исходники QT (Отмечать галку при установке)
Возьмём с Гита сам poppler:
Открываем консольку и переходим в директорию для загрузки.
[cce lang=»bash»] cd C:\Qt\Projects\popplergit clone git://anongit.freedesktop.org/poppler/poppler
[/cce]
Ждём окончания загрузки.
Добавим необходимые пути в PATH
[cce lang=»bash»] set PATH=C:\MinGw\bin\;%PATH%set PATH=C:\Qt\Qt5.1.0\qt5\qtbase\bin;%PATH%
[/cce]
Cкомпилируем сначала OpenJpeg Если Вы качали по ссылке выше, то в архиве уже скомпилированная версия.
cmake -G «MinGW Makefiles» C:\Qt\Projects\poppler\tools\openjpeg
mingw32-make
[/cce]
Дальше создадим файлик c переменными, чтобы cmake знал где искать библиотеки.
Файл c:\Qt\projects\poppler\init.txt
[cce lang=»bash»]##############################################################################
SET(FREETYPE_LIBRARY «C:\Qt\Projects\poppler\tools\freetype\lib\freetype.lib» CACHE PATH «» FORCE)
SET(FREETYPE_INCLUDE_DIR_ft2build «C:\Qt\Projects\poppler\tools\freetype\include» CACHE PATH «» FORCE)
SET(FREETYPE_INCLUDE_DIR_freetype2 «C:\Qt\Projects\poppler\tools\freetype\include\freetype2» CACHE PATH «» FORCE)
SET(FREETYPE_INCLUDE_DIRS «C:\Qt\Projects\poppler\tools\freetype\include» CACHE PATH «» FORCE)
SET(CAIRO_INCLUDE_DIRS «C:\Qt\Projects\poppler\tools\cairo\include\cairo» CACHE PATH «» FORCE)
SET(CAIRO_LIBRARIES «C:\Qt\Projects\poppler\tools\cairo\lib\cairo.lib» CACHE PATH «» FORCE)
SET(LIBOPENJPEG_INCLUDE_DIR «C:\Qt\Projects\poppler\tools\openjpeg\include\openjpeg-1.5» CACHE PATH «» FORCE)
SET(LIBOPENJPEG_LIBRARIES «C:\Qt\Projects\poppler\tools\openjpeg\lib\openjpeg.lib» CACHE PATH «» FORCE)
SET(ZLIB_INCLUDE_DIR «C:\Qt\Projects\poppler\tools\zlib\include» CACHE PATH «» FORCE)
SET(ZLIB_LIBRARY «C:\Qt\Projects\poppler\tools\zlib\lib\zdll.lib» CACHE PATH «» FORCE)
SET(WITH_Iconv OFF CACHE BOOl «» FORCE)
SET(WITH_PNG OFF CACHE BOOl «» FORCE)
SET(WITH_GLIB OFF CACHE BOOl «» FORCE)
Ну и скомпилируем сам Poppler
[cce lang=»bash»] cd C:\Qt\Projects\poppler\poppler\cmake -C «C:\Qt\Projects\poppler\init.txt» -G «MinGW Makefiles» c:\Qt\projects\poppler\poppler
mingw32-make
[/cce]
Должно всё пройти нормально…
Подключение:
В файле .pro проекта прописать
[cce lang=»c++»] INCLUDEPATH += C:/Qt/Projects/poppler/poppler/qt5/src/>LIBS += -LC:/Qt/Projects/poppler/poppler/qt5/src/ -llibpoppler-qt5
[/cce] Ну и в коде не забыть [cce lang=»c++»] #include <poppler-qt5.h>
[/cce]
Кстати, библиотеку libpoppler.dll и libpoppler-qt5.dll надо кинуть к экзешнику проги.
Примеры будут позже отдельным топиком.
Может ругаться на файл gfile.cc, строку 603 и еще парочку (LARGE_INTEGER), надо просто обернуть значение в {фигурные скобки}
Так же ругнётся на «Нет декларации GetFileSizeEx«, в верху файла, после комментов вписать:
#define _WIN32_WINNT 0x0501
#include <windows.h>
Не может найти fontconfig.h ?
Качаем Fontconfig открываем архив и копируем папку include/fontconfig в C:\Qt\Projects\poppler\tools\cairo\include\cairo\
Будет ругаться «нет декларации в этой области видимости <sleep>» заменить на MyThread::msleep и выше функции прописать struct MyThread : public QThread { using QThread::msleep;};
24 отзывов
Khusrav
Сен 28, 2017
Evgeniy
Янв 9, 2015
Pavelk
Янв 11, 2015
Доброго.
К сожалению, тестового не осталось.
А что именно не получается? Я так понимаю Вы подключаете в Visual Studio ?
Evgeniy
Янв 11, 2015
Evgeniy
Янв 11, 2015
Pavelk
Янв 12, 2015
Поэтому и спрашивал =) Да, дело в разных компиляторах.
Evgeniy
Янв 12, 2015
Evgeniy
Янв 13, 2015
Feel
Окт 27, 2014
Денис
Июл 28, 2014
Pavelk
Авг 16, 2014
'_imp_ZN7Poppler8Document4loadERK7QStringRK10QByteArrayS6
Вы скоре всего не подключили саму библиотеку.
Попробуйте в LIBS += прямо указать на файл, напрмере LIBS += C:/libs/popler.dll
Естественно замените путь и имя библиотеки на своё.
Денис
Июл 28, 2014
Денис
Июл 27, 2014
Pavelk
Июл 28, 2014
Впринципе да.
Денис
Июл 27, 2014
Pavelk
Июл 28, 2014
Это значит Вы при установке QT не отметили установку исходников. Придётся переставлять. Там в процессе увидите.
Ivan
Ноя 30, 2013
Pavelk
Дек 3, 2013
Неа.
Diiimka
Окт 16, 2013
Pavelk
Окт 16, 2013
Спасибо.
Anonymous
Сен 30, 2013
Pavelk
Окт 1, 2013
Да, нормально. Только что создал тестовый проект, всё нормально.
Возможно, ошиблись в путях?
Maksim
Сен 1, 2013
Pavelk
Сен 1, 2013
Спасибо.