将html转换为pdf

时间:2011-05-26 13:46:43

标签: javascript css linux pdf

我正在尝试将html转换为来自linux的pdf,我也必须在web APP中使用它,请让我知道有什么工具可用于此。请让我知道其他任何工具

到目前为止,我已经尝试了

    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 个答案:

答案 0 :(得分:5)

您走在正确的道路上:wkhtmltopdf是最简单的方法。请注意,存储库中的代码可能已过时(不确定此程序包的最新版本);您可能需要从源代码编译它,或者获取静态链接的版本(这个版本很大,但已经包含了QT库和其他依赖项)。

另外,在您的情况下,您可能只是错过了一个库 - 安装libqt4-webkit-dev可能会解决这个问题。

答案 1 :(得分:0)

两种易于实现且适合将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);
    var img = canvas.toDataURL("image/jpg"); console.log(img);
    var doc=new jsPDF("p", "mm", "a4"); var width = doc.internal.pageSize.width;
    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

  • here

  • 安装wkhtmltopdf
  • 我们可以直接使用来自terminal / commandLine的wkhtmltopdf,但是对于java语言,我们可以使用wrapper

  • 使用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 {
    @Override public void render(RenderRequest request , RenderResponse response) throws PortletException , IOException
    { super.render(request, response); Pdf pdf = new Pdf();
    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

答案 2 :(得分:-1)

最简单的方法可能是启动任何现代浏览器,访问该网站,然后使用浏览器的“打印”功能打印到pdf(假设您的系统设置了pdf打印机)。我不知道你的情况下这是否是一个选项,而且这种事情在Web应用程序中无效。不过,你可能想尝试一下。