使用JavaScript将HTML(具有Javascript)转换为PDF

时间:2009-11-06 08:48:07

标签: javascript html pdf

我想将HTML(包含JavaScript)转换为PDF。我怎么能这样做?

我只想展示网页上显示的内容。我正在显示由JavaScript库生成的甘特图。

现在我想将该HTML网页另存为PDF,该怎么做?

12 个答案:

答案 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并不是一个好主意。

但这是你可以做的:

当您的用户点击“打印”(例如)按钮时,您:

  1. 向特定端点的服务器发送请求,并提供有关转换内容的详细信息(例如,网页的网址)。
  2. 此端点将发送数据以转换为API,并将接收PDF作为回应
  3. 它将返回给您的用户。
  4. 对于用户观点,他们将通过单击按钮接收PDF。

    有许多可用的API可以完成这项工作,有些比其他更好(这不是我在这里的原因),谷歌搜索会给你很多答案。

    根据你的后端写的内容,你可能会对PDFShift感兴趣(真相:我在那里工作)。

    他们为PHP,Python和Node.js提供了随时可用的工作包。您所要做的就是安装软件包,创建一个帐户,指明您的API密钥,并且您已经完成了所有工作!

    API的优势在于它们适用于所有语言。您所要做的就是一个请求(通常是POST),其中包含您要转换的数据并返回PDF。根据您的使用情况,它通常是免费的,除非您是一个沉重的用户。

答案 2 :(得分:1)

您可以使用iText将Java转换为PDF。

Using itext to convert HTML to PDF

我经常使用iText,这很容易,你可以快速学习。

答案 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)

使用DocmosisJODReports,您可以将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。

https://github.com/kayalshri/tableExport.jquery.plugin

答案 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插件

来完成

Use this link

使用此代码链接按钮...

$(document).ready(function() {
    $("#button_id").click(function() {
        window.print();
        return false;
    });
});

此链接也可能有所帮助:jQuery Print HTML Pdf Page Options Link