CrazySage
@CrazySage
C++ developer

Рендеринг pdf Poppler + Win32 + Qt4 + C++?

Появилась необходимость в виндоузовском приложении отрендерить пдф файл, просто вывести на экран страницу. Нашел библиотеку Poppler, которая вроде это должна уметь делать и вдобавок обладает qt4 frontend'ом. Скачал, вроде собрал с помощью cmake'а и visual studio 2008, на выходе получил два файла — poppler.idb и poppler.lib.

При попытке подключить библиотеку в Qt Creator'е через вписывание в pro-файл строчки

Код:

LIBS+=poppler.lib

получаю ошибки на unresolved external'ы

при попытке подцепить найденную на сайте разработчиков poppler dll-ку получаю ошибку

Invalid or corrupt file: cannot read at 0x2E0



Соответственно вопрос что я делаю не так (если это вдруг понятно из приведенных фактов) или как понять, что я делаю не так?

опыта в использовании CMake'а у меня нет да и с сборкой и подключением библиотек под виндой мог накосячить



Используемый вызов poppler'а взят с форумов qt:

Код:

Poppler::Document *doc = Poppler::Document::load(&quot;D:\\sample.pdf&quot;);<br/>
 QImage image = doc-&gt;page(0)-&gt;renderToImage(<br/>
 physicalDpiX(),<br/>
 physicalDpiY());<br/>
 ui-&gt;label-&gt;setPixmap(QPixmap::fromImage(image));
  • Вопрос задан
  • 3968 просмотров
Пригласить эксперта
Ответы на вопрос 5
proDOOMman
@proDOOMman
Может быть QtCreator использует в качестве компилятора mingw? Студия и gcc между собой плохо дружат, попробуйте собрать чем-то одним
Ответ написан
Комментировать
ixSci
@ixSci
1) Покажите какие unresolved он Вам выдает
2) Проверьте есть ли такие функции в либе с помощью dumpbin
3) Проверьте, что при сборке этого poppler стоит флаг -Zc:wchar_t- в настройках проекта студии. По дефолту Qt собирается с ним, а вот разработчики, частенько, забывают вписать его в cmake.
Ответ написан
Комментировать
silvansky
@silvansky
Странно.
1. Попплера собирали статически или динамически? Ну, в смысле, для какой линковки?
2. Если статически, то должен быть файл poppler.a или типа того — и он должен прилинковаться к программе.
3. Если динамически, то должен был быть собран и popler.dll — его-то и надо подсовывать программе. Но опять таки — его с Qt динамически или статически линковали?
Ответ написан
Комментировать
@YourChief
а пробовали основной проект вижуалстудией собирать и указать там в либах в Additional Dependencies этот poppler.lib?
Ответ написан
Комментировать
CrazySage
@CrazySage Автор вопроса
C++ developer
Еще вопрос кстати — насколько хорош\плох muPDF? И есть ли инструкция по использованию его в качестве библиотеки?)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы