【问题标题】:convert HTML ( having Javascript ) to PDF using JavaScript [closed]使用 JavaScript 将 HTML(具有 Javascript)转换为 PDF [关闭]
【发布时间】:2025-12-01 01:50:01
【问题描述】:

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

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

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

【问题讨论】:

  • Java 与 Javascript 完全不同!
  • 我知道,我想要使用 java 或 javascript 的解决方案。我都可以接受。
  • 一些问题:Java 是否已经存在于项目中?这个图表(图像,表格,......)如何使用Javascript以及数据来自哪里?我认为您的问题不会有直接的解决方案。

标签: javascript html pdf


【解决方案1】:

我们也在寻找某种方法将带有复杂 javascript 的 html 文件转换为 pdf。 我们文件中的 javasript 包含 document.write 和 DOM 操作。

我们尝试使用HtmlUnit 的组合来解析文件和Flying Saucer 来呈现为pdf,但结果不够令人满意。它有效,但在我们的例子中,pdf 与用户想要的内容不够接近。

如果你想试试这个,这里有一个代码 sn-p 用于将本地 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();
}

【讨论】:

  • 你的代码很震撼......但正如你所提到的,它并不是 100% 没问题......那么,你是否找到了一些新的东西来提高 pdf 的质量?
  • 如何在 visualforce 页面中使用此代码?我在 salesforce Apex 页面中需要这个
【解决方案2】:

我很惊讶没有人提到使用 API 来完成这项工作的可能性。

当然,如果您想保持安全,直接在浏览器中使用 javascript 将 HTML 转换为 PDF 并不是一个好主意。

但你可以这样做:

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

  1. 向特定端点的服务器发送请求,其中包含有关转换内容的详细信息(例如页面的 URL)。
  2. 然后此端点将发送数据以转换为 API,并接收 PDF 作为响应
  3. 它将返回给您的用户。

从用户的角度来看,他们将通过单击按钮收到 PDF。

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

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

他们为 PHP、Python 和 Node.js 提供现成的工作包。您所要做的就是安装软件包,创建一个帐户,输入您的 API 密钥,一切就绪!

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

【讨论】:

    【解决方案3】:

    使用浏览器的Print... 菜单项,您可以使用PDF 打印机驱动程序,例如PDFCreator。这样,页面中包含的任何 JavaScript 都会在页面呈现时由浏览器处理。

    PDFCreator 是一个免费工具,可以从几乎任何 Windows 应用程序创建 PDF 文件。

    • 从任何能够打印的程序创建 PDF

    【讨论】:

      【解决方案4】:

      使用DocmosisJODReports,您可以将HTML 和Javascript 提供给可以生成PDF 或doc 或其他格式的文档渲染过程。下面的转换由 OpenOffice 执行,因此结果将取决于 OpenOffice 导入过滤器。您可以手动尝试将网页保存到文件,然后使用 OpenOffice 加载 - 如果看起来足够好,那么这些工具将能够为您提供与 PDF 相同的结果。

      【讨论】:

        【解决方案5】:

        看看这个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 中几乎没有错误,因此您可能需要暂时更改 dom 样式。 希望这会有所帮助。

        【讨论】:

          【解决方案6】:

          将其复制并粘贴到您的站点中,以提供将页面转换为 PDF 页面的链接。

          <a href="javascript:void(window.open('http://www.htmltopdfconverter.net/?convert='+window.location))">Convert To PDF</a>
          

          【讨论】:

            【解决方案7】:

            您可以使用 jquery 来完成,

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

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

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

            【讨论】:

            • 您能否在回答中解释这是如何将 HTML 页面保存为 PDF 的解决方案?提问者没有说任何关于打印的事情......
            • "10 jQuery Print Page Options" 只是一个链接名称,这个插件会将 HTML 页面作为 PDF..,但是插件中有一个名称为“PRINT”的按钮,但它会给出一个pdf文件..
            • 好的,在您的答案中添加此信息会很不错,因为当提问者这样做时阅读 使用此代码链接打印按钮... 非常令人惊讶根本没有提到打印按钮。
            • 这甚至没有使用 jquery 插件。这是使用标准 jquery 等待 dom 加载,然后绑定调用本机窗口函数 print() 的单击事件。 - 10,000
            • 我知道这是一篇旧帖子,但这是为什么“仅链接”答案不好的一个典型例子。该链接不再起作用,因此所有这些答案基本上都是“触发要显示的打印对话框”,这与问题完全不同。
            最近更新 更多