我想将HTML(包含JavaScript)转换为PDF。我怎么能这样做?
我只想展示网页上显示的内容。我正在显示由JavaScript库生成的甘特图。
现在我想将该HTML网页另存为PDF,该怎么做?
答案 0 :(得分:5)
我们也在寻找将复杂的javascript文件转换为pdf的方法。
我们文件中的javasript包含document.write
和DOM操作。
我们尝试使用HtmlUnit的组合来解析文件,并Flying Saucer渲染为pdf,但结果不够令人满意。它有效,但在我们的例子中,pdf并不足以满足用户的需求。
如果你想试试这个,这里有一个代码片段,用于将本地html文件转换为pdf。
URL url = new File("test.html").toURI().toURL();
WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage(url);
OutputStream os = null;
try{
os = new FileOutputStream("test.pdf");
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(page,url.toString());
renderer.layout();
renderer.createPDF(os);
} finally{
if(os != null) os.close();
}
答案 1 :(得分:2)
我很惊讶没有人提到使用API来完成工作的可能性。
当然,如果你想保持安全,使用javascript直接从浏览器中将HTML转换为PDF并不是一个好主意。
但这是你可以做的:
当您的用户点击“打印”(例如)按钮时,您:
对于用户观点,他们将通过单击按钮接收PDF。
有许多可用的API可以完成这项工作,有些比其他更好(这不是我在这里的原因),谷歌搜索会给你很多答案。
根据你的后端写的内容,你可能会对PDFShift感兴趣(真相:我在那里工作)。
他们为PHP,Python和Node.js提供了随时可用的工作包。您所要做的就是安装软件包,创建一个帐户,指明您的API密钥,并且您已经完成了所有工作!
API的优势在于它们适用于所有语言。您所要做的就是一个请求(通常是POST),其中包含您要转换的数据并返回PDF。根据您的使用情况,它通常是免费的,除非您是一个沉重的用户。
答案 2 :(得分:1)
答案 3 :(得分:1)
使用浏览器窗口小部件(like the one from SWT)将图表渲染为图像,然后使用iText从中创建PDF。
答案 4 :(得分:1)
我建议使用wkhtmltopdf: http://wkhtmltopdf.org/
答案 5 :(得分:0)
使用浏览器的Print...
菜单项,您可以使用 PDF打印机驱动程序,例如PDFCreator。这样,页面中包含的任何JavaScript都会在呈现页面时由浏览器处理。
PDFCreator是一个免费工具,几乎可以从任何Windows应用程序创建PDF文件。
- 从任何能够打印的程序创建PDF
答案 6 :(得分:0)
使用Docmosis或JODReports,您可以将HTML和Javascript提供给文档呈现过程,该过程可以生成PDF或doc或其他格式。下面的转换由OpenOffice执行,因此结果将取决于OpenOffice导入过滤器。您可以通过将网页保存到文件来手动尝试,然后使用OpenOffice加载 - 如果看起来足够好,那么这些工具将能够为您提供与PDF相同的结果。
答案 7 :(得分:0)
将其复制并粘贴到您的网站中,以提供将页面转换为PDF页面的链接。
<a href="javascript:void(window.open('http://www.htmltopdfconverter.net/?convert='+window.location))">Convert To PDF</a>
答案 8 :(得分:0)
试用一个jQuery插件TableExport。
答案 9 :(得分:0)
PhantomJS有可能通过它捕获支持PDF的功能来实现这一目标。
如果您想要通过命令行进行交互的内容;我试图为那个叫Nota的应用程序构建一个应用程序(仍处于初期阶段)。它允许JavaScript呈现/操作,然后以PDF格式捕获页面。
答案 10 :(得分:0)
查看http://www.techumber.com/2015/04/html-to-pdf-conversion-using-javascript.html
基本上你需要使用html2canvas和jspdf才能使它工作。首先,您将dom转换为图像,然后使用jspdf创建带有图像的pdf。
编辑: 关于它是如何工作的简短说明。 我们将使用两个库来完成这项工作。 http://html2canvas.hertzen.com/和 https://github.com/MrRio/jsPDF 首先我们将使用html2canvas创建一个dom图像,我们将使用jspdf addImage方法将该图像添加到pdf。 看起来很简单,但jsPdf和html2cavas中的bug很少,所以你可能需要暂时更改dom样式。 希望这会有所帮助。
答案 11 :(得分:-2)
您可以使用jquery插件
来完成使用此代码链接按钮...
$(document).ready(function() {
$("#button_id").click(function() {
window.print();
return false;
});
});
此链接也可能有所帮助:jQuery Print HTML Pdf Page Options Link