Комментарии 25
НЛО прилетело и опубликовало эту надпись здесь
Это здорово конечно, Chrome молодец, но если Вы не уловили суть, в статье рассмотрено построение PDF документа на серверной стороне, а не на клиентской.
+1
wkhtmltopdf.org/
пробовал, очень качественно.
пробовал, очень качественно.
+4
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, в целом очень интересные библиотеки, хотя если говорить в разрезе языка программирования Java, то wkhtmltopdf ещё можно попытаться подключить через JNI, но вопрос на сколько это уместно, а phantomjs тем более вряд ли подходит.
0
Очень много геморроя, уж простите и вопрос в том насколько хорошо ваше решение дружит с css3 html5? А ответ прост — вообще не дружит.
Так что разговоры типа можно создать свой сервис, это чисто болтовня и бред, с такими ограничениями можно текстовый странички в пдф гнать не более.
В свое время я активно искал как бы преобразовывать html в pdf на java. В итоге ничего лучше wkhtmltopdf.org найти не удалось, да, получается сторонний вызов из левого места, но что поделать.
А еще если вы сами формируете этот html, лучше сразу взять тот же ireport и делать на нем в итоге выбирая куда конвертить в html или pdf (помню из-за бага в вебките wkhtmltopdf.org неправильно преобразовывал таблицы. пришлось все переделывать )
Так что разговоры типа можно создать свой сервис, это чисто болтовня и бред, с такими ограничениями можно текстовый странички в пдф гнать не более.
В свое время я активно искал как бы преобразовывать html в pdf на java. В итоге ничего лучше wkhtmltopdf.org найти не удалось, да, получается сторонний вызов из левого места, но что поделать.
А еще если вы сами формируете этот html, лучше сразу взять тот же ireport и делать на нем в итоге выбирая куда конвертить в html или pdf (помню из-за бага в вебките wkhtmltopdf.org неправильно преобразовывал таблицы. пришлось все переделывать )
0
Так, ну что касается HTML5 и CSS3, я сомневаюсь, что есть хорошие аналоги, которые смогут превратить документ такой структуры в PDF, возможно ли это вообще в полном объеме? Пару лет назад видел на HTML5 и CSS3 игру Angry Birds (http://chrome.angrybirds.com/), скажите, как вы приведете такую страницу к PDF? Что касается wkhtmltopdf, согласен, что это хорошая вещь, но на мой личный взгляд в данном случае
сторонний вызов из левого местагораздо геморойнее (как Вы выразились), чем то решение, которое я предложил.
0
Я вот утверждаю что вызов укладывается в несколько строк кода кода , не без проблем но!
На счет HTML5 и CSS3 — wkhtmltopdf их понимает и сгенерирует более менее нормальное отображения поняв основные вещи.
А вы еще скажите чтобы в нее, в пдф можно было поиграть, подумайте над абсурдностью вашего заявления.
На счет HTML5 и CSS3 — wkhtmltopdf их понимает и сгенерирует более менее нормальное отображения поняв основные вещи.
Пару лет назад видел на HTML5 и CSS3 игру Angry Birds (http://chrome.angrybirds.com/), скажите, как вы приведете такую страницу к PDF?
А вы еще скажите чтобы в нее, в пдф можно было поиграть, подумайте над абсурдностью вашего заявления.
-1
Ну я вел к абсурдности Вашего заявления.
+1
Дефакто я не видел ни одного вменяемого инструмента на java да и быть их не может ибо написать такой инструмент — огромный нереальный труд. Чтобы сделать правильный pdf из html надо распорсить html и применить к нему css, а для этого надо написать вещь аналогичную webkit или geko чтопо сути гигантская область работы.
Поэтому все что якобы может работать нативно на java на уровне рендеринга html документов — мягко говоря отстает лет на 10 от текущих веб технологий.
Поэтому я говорю если вы хотите какие-то данные отображать и в html и в pdf — берите ireport. Если вы надеятесь работать с реальными сайтами то смотрите в сторону сторонних решений.
Вы же в статье тоже не хабр в пдф гоните а какую-то непотнятную табличу в 2 строки, по сложности рендеринга — вообще ниочем, даже говорить не очем. Возьмите реальную страницу хабра и посмотрите на свое решение и wkhtmltopdf, сравните качество.
Поэтому все что якобы может работать нативно на java на уровне рендеринга html документов — мягко говоря отстает лет на 10 от текущих веб технологий.
Поэтому я говорю если вы хотите какие-то данные отображать и в html и в pdf — берите ireport. Если вы надеятесь работать с реальными сайтами то смотрите в сторону сторонних решений.
Вы же в статье тоже не хабр в пдф гоните а какую-то непотнятную табличу в 2 строки, по сложности рендеринга — вообще ниочем, даже говорить не очем. Возьмите реальную страницу хабра и посмотрите на свое решение и wkhtmltopdf, сравните качество.
0
О чем мы спорим? :) Я не считаю, что спорить к месту, я соглашусь с тем, что wkhtmltopdf очень хороша, и соглашусь, что такой подход — тоже выход, но так по сути мы можем найти любую программу, которая способна сгенерировать PDF из веб-страницы, вызовем ее из нашего приложения, подождем пока она закончит свою работу, и отдадим документ клиенту. Чувствуете разницу? В статье я рассмотрел нативный способ на Java, единственный из известных мне, этим и поделился, а использовать его, или возложить обязанности на вызов другой программы — это уже другой разговор, Вы так не считаете? Я лишь считаю, что описанный мною способ тоже имеет право на существование. Основываясь на личном опыте, скажу, что данный способ я успешно использовал в американском проекте, все остались довольны.
Что касается хабра, вот Вам пожалуйста страница из хабра в PDF на том решении, которое я предложил: db.tt/14Z5dIgF
Что касается хабра, вот Вам пожалуйста страница из хабра в PDF на том решении, которое я предложил: db.tt/14Z5dIgF
0
Вот, кстати, PDF, которую сделал wkhtmltopdf: db.tt/hD2qKBxn
В целом, качество wkhtmltopdf отличное: создано оглавление, приятно смотрится документ, только вот беда с заголовками постов, заметили?
В целом, качество wkhtmltopdf отличное: создано оглавление, приятно смотрится документ, только вот беда с заголовками постов, заметили?
0
Предположу что это реакция на letter-spacing и это фиксится подключением вот такого css
Попробуйте вашим методом, сколько потребуется фиксов чтобы адеватно поправить все?
h1 {
letter-spacing: -1px;
}
Попробуйте вашим методом, сколько потребуется фиксов чтобы адеватно поправить все?
0
Такие титаны еще существуют.
Я даже одно такое решение pure java на дотнет портировал, о чем писал на хабре.
Вполне себе честный был парсинг HTML с не менее честным применением CSS в объеме спеки 2.1 + элементы CSS 3. Порядка 400 000 строк кода было. С рендерилкой SVG даже. И reflow по заданному размеру страницы, чего скажем wkhtmltopdf не умеет.
Я даже одно такое решение pure java на дотнет портировал, о чем писал на хабре.
Вполне себе честный был парсинг HTML с не менее честным применением CSS в объеме спеки 2.1 + элементы CSS 3. Порядка 400 000 строк кода было. С рендерилкой SVG даже. И reflow по заданному размеру страницы, чего скажем wkhtmltopdf не умеет.
0
А как насчёт закладок? Создаёт ли ваше решение структуру закладок на основании html-заголовков?
0
Кстати да, насчёт закладок. К сожалению, информация о закладках должна быть прописана в коде страницы, подробнее можете почитать здесь: code.google.com/p/flying-saucer/wiki/HowTo_PDF_bookmarks_from_xhtml_markup
0
Спасибо за пост.
Используем аналогичный подход, только HTML генерируем при помощи XSLT.
До внедрения проводили обзор способов генерации PDF из Html. Получилась вот такая табличка gyazo.com/87913f3008f4023cd11db01134406515
Одним из требования была поддержка постраничных хедеров/футеров, нумерации страниц и переноса заголовков таблиц между страницами (если таблица большая).
Летающая тарелка одна из немногих кто поддерживает margin-boxes и running elements из CSS3, что и позволило реальзовать всё что нужно.
Используем аналогичный подход, только HTML генерируем при помощи XSLT.
До внедрения проводили обзор способов генерации PDF из Html. Получилась вот такая табличка gyazo.com/87913f3008f4023cd11db01134406515
Одним из требования была поддержка постраничных хедеров/футеров, нумерации страниц и переноса заголовков таблиц между страницами (если таблица большая).
Летающая тарелка одна из немногих кто поддерживает margin-boxes и running elements из CSS3, что и позволило реальзовать всё что нужно.
+1
А я делал так: через html2canvas конвертирую блочный элемент в canvas, из него получаю base64 Data URI изображения, отсылаю его на сервер, а там создаю PDF-файл с этой картинкой. Картинка получается гарантированно такая же, какая была на клиенте. Только немного заблюренная, и текст там не выбирается, но мне это было не важно. Для canvas требуется поддержка HTML5.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как web-страницу легко превратить в PDF?