JavaScript:如何从HTML表单或div创建PDF文件

4
我刚接触Javascript / jQuery,正在寻找一种方法来在页面上添加一个按钮,让用户可以从预定义的表单或div(例如通过添加类)创建pdf。我做了一些研究,但无法找到JS或jQuery实现此功能的方法。是否有一种通过Javascript / jQuery在客户端实现此功能的方法,或者有人可以告诉我一个支持此功能的免费插件?我找到的唯一插件是TCPDF,但它似乎非常大,并且我没有看到在其中可以将其限制为页面上的某个特定表单或div的方式(而不是打印整个页面)。注意:我不需要包含图像,只需要纯HTML,如表单字段或表格和文本。非常感谢您提前提供任何帮助,Mike。
3个回答

4
你可以尝试使用免费且客户端的jsPDF。从他们的“HTML Render”示例中,你可以看到可以从你的HTML的一部分创建PDF文件。 编辑 可能jsPDF不支持CSS。如果需要,你可以尝试另一个phantomJS作为替代方案,但它是一个命令行工具,并将网页捕获为屏幕截图。不确定这是否符合你的要求。

非常感谢 - 我会看一下的。 - keewee279
我查看了他们的网站并阅读了那里的文档(http://mrrio.github.io/jsPDF/doc/symbols/jsPDF.html),但是没有找到将其限制为某个元素的示例。您能否提供HTML渲染示例的链接或在此处发布它? - keewee279
更新:我在以下帖子中找到了答案,但问题在于它也说您会失去所有自己的CSS样式,而这是我需要保留的内容:https://dev59.com/6WMl5IYBdhLWcg3wsIyA - 无论如何还是谢谢。 - keewee279
1
你可以从他们的“HTML Render”示例中看到,doc.fromHTML接受一个元素的id作为源。 - Moppo
谢谢您的回复,但是我在这里仍然会失去我的CSS样式,对吗? - keewee279
1
谢谢你的回复。这个工具不适合我的需求,但我已经自己找到了答案(请见下文)。 - keewee279

2

还有一个简单易用的库是pdfmake

它是一个简洁的库,可以从HTML创建PDF,并且您可以决定以后是否打印它,

以下是基本用法示例

    var docDefinition = {
    content: [
        'First paragraph',
        'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines'
    ]
};

var pdfDoc = printer.createPdfKitDocument(docDefinition);
pdfDoc.pipe(fs.createWriteStream('pdfs/basics.pdf'));
pdfDoc.end();

1

如同之前的答案一样,我建议使用小而强大、安全的js库Print.js

示例:

 <form method="post" action="#" id="printJS-form">
    ...
 </form>

 <button type="button" onclick="printJS('printJS-form', 'html')">
    Print Form
 </button>

相当容易


但是 print.js 是用于打印而不是生成 PDF 的。 - gom
你可以使用浏览器的“另存为PDF”打印选项。 - Nikolay Bronskiy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接