Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jspdf/pdfmake创建PDF与将页面打印为PDF的好处是什么?_Javascript_Google Chrome_Pdf_Firefox_Jspdf - Fatal编程技术网

Javascript jspdf/pdfmake创建PDF与将页面打印为PDF的好处是什么?

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显示预览,并允许您在单击后

我想在浏览器扩展选项卡中创建PDF报告。我希望能够添加图形、文本、UTF-8支持、图像、位置文本,但除此之外,在样式和布局方面不要过于疯狂

我一直在读jspdf(不支持UTF8)和pdfmake的局限性。看起来他们要处理很多问题会很复杂

我的一个想法是:

  • 将我的报告所需的HTML直接放在页面上

  • 使用CSS隐藏除报表HTML之外的所有内容,并使用“@media print”样式设置报表样式

  • 触发“window.print()”以JavaScript打印页面。Chrome显示预览,并允许您在单击后保存为PDF。Firefox的打印预览显示了一个预览,界面有点混乱,但只需点击几下就可以保存为PDF

我错过什么了吗?我的方法有什么缺点吗?可能是操作系统特定的问题?为什么要使用jspdf或pdfmake来解决这个问题


我不认为在任何我觉得奇怪的地方有人提出这种方法。我看到的唯一缺点是,用户可能会困惑,为什么他们在不需要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)

    • 这与马尔科·托舍维奇所说的恰恰相反。实际上,从浏览器打印不会生成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)

      对于这些生成的PDF文件,通常要求具有书签、TOC和其他链接,这是通过从浏览器打印无法实现的。

      对于这些生成的PDF文件,通常要求具有书签、TOC和其他链接,这是通过从浏览器打印无法实现的。

      任何与
      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的更多详细信息。