LinuxForum.Fans
Тема

сборка wkhtmltopdf

Автор: nik222 25 сообщений 5329 просмотров
#304986

Здравствуйте. Не разу не собирал приложения. Все что есть в репозиториях удовлетворяло на все 100. Но вот понадобилась одна бяка по работе - wkhtmltopdf (конвертер из хтмл в пдф). Вроде все делаю по офф инструкции, но на последнем этапе получаю пачку ошибок. Возможно есть какие то тонкости или чего то не учитываю (не знаю).

Если не затруднит, можно разъяснить на примере данного приложения как их собирать :[.

Заранее благодарен за ответ.

#304987

nik222,
Знать бы вашу систему ещё было бы неплохо.

#304996

Извините. Centos 6.3 (как x86_64 так и i686)

#305008

Неплохо бы еще увидеть, на чем обваливается сборка.

#305009

Спасибо.

2-я ссылка - вариант подходит, если ставить версию 0.9, в 0.10 ряд ошибок, не позволяющих нормально работать. В 0.9 впрочем тоже.
3-я ссылка - 0.11 не заводиться, возможно не хватает каких то зависимостей, каких - фиг его знает.....
1-я ссылка - именно так собирать и не получается. Если с самого начала:

text
# yum groupinstall "Development Tools"

не проходит. Если только так :

text
yum --disablerepo='epel' groupinstall "Development Tools"

и я если честно не знаю правильно это или нет


Перенесу в соответствующий раздел
verg

#305052
"nik222" написал:
не проходит

что значит не проходит?

#305053

Показывай что ты делаешь и лог ошибки. Не надо пересказывать своими словами.

#305060

На последней стадии получаю

text
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

что значит не проходит?

никакого результата(реакции) на команду

#305065

Похоже на кривой исходный код. Сообщи об этом разработчику.
Это вывод команды из пункта 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 например.

#305067

Да не, есть же пакет под федору, там и спек есть. В нём всё просто.

#305112
Vascom написал:
Если соберётся, в конце будет написано где лежат готовые пакеты.

Собралось, но:

text
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, что не желательно
И еще момент. Собралось:

text
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 умер и приходиться отступать от мануала..............

#305113

Ну собралось и отлично.
Фича "Running without an X11 server" присутствует.
Не обращай внимания на проверку версии.

Вопрос решён? Или что-то всё же не устраивает?

#305115
text
wkhtmltopdf: cannot connect to X server

:'(

#305120

Как запускаешь?
Иксы установлены? Запущены?

#305123

Иксов нет.
Запускаю wkhtmltopdf google.com /_temp/test.pdf

#305127

В их хелпе /usr/share/doc/wkhtmltopdf-0.11.0/README_WKHTMLTOPDF написано:

text
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

#305154

На смежных форумах вроде как собирали без необходимости наличия X-ов. При установке Xserver та же ошибка. Запускается с xvfb, но это уже перебор по моему.

#305155

Ну может где-то в опциях сборки надо отключить поддержку иксов вообще. Найди как это сделать, подскажу как это в спек добавить и собрать пакет.

Войдите или зарегистрируйтесь, чтобы ответить.