有没有办法在 jspdf 的 output() 方法中设置文件名?

7

我的网站绘制了一张柱状图。我有一个按钮可以将其保存为PDF文件,并在保存之前显示它。

现在的工作方式如下:

  1. google.visualization绘制图表。
  2. html2canvas截取图表的屏幕截图。
  3. jsPDF将屏幕截图插入PDF文件并向用户显示。

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

enter image description here 现在我以这种方式显示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并以我想要的名称向用户显示它?


7
您可以按以下方式设置标题:pdf.setProperties({ title: '测试' }); - Weihui Guo
1
我使用这个命令,它会在浏览器标签和pdf插件工具栏中显示标题,但不会在地址栏中显示,当我按下载按钮时,它会将那个“abracadabra”作为文件名。现在我正在寻找一种方法来向您展示一张图片。 - Роман Забигалюк
这是图片 https://ic.pics.livejournal.com/llill/8858779/1953/1953_900.png - Роман Забигалюк
1
那是bloburl。我不确定你能否更改它。新的jsPDF版本有一个名为“pdfjsnewwindow”的输出。你可以更新代码并添加用户定义的文件名进行下载。 - Weihui Guo
@РоманЗабигалюк 你好朋友,你找到解决办法了吗?我也有同样的问题... - Sergio Cano
有什么解决方案吗?我也遇到了同样的问题。 - Yash.S.Narang
1个回答

1

目前的答案是“否”。您可以直接下载它,如此问题的已接受答案中所述:带文件名下载

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


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