我正在尝试将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
答案 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
我们可以直接使用来自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应用程序中无效。不过,你可能想尝试一下。