如何使用wkhtmltopdf将简单的html转换为pdf?

如何使用wkhtmltopdf将简单的html转换为pdf?,第1张

概述这是我做的: >在亚马逊云中创建了一个Linux虚拟机. >按照https://code.google.com/p/wkhtmltopdf/wiki/compilation的说明下载并编译wkhtmltopdf-qt和wkhtmltopdf的源代码.最后我有一个wkhtmltopdf的静态版本. >拿这个HTML(http://jsfiddle.net/mark69_fnd/8CtjB/): < 这是我做的:

>在亚马逊云中创建了一个linux虚拟机.
>按照https://code.google.com/p/wkhtmltopdf/wiki/compilation的说明下载并编译wkHTMLtopdf-qt和wkHTMLtopdf的源代码.最后我有一个wkHTMLtopdf的静态版本.
>拿这个HTML(http://jsfiddle.net/mark69_fnd/8CtjB/):

< HTML>
< head>
< style type =“text / CSS”> p {Font-family:sans-serif;};< / style>
< /头>
<身体GT;
< p>让我们测试< / p>
< /体>
< / HTML>
> Ran wkHTMLtopdf test.HTML test.pdf
>将test.pdf复制到我的windows桌面,打开它并得到它(https://docs.google.com/file/d/0B2pbsdBJxJI3MV8zby14cGk5VWs/edit?usp=sharing):

我严格遵循指南,qt配置选项取自../wkHTMLtopdf/static_qt_conf_base和../wkHTMLtopdf/static_qt_conf_linux,如指南所示.

不用说我对结果有点失望.谁能解释我,我做错了什么?

附:

实际上我需要转换一个更复杂的HTML,但是当我无法转换一个简单的HTML时,没有必要谈论它.

编辑

我想强调一点,我不在linux上工作,我只打开一个终端到亚马逊托管的linux机箱.意思是,我没有X11环境.

这是我尝试使用预定义的wkHTMLtopdf包时得到的结果:

ubuntu@ip-10-245-78-162:~$which wkHTMLtopdfubuntu@ip-10-245-78-162:~$/usr/bin/wkHTMLtopdf-bash: /usr/bin/wkHTMLtopdf: No such file or directoryubuntu@ip-10-245-78-162:~$sudo apt-get install wkHTMLtopdfReading package Lists... DoneBuilding dependency treeReading state information... DoneThe following NEW packages will be installed:  wkHTMLtopdf0 upgraded,1 newly installed,0 to remove and 120 not upgraded.Need to get 0 B/104 kB of archives.After this operation,303 kB of additional disk space will be used.Selecting prevIoUsly unselected package wkHTMLtopdf.(Reading database ... 36679 files and directorIEs currently installed.)Unpacking wkHTMLtopdf (from .../wkHTMLtopdf_0.9.9-3_amd64.deb) ...Processing triggers for man-db ...Setting up wkHTMLtopdf (0.9.9-3) ...ubuntu@ip-10-245-78-162:~$l test.*-rw-r--r-- 1 ubuntu ubuntu 123 Mar 30 12:46 test.HTMLubuntu@ip-10-245-78-162:~$cat test.HTML<HTML> <head> <style type="text/CSS">p{Font-family: sans-serif;};</style> </head> <body> <p>Let's Test</p> </body> </HTML>ubuntu@ip-10-245-78-162:~$/usr/bin/wkHTMLtopdf test.HTML test.pdfwkHTMLtopdf: cannot connect to X serverubuntu@ip-10-245-78-162:~$

EDIT2

>我已经下载了ftp://rpmfind.net/linux/fedora/linux/development/rawhide/x86_64/os/Packages/u/urw-fonts-2.4-14.fc19.noarch.rpm
>按照http://www.howtogeek.com/howto/ubuntu/install-an-rpm-package-on-ubuntu-linux/的说明将rpm转换为deb格式.
>安装了deb
>制作了pdf,但仍然只看到了正方形.

这是成绩单:

ubuntu@ip-10-245-78-162:~$sudo alIEn urw-Fonts-2.4-14.fc19.noarch.rpm --scriptswarning: urw-Fonts-2.4-14.fc19.noarch.rpm: header V3 RSA/SHA256 Signature,key ID fb4b18e6: NOKEYwarning: urw-Fonts-2.4-14.fc19.noarch.rpm: header V3 RSA/SHA256 Signature,key ID fb4b18e6: NOKEYurw-Fonts_2.4-15_all.deb generatedubuntu@ip-10-245-78-162:~$sudo dpkg -i urw-Fonts_2.4-15_all.debSelecting prevIoUsly unselected package urw-Fonts.(Reading database ... 38529 files and directorIEs currently installed.)Unpacking urw-Fonts (from urw-Fonts_2.4-15_all.deb) ...Setting up urw-Fonts (2.4-15) ...Processing triggers for Fontconfig ...ubuntu@ip-10-245-78-162:~$ ./wkHTMLtopdf/bin/wkHTMLtopdf test.HTML test.pdfLoading pages (1/6)Counting pages (2/6)Resolving links (4/6)Loading headers and footers (5/6)Printing pages (6/6)Doneubuntu@ip-10-245-78-162:~$

EDIT3

我已经安装了xvfb-run软件包,现在可以通过它运行默认版本(/usr/bin/wkHTMLtopdf).实际上,它能够将简单的test.HTML转换为pdf,但是,对于带有JavaScript代码的复杂HTML页面,它无法这样做.好像/usr/bin/wkHTMLtopdf无法在正在转换的页面上运行任何JavaScript代码.

我仍然困惑为什么编译版本不起作用.

EDIT4

我对默认的wkHTMLtopdf版本不公正.它能够理解页面中的JavaScript,它成功转换了以下HTML:

<HTML>  <head>    <style type="text/CSS">      body {        Font-family: sans-serif;      }    </style>  </head>  <body ID='body'>    <script>      document.getElementByID('body').INNERHTML = 'Hello World!';    </script>  </body></HTML>

我将尝试理解为什么它会失败并显示真实的页面,但我不知道如何解决它,除非通过丢弃原始页面来尝试获取最小的失败页面.

EDIT5

好的,这是最小的例子,不适用于默认的wkHTMLtopdf版本:

<!DOCTYPE HTML><HTML>  <head>    <style type="text/CSS">        HTML,body {                height: 100%;                overflow: hIDden;        }    </style>  </head>  <body>    Hello World!  </body></HTML>

创建的pdf为空.这是成绩单:

ubuntu@ip-10-245-78-162:~$cat test2.HTML<!DOCTYPE HTML><HTML>  <head>    <style type="text/CSS">        HTML,body {                height: 100%;                overflow: hIDden;        }    </style>  </head>  <body>    Hello World!  </body></HTML>ubuntu@ip-10-245-78-162:~$xvfb-run /usr/bin/wkHTMLtopdf test2.HTML test2.pdf ; l test2.pdfLoading page (1/2)Printing pages (2/2)Done-rw-r--r-- 1 ubuntu ubuntu 1266 Mar 31 11:16 test2.pdfubuntu@ip-10-245-78-162:~$cat test2.HTML |sed 6d | xvfb-run /usr/bin/wkHTMLtopdf - test2.pdf ; l test2.pdfLoading page (1/2)Printing pages (2/2)Done-rw-r--r-- 1 ubuntu ubuntu 4284 Mar 31 11:16 test2.pdfubuntu@ip-10-245-78-162:~$

请注意如何删除第6行(height:100%;)会更改创建的pdf文件的大小.

EDIT6

自定义版本是静态链接的,而默认版本依赖于相当多的WebKit共享库:

自定义版本:

ubuntu@ip-10-245-78-162:~/wkHTMLtopdf/bin$l wkHTMLtopdf-rwxr-xr-x 1 ubuntu ubuntu 35020224 Mar 31 22:26 wkHTMLtopdfubuntu@ip-10-245-78-162:~/wkHTMLtopdf/bin$ldd !$ldd wkHTMLtopdf        linux-vdso.so.1 =>  (0x00007fff195ff000)        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fefc06db000)        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fefc03a7000)        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fefc01a2000)        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fefbff9a000)        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fefbfd7d000)        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fefbfa7c000)        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fefbf780000)        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fefbf56a000)        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fefbf1aa000)        /lib64/ld-linux-x86-64.so.2 (0x00007fefc08ef000)        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fefbef8c000)        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fefbed88000)        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fefbeb82000)ubuntu@ip-10-245-78-162:~/wkHTMLtopdf/bin$

