
>在亚马逊云中创建了一个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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)