【问题标题】:Is there a way to set a file name when jspdf output()jspdf output()时有没有办法设置文件名
【发布时间】:2023-08-12 20:56:02
【问题描述】:

我的网站绘制了一个柱形图。我有一个按钮可以在保存前将其保存为 PDF 文件。

它现在的工作方式是这样的。

  1. google.visualization 绘制图表。
  2. html2canvas 对图表进行截图。
  3. jsPDF 将屏幕截图插入 PDF 文件并显示给用户。

问题在于 PDF 文件的名称。它类似于 5d78c1eb-0829-4e7e-8ffc-71cf1f102f56.pdf 并且网址是 blob:http://example.com/5d78c1eb-0829-4e7e-8ffc-71cf1f102f56 当用户看到 PDF 并点击保存时,他会收到这个糟糕的文件名。

现在我以这种方式显示 PDF:

window.open(doc.output('bloburl'), '_blank');

如果我将此行更改为以下内容,我可以设置所需的文件名:

doc.save('sample-file.pdf');

但在这种情况下,文件只是下载,但我需要先显示它。

有没有办法显示 PDF 并为其命名?我试过这个:

window.open(doc.output('bloburl', {filename: 'myFileName.pdf'}), '_blank');

但这并没有帮助。

我看到的另一种方式不是显示来自 jsPDF 的 PDF,而是将图像发送到服务器并使用 TCPDF 在那里制作 PDF 文件。用 TCPDF 制作的文件可以有我给它的名字,但我认为在那里发送图像并返回是愚蠢的。

所以问题是如何制作 PDF 并以我想要的名称显示给用户?

【问题讨论】:

  • 可以这样设置标题:pdf.setProperties({ title: 'test' });
  • 我使用这个命令,它在浏览器选项卡和 pdf 插件工具栏中显示标题,但不在地址行中,当我按下下载时,它使用该 abracadabra 作为文件名。现在我正在寻找一种方法给你看一张照片。
  • 那是bloburl。我不确定你能改变它。新的 jsPDF 版本有一个名为 pdfjsnewwindow 的输出。您也许可以更新代码并添加用户定义的文件名以供下载。
  • @РоманЗабигалюк 你好朋友,你找到解决方案了吗?我也有同样的问题...

标签: pdf output filenames tcpdf jspdf


【解决方案1】:

目前的答案是否定的。您可以直接下载它,如本问题接受的答案中所述:Download with filename

但是您创建了一个 objectUrl,因此文件名始终是 url。 也许你可以为此创建一个浏览器扩展......但我还没有时间尝试。此外,您不能指望您的访问者安装了扩展程序。

【讨论】: