【发布时间】:2023-08-12 20:56:02
【问题描述】:
我的网站绘制了一个柱形图。我有一个按钮可以在保存前将其保存为 PDF 文件。
它现在的工作方式是这样的。
- google.visualization 绘制图表。
- html2canvas 对图表进行截图。
- 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