现在是默认版本:

ubuntu@ip-10-245-78-162:/usr/bin$l wkHTMLtopdf-rwxr-xr-x 1 root root 233512 May  7  2011 wkHTMLtopdfubuntu@ip-10-245-78-162:/usr/bin$ldd wkHTMLtopdf        linux-vdso.so.1 =>  (0x00007fff031ff000)        libQtWebKit.so.4 => /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4 (0x00007f28a33bc000)        libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007f28a26ee000)        libQtNetwork.so.4 => /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4 (0x00007f28a23a1000)        libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007f28a1ecf000)        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f28a1bcf000)        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f28a19b8000)        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f28a15f9000)        libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f28a1356000)        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f28a114b000)        libgstapp-0.10.so.0 => /usr/lib/x86_64-linux-gnu/libgstapp-0.10.so.0 (0x00007f28a0f3f000)        libgstinterfaces-0.10.so.0 => /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0 (0x00007f28a0d2d000)        libgstpbutils-0.10.so.0 => /usr/lib/x86_64-linux-gnu/libgstpbutils-0.10.so.0 (0x00007f28a0b09000)        libgstvIDeo-0.10.so.0 => /usr/lib/x86_64-linux-gnu/libgstvIDeo-0.10.so.0 (0x00007f28a08ed000)        libgstbase-0.10.so.0 => /usr/lib/x86_64-linux-gnu/libgstbase-0.10.so.0 (0x00007f28a069a000)        libgstreamer-0.10.so.0 => /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0 (0x00007f28a03b2000)        libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f28a0163000)        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f289fe6e000)        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f289fc50000)        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f289f91c000)        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f289f620000)        libFontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libFontconfig.so.1 (0x00007f289f3e9000)        libaudio.so.2 => /usr/lib/x86_64-linux-gnu/libaudio.so.2 (0x00007f289f1d1000)        libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f289efa9000)        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f289ed91000)        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f289eaf5000)        libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f289e8ed000)        libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f289e6d2000)        libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f289e4c3000)        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f289e2b2000)        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f289e0ad000)        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f289dea5000)        /lib64/ld-linux-x86-64.so.2 (0x00007f28a517e000)        liborc-0.4.so.0 => /usr/lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007f289dc29000)        libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f289da25000)        libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f289d6ca000)        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f289d4c1000)        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f289d284000)        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f289d065000)        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f289ce3b000)        libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00007f289cbd5000)        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f289c9d1000)        libuuID.so.1 => /lib/x86_64-linux-gnu/libuuID.so.1 (0x00007f289c7cc000)        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f289c5c5000)ubuntu@ip-10-245-78-162:/usr/bin$

EDIT7

大家好,我不明白wkHTMLtopdf是如何为你工作的.我从头开始,完全:

>创建了一个全新的Ubuntu亚马逊微实例(免费套餐)
> sudo apt-get update
> sudo apt-get升级
> sudo apt-get install libx11-dev
> sudo apt-get install libFontconfig1-dev
> wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
> tar xjf wkHTMLtopdf-0.11.0_rc1-static-amd64.tar.bz2
>使用EDIT5中的内容创建test2.HTML(参见EDIT5成绩单)
>在test2.HTML上运行wkHTMLtopdf-amd64.制作的pdf是空的!
>从test2.HTML(CSS属性宽度或溢出)中删除第6行或第7行,突然它可以正常工作!

任何人都可以追溯我的步骤并确认吗?

EDIT8

在我的笔记本电脑上的VMWare VM中安装了CentOS 6.4.结果相同. wkHTMLtopdf不适用于上述琐碎的HTML文件.

解决方法 尝试在你的HTML头标记中设置charset声明,如下所示:
<head>  <Meta charset="utf-8">  ...</head>
总结

以上是内存溢出为你收集整理的如何使用wkhtmltopdf将简单的html转换为pdf?全部内容,希望文章能够帮你解决如何使用wkhtmltopdf将简单的html转换为pdf?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102997.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存