преобразование HTML в PDF - PullRequest
4 голосов
/ 26 мая 2011

Я пытаюсь конвертировать HTML в PDF из Linux, также я должен использовать это в веб-приложении, пожалуйста, дайте мне знать, какие инструменты доступны для этого. Пожалуйста, дайте мне знать любые другие инструменты для этого

ТакПока я пробовал

    html2ps htmlfilename > a.ps
    ps2pdf a.ps > a.pdf

Но вышеупомянутое не конвертирует изображения и игнорирует css. Моя среда разработки - linux (RHEL5)

Также я пробовал http://www.webupd8.org/2009/11/convert-html-to-pdf-linux.html я получаюэта ошибка

  [root@localhost bin]# ./wkhtmltopdf www.example.com a.pdf
  ./wkhtmltopdf: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Вы на правильном пути: wkhtmltopdf - самый простой способ сделать это. Обратите внимание, что код в репозиториях может быть устаревшим (не уверен, насколько актуален этот пакет); вам может понадобиться скомпилировать его из исходного кода или получить статически связанную версию (которая огромна, но уже содержит библиотеку QT и другие зависимости).

Кроме того, в вашем случае вы можете просто пропустить библиотеку - установка libqt4-webkit-dev может помочь вам.

0 голосов
/ 15 декабря 2016

Два способа, которые просты в реализации и подходят для преобразования HTML + CSS в pdf:

1) Использование плагина "Jspdf javascript" с "плагином html2canvas" (веб-приложение).

  • Вставить стабильную версию плагина jspdf.

    var script = document.createElement('script'); script.type = 'text/javascript'; script.src ='https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.min.js'; document.head.appendChild(script);

  • Вставить плагин html2canvas

    var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js'; document.head.appendChild(script);

  • Вставьте следующий скрипт

    var html2obj = html2canvas($('your div class here')); var queue = html2obj.parse(); var canvas = html2obj.render(queue);<br> var img = canvas.toDataURL("image/jpg"); console.log(img);<br> var doc=new jsPDF("p", "mm", "a4"); var width = doc.internal.pageSize.width;<br> var height = doc.internal.pageSize.height; doc.addImage(canvas, 'JPEG', 15, 35, 180, 240,'SLOW'); doc.save("save.pdf");

  • Специальный чехол для IE 11

    document.getElementById("your div here").style.backgroundColor = "#FFFFFF";

2) Использование wkhtmltopdf

  • Установите wkhtmltopdf из здесь

  • мы можем напрямую использовать wkhtmltopdf из терминала / commandLine, однако в случае языка Java у нас есть оболочка , которую мы можем использовать.

  • Пример кода с использованием оболочки wkhtmltopdf

    import com.github.jhonnymertz.wkhtmltopdf.wrapper.Pdf; import com.github.jhonnymertz.wkhtmltopdf.wrapper.page.PageType; import com.github.jhonnymertz.wkhtmltopdf.wrapper.params.Param; public class PofPortlet extends MVCPortlet {<br> @Override public void render(RenderRequest request , RenderResponse response) throws PortletException , IOException<br> { super.render(request, response); Pdf pdf = new Pdf();<br> pdf.addPage("http://www.google.com", PageType.url); // Add a Table of contents pdf.addToc(); // The "wkhtmltopdf" shell command accepts different types of options such as global, page, headers and footers, and toc. Please see "wkhtmltopdf -H" for a full explanation. // All options are passed as array, for example: // Save the PDF try { pdf.saveAs("E:\\output.pdf"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

3) Другие инструменты включают phantom.js, itextpdf, grabz.it

0 голосов
/ 26 мая 2011

Вероятно, самым простым способом было бы запустить любой современный браузер, перейти на сайт, а затем использовать функцию «печати» браузера для печати в PDF (при условии, что в вашей системе настроен принтер PDF).Я не знаю, подходит ли это в вашем случае, и такого рода вещи не будут работать в веб-приложении.Тем не менее, вы можете попробовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...