Здравствуйте. Не разу не собирал приложения. Все что есть в репозиториях удовлетворяло на все 100. Но вот понадобилась одна бяка по работе - wkhtmltopdf (конвертер из хтмл в пдф). Вроде все делаю по офф инструкции, но на последнем этапе получаю пачку ошибок. Возможно есть какие то тонкости или чего то не учитываю (не знаю).
Если не затруднит, можно разъяснить на примере данного приложения как их собирать :[.
Заранее благодарен за ответ.
сборка wkhtmltopdf
nik222,
Знать бы вашу систему ещё было бы неплохо.
Извините. Centos 6.3 (как x86_64 так и i686)
nik222,
Один из вариантов: http://chooselinux.org.ua/ustanovka-wkhtmltopdf-v-centos-6-2/
или так, на примере 0.10 http://pastebin.com/0zrtDC7i
или пересобрать с помощью rpmbuild пакет от федоры17 (сорцы http://dl.fedoraproject.org/pub/fedora/linux/updates/17/SRPMS/wkhtmltopdf-0.11.0-0.2.rc1.fc17.src.rpm )
Неплохо бы еще увидеть, на чем обваливается сборка.
Спасибо.
2-я ссылка - вариант подходит, если ставить версию 0.9, в 0.10 ряд ошибок, не позволяющих нормально работать. В 0.9 впрочем тоже.
3-я ссылка - 0.11 не заводиться, возможно не хватает каких то зависимостей, каких - фиг его знает.....
1-я ссылка - именно так собирать и не получается. Если с самого начала:
# yum groupinstall "Development Tools"не проходит. Если только так :
yum --disablerepo='epel' groupinstall "Development Tools"и я если честно не знаю правильно это или нет
Перенесу в соответствующий раздел
verg
не проходит
что значит не проходит?
Показывай что ты делаешь и лог ошибки. Не надо пересказывать своими словами.
На последней стадии получаю
cd src/lib/ && make -f Makefile
make[1]: Entering directory `/root/downloads/wkhtmltopdf/src/lib'
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DMAJOR_VERSION=0 -DMINOR_VERSION=12 -DPATCH_VERSION=0 -DBUILD= -DQT_SHARED -DBUILDING_DLL -D__WKHTMLTOX_UNDEF_QT_DLL__ -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_SVG_LIB -DQT_XMLPATTERNS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../../../wkqt/mkspecs/linux-g++-64 -I. -I../../../wkqt/include/QtCore -I../../../wkqt/include/QtNetwork -I../../../wkqt/include/QtGui -I../../../wkqt/include/QtXmlPatterns -I../../../wkqt/include/QtSvg -I../../../wkqt/include/QtWebKit -I../../../wkqt/include -I../../include -I../../build -o ../../build/pdfconverter.o ../lib/pdfconverter.cc
In file included from ../lib/pdfconverter.cc:27:
../lib/pdfconverter_p.hh: In constructor ‘wkhtmltopdf::PageObject::PageObject(const wkhtmltopdf::settings::PdfObject&, const QString*)’:
../lib/pdfconverter_p.hh:97: ошибка: в классе ‘wkhtmltopdf::PageObject’ не имеет поля с именем ‘headerReserveHeight’
../lib/pdfconverter_p.hh:97: ошибка: в классе ‘wkhtmltopdf::PageObject’ не имеет поля с именем ‘footerReserveHeight’
../lib/pdfconverter_p.hh:98: ошибка: в классе ‘wkhtmltopdf::PageObject’ не имеет поля с именем ‘measuringHeader’
../lib/pdfconverter_p.hh:98: ошибка: в классе ‘wkhtmltopdf::PageObject’ не имеет поля с именем ‘measuringFooter’
../lib/pdfconverter_p.hh: At global scope:
../lib/pdfconverter_p.hh:137: ошибка: ISO C++ запрещает декларации ‘QWebPrinter’ без типа
../lib/pdfconverter_p.hh:137: ошибка: expected ‘;’ before ‘*’ token
../lib/pdfconverter.cc: In member function ‘virtual void wkhtmltopdf::PdfConverterPrivate::beginConvert()’:
../lib/pdfconverter.cc:169: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘measuringHeader’
../lib/pdfconverter.cc:169: ошибка: нет декларации ‘measuringHFLoader’ в этой области видимости
../lib/pdfconverter.cc:174: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘headerReserveHeight’
../lib/pdfconverter.cc:188: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘measuringFooter’
../lib/pdfconverter.cc:188: ошибка: нет декларации ‘measuringHFLoader’ в этой области видимости
../lib/pdfconverter.cc:193: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘footerReserveHeight’
../lib/pdfconverter.cc:210: ошибка: нет декларации ‘measuringHFLoader’ в этой области видимости
../lib/pdfconverter.cc:221: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘headerReserveHeight’
../lib/pdfconverter.cc:222: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘footerReserveHeight’
../lib/pdfconverter.cc: In member function ‘qreal wkhtmltopdf::PdfConverterPrivate::calculateHeaderHeight(wkhtmltopdf::PageObject&, QWebPage&)’:
../lib/pdfconverter.cc:236: ошибка: нет декларации ‘QWebPrinter’ в этой области видимости
../lib/pdfconverter.cc:236: ошибка: expected ‘;’ before ‘wp’
../lib/pdfconverter.cc:237: ошибка: нет декларации ‘wp’ в этой области видимости
../lib/pdfconverter.cc:232: предупреждение: неиспользуемая переменная ‘s’
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::preprocessPage(wkhtmltopdf::PageObject&)’:
../lib/pdfconverter.cc:273: ошибка: нет декларации ‘outline’ в этой области видимости
../lib/pdfconverter.cc:291: ошибка: нет декларации ‘QWebPrinter’ в этой области видимости
../lib/pdfconverter.cc:291: ошибка: expected ‘;’ before ‘wp’
../lib/pdfconverter.cc:292: ошибка: нет декларации ‘wp’ в этой области видимости
../lib/pdfconverter.cc:296: ошибка: нет декларации ‘outline’ в этой области видимости
../lib/pdfconverter.cc:297: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘localLinks’
../lib/pdfconverter.cc:297: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘anchors’
../lib/pdfconverter.cc:299: ошибка: нет декларации ‘outline’ в этой области видимости
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::pagesLoaded(bool)’:
../lib/pdfconverter.cc:346: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘headerReserveHeight’
../lib/pdfconverter.cc:347: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘footerReserveHeight’
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::handleTocPage(wkhtmltopdf::PageObject&)’:
../lib/pdfconverter.cc:653: ошибка: нет декларации ‘QWebPrinter’ в этой области видимости
../lib/pdfconverter.cc:653: ошибка: expected ‘;’ before ‘wp’
../lib/pdfconverter.cc:654: ошибка: нет декларации ‘wp’ в этой области видимости
../lib/pdfconverter.cc:660: ошибка: нет декларации ‘outline’ в этой области видимости
../lib/pdfconverter.cc:660: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘localLinks’
../lib/pdfconverter.cc:660: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘anchors’
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::measuringHeadersLoaded(bool)’:
../lib/pdfconverter.cc:726: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘measuringHeader’
../lib/pdfconverter.cc:728: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘headerReserveHeight’
../lib/pdfconverter.cc:728: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘measuringHeader’
../lib/pdfconverter.cc:731: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘measuringFooter’
../lib/pdfconverter.cc:733: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘footerReserveHeight’
../lib/pdfconverter.cc:733: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘measuringFooter’
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::spoolPage(size_t)’:
../lib/pdfconverter.cc:758: ошибка: нет декларации ‘webPrinter’ в этой области видимости
../lib/pdfconverter.cc:764: ошибка: ‘class QPainter’ has no member named ‘addTextField’
../lib/pdfconverter.cc:774: ошибка: ‘class QPainter’ has no member named ‘addCheckBox’
../lib/pdfconverter.cc:784: ошибка: ‘class QPainter’ has no member named ‘addAnchor’
../lib/pdfconverter.cc:789: ошибка: ‘class QPainter’ has no member named ‘addLink’
../lib/pdfconverter.cc:794: ошибка: ‘class QPainter’ has no member named ‘addHyperlink’
../lib/pdfconverter.cc:796: ошибка: нет декларации ‘endPage’ в этой области видимости
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::spoolTo(size_t)’:
../lib/pdfconverter.cc:803: предупреждение: сравнение знакового и беззнакового целых выражений
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::beginPrintObject(wkhtmltopdf::PageObject&)’:
../lib/pdfconverter.cc:836: ошибка: нет декларации ‘webPrinter’ в этой области видимости
../lib/pdfconverter.cc:836: ошибка: expected type-specifier before ‘QWebPrinter’
../lib/pdfconverter.cc:836: ошибка: expected ‘;’ before ‘QWebPrinter’
../lib/pdfconverter.cc:840: ошибка: нет декларации ‘outline’ в этой области видимости
../lib/pdfconverter.cc:840: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘anchors’
../lib/pdfconverter.cc:843: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘anchors’
../lib/pdfconverter.cc:844: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘anchors’
../lib/pdfconverter.cc:847: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘localLinks’
../lib/pdfconverter.cc:848: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘localLinks’
../lib/pdfconverter.cc:851: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘externalLinks’
../lib/pdfconverter.cc:852: ошибка: ‘class wkhtmltopdf::PageObject’ has no member named ‘externalLinks’
../lib/pdfconverter.cc: In member function ‘void wkhtmltopdf::PdfConverterPrivate::endPrintObject(wkhtmltopdf::PageObject&)’:
../lib/pdfconverter.cc:879: ошибка: нет декларации ‘webPrinter’ в этой области видимости
../lib/pdfconverter.cc:884: ошибка: аргумент типа ‘<type error>’ задан для ‘delete’; должен быть указатель
../lib/pdfconverter.cc: At global scope:
../lib/pdfconverter.cc:878: предупреждение: параметр ‘obj’ не используется
make[1]: *** [../../build/pdfconverter.o] Ошибка 1
make[1]: Leaving directory `/root/downloads/wkhtmltopdf/src/lib'
make: *** [sub-src-lib-make_default-ordered] Ошибка 2что значит не проходит?
никакого результата(реакции) на команду
Похоже на кривой исходный код. Сообщи об этом разработчику.
Это вывод команды из пункта 4? А в пункте 3 ты что-нибудь делаешь?
И ещё, скачай пакет от федоры http://dl.fedoraproject.org/pub/fedora/linux/updates/17/SRPMS/wkhtmltopdf-0.11.0-0.2.rc1.fc17.src.rpm
Выполни от рута yum-builddep wkhtmltopdf-0.11.0-0.2.rc1.fc17.src.rpm
Затем выполни от пользователя rpmbuild --rebuild wkhtmltopdf-0.11.0-0.2.rc1.fc17.src.rpm
Если соберётся, в конце будет написано где лежат готовые пакеты. Если нет, показывай лог сборки полностью, на http://fpaste.org например.
Не совсем в тему, но, возможно, как-то поможет.
Вот «гентушный» ebuild для сборки wkhtmltopdf — http://bpaste.net/show/79854/
Вот сам процесс сборки и установки — http://bpaste.net/show/79853/
Да не, есть же пакет под федору, там и спек есть. В нём всё просто.
Если соберётся, в конце будет написано где лежат готовые пакеты.
Собралось, но:
Reduced Functionality:
This version of wkhtmltopdf has been compiled against a version of QT without
the wkhtmltopdf patches. Therefore some features are missing, if you need
these features please use the static version.
Currently the list of features only supported with patch QT includes:
* Printing more then one HTML document into a PDF file.
* Running without an X11 server.
* Adding a document outline to the PDF file.
* Adding headers and footers to the PDF file.
* Generating a table of contents.
* Adding links in the generated PDF file.
* Printing using the screen media-type.
* Disabling the smart shrink feature of webkit.
Для работы данной версии необходимо наличие Xserver, что не желательно
И еще момент. Собралось:
wkhtmltopdf-0.11.0-0.2.rc1.el6.x86_64.rpm
wkhtmltopdf-debuginfo-0.11.0-0.2.rc1.el6.x86_64.rpm
wkhtmltopdf-devel-0.11.0-0.2.rc1.el6.x86_64.rpmа при проверке версии продукта получаю wkhtmltopdf 0.10.0 rc2
А в пункте 3 ты что-нибудь делаешь?
Ага. Только похоже что репозиторий gitorious.org/+wkhtml2pdf/qt/wkhtmltopdf-qt.git умер и приходиться отступать от мануала..............
Ну собралось и отлично.
Фича "Running without an X11 server" присутствует.
Не обращай внимания на проверку версии.
Вопрос решён? Или что-то всё же не устраивает?
wkhtmltopdf: cannot connect to X server:'(
Как запускаешь?
Иксы установлены? Запущены?
Иксов нет.
Запускаю wkhtmltopdf google.com /_temp/test.pdf
В их хелпе /usr/share/doc/wkhtmltopdf-0.11.0/README_WKHTMLTOPDF написано:
Unfortunately the static binary is not particularly static, on Linux it depends
on both glibc and openssl, furthermore you will need to have an xserver
installed but not necessary running.То есть иксы должны быть установлены. Но можно их не запускать.
you will need to have an xserver installed but not necessary running
На смежных форумах вроде как собирали без необходимости наличия X-ов. При установке Xserver та же ошибка. Запускается с xvfb, но это уже перебор по моему.
Ну может где-то в опциях сборки надо отключить поддержку иксов вообще. Найди как это сделать, подскажу как это в спек добавить и собрать пакет.