Poppler — библиотека для работы с PDF файлами для Linux, Windows, Mac.
[tip]
Готовая к употреблению сборка здесь: http://sourceforge.net/projects/poppler-win32/
[/tip]
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 надо кинуть к экзешнику проги.
Примеры будут позже отдельным топиком.
[tip]Может ругаться на файл 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\
[/tip] [tip]Будет ругаться «нет декларации в этой области видимости <sleep>» заменить на MyThread::msleep и выше функции прописать struct MyThread : public QThread { using QThread::msleep;};
[/tip]
24 комментария
Доброго.
К сожалению, тестового не осталось.
А что именно не получается? Я так понимаю Вы подключаете в Visual Studio ?
Поэтому и спрашивал =) Да, дело в разных компиляторах.
'_imp_ZN7Poppler8Document4loadERK7QStringRK10QByteArrayS6
Вы скоре всего не подключили саму библиотеку.
Попробуйте в LIBS += прямо указать на файл, напрмере LIBS += C:/libs/popler.dll
Естественно замените путь и имя библиотеки на своё.
Впринципе да.
Это значит Вы при установке QT не отметили установку исходников. Придётся переставлять. Там в процессе увидите.
Неа.
Спасибо.
Да, нормально. Только что создал тестовый проект, всё нормально.
Возможно, ошиблись в путях?
Спасибо.