Javascript jspdf/pdfmake创建PDF与将页面打印为PDF的好处是什么?
我想在浏览器扩展选项卡中创建PDF报告。我希望能够添加图形、文本、UTF-8支持、图像、位置文本,但除此之外,在样式和布局方面不要过于疯狂 我一直在读jspdf(不支持UTF8)和pdfmake的局限性。看起来他们要处理很多问题会很复杂 我的一个想法是:Javascript jspdf/pdfmake创建PDF与将页面打印为PDF的好处是什么?,javascript,google-chrome,pdf,firefox,jspdf,Javascript,Google Chrome,Pdf,Firefox,Jspdf,我想在浏览器扩展选项卡中创建PDF报告。我希望能够添加图形、文本、UTF-8支持、图像、位置文本,但除此之外,在样式和布局方面不要过于疯狂 我一直在读jspdf(不支持UTF8)和pdfmake的局限性。看起来他们要处理很多问题会很复杂 我的一个想法是: 将我的报告所需的HTML直接放在页面上 使用CSS隐藏除报表HTML之外的所有内容,并使用“@media print”样式设置报表样式 触发“window.print()”以JavaScript打印页面。Chrome显示预览,并允许您在单击后
- 将我的报告所需的HTML直接放在页面上
- 使用CSS隐藏除报表HTML之外的所有内容,并使用“@media print”样式设置报表样式
- 触发“window.print()”以JavaScript打印页面。Chrome显示预览,并允许您在单击后保存为PDF。Firefox的打印预览显示了一个预览,界面有点混乱,但只需点击几下就可以保存为PDF
我不认为在任何我觉得奇怪的地方有人提出这种方法。我看到的唯一缺点是,用户可能会困惑,为什么他们在不需要PDF的情况下被要求打印某些内容,但由于报告通常不会生成,所以这并不是什么大问题。据我所知,从浏览器打印总是生成PDF图像(您无法选择文本或元素)。因为文件大小更大。我认为这两种方法都使用ht2ml->canvas,然后将canvas作为图片粘贴到PDF中
jsPDF和pdfmake将允许您生成包含“真实”文本和元素的PDF。这很难做到,但质量和文件大小更好。取决于您的使用情况。据我所知,从浏览器打印总是生成PDF格式的图像(您不能选择文本或元素)。因为文件大小更大。我认为这两种方法都使用ht2ml->canvas,然后将canvas作为图片粘贴到PDF中
jsPDF和pdfmake将允许您生成包含“真实”文本和元素的PDF。这很难做到,但质量和文件大小更好。取决于您的用例。这与Marko Tošić所说的恰恰相反。实际上,从浏览器打印不会生成PDF图像(您可以自己快速测试)。但是很多时候,您需要将HTML->Canvas与jsPDF/pdfmake一起使用 pdfmake不太支持HTML->PDF: 将HTML转换为PDF时,jsPDF不支持外部CSS 在pdfmake和jsPDF中,如果希望使PDF看起来与HTML相同,则需要执行HTML->Canvas,然后将Canvas粘贴为PDF中的图片 就HTML->PDF而言,从浏览器打印总是比javascript PDF库有更好的结果 如果您想让PDF文件可下载,您可能需要查看服务器端的phantomJS或headless chrome 回答你的问题: jspdf/pdfmake的好处:
- 正如您所提到的,jspdf/pdfmake为用户提供了真正的“下载”体验,而不是将“打印”重新用作下载
- 与phantomJS或headless chrome解决方案相比,它不需要服务器端实现
- 更好的HTML->PDF结果(支持所有HTML标记和CSS)
- 正如您所提到的,jspdf/pdfmake为用户提供了真正的“下载”体验,而不是将“打印”重新用作下载
- 与phantomJS或headless chrome解决方案相比,它不需要服务器端实现
- 更好的HTML->PDF结果(支持所有HTML标记和CSS)
- 这与马尔科·托舍维奇所说的恰恰相反。实际上,从浏览器打印不会生成PDF图像(您可以自己快速测试)。但是很多时候,您需要将HTML->Canvas与jsPDF/pdfmake一起使用
pdfmake不太支持HTML->PDF:
将HTML转换为PDF时,jsPDF不支持外部CSS
在pdfmake和jsPDF中,如果希望使PDF看起来与HTML相同,则需要执行HTML->Canvas,然后将Canvas粘贴为PDF中的图片
就HTML->PDF而言,从浏览器打印总是比javascript PDF库有更好的结果
如果您想让PDF文件可下载,您可能需要查看服务器端的phantomJS或headless chrome
回答你的问题:
jspdf/pdfmake的好处:
window.print()相关的内容
将停止/暂停浏览器的JavaScript引擎。因此,如果您的页面或应用程序需要JavaScript在后台连续运行,那么创建pdf可能是更好的解决方案。任何与window.print()
相关的内容都将停止/暂停浏览器的JavaScript引擎。因此,如果您的页面或应用程序需要JavaScript在后台连续运行,那么创建pdf可能是更好的解决方案。从浏览器打印总是生成pdf图像,这不再是事实。我可以使用Google Chrome 72.0.3626.109版(官方版本)(64位)将html打印为pdf格式,并且内容可以搜索。从浏览器打印总是生成pdf格式的图像这不再是事实。我可以使用Google Chrome 72.0.3626.109版(官方版本)(64位)将html打印为pdf格式,内容可以搜索;可以控制pdf的更多细节。jspdf/pdfmake的一些其他好处:可以生成pdf而无需完整的HTML页面;可以控制pdf的更多详细信息。