相关疑难解决方法(0)

我可以设置Chrome中显示的PDF对象的文件名吗?

在我的Vue应用程序中,我收到PDF作为blob,并希望使用浏览器的PDF查看器显示它.

我将其转换为文件,并生成一个对象url:

const blobFile = new File([blob], `my-file-name.pdf`, { type: 'application/pdf' })
this.invoiceUrl = window.URL.createObjectURL(blobFile)
Run Code Online (Sandbox Code Playgroud)

然后我通过将该URL设置为data对象元素的属性来显示它.

<object
  :data="invoiceUrl"
  type="application/pdf"
  width="100%"
  style="height: 100vh;">
</object>
Run Code Online (Sandbox Code Playgroud)

然后,浏览器使用PDF查看器显示PDF.但是,在Chrome中,我没有使用我提供的文件名(此处为my-file-name.pdf):我在PDF查看器的标题栏中看到一个哈希值,当我使用"右键单击"下载文件时- >另存为...'或查看器的控件,它使用blob的哈希(cda675a6-10af-42f3-aa68-8795aa8c377d或类似)保存文件.

浏览器和文件名的工作方式与我在Firefox中所希望的一样; 它只是不使用文件名的Chrome.

有没有办法,使用原生Javascript(包括ES6,但没有Vue以外没有第三方依赖),为Chrome中的blob/object元素设置文件名?

[edit]如果有帮助,则响应具有以下相关标头:

Content-Type: application/pdf; charset=utf-8
Transfer-Encoding: chunked
Content-Disposition: attachment; filename*=utf-8''Invoice%2016246.pdf;
Content-Description: File Transfer
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)

javascript pdf google-chrome blob ecmascript-6

11
推荐指数
2
解决办法
4197
查看次数

如何防止浏览器标题中出现 blob + guid

基本上,我正在做的是在服务器上生成一个 PDF 文件并通过这样的 javascript 在浏览器中显示它:

  file = new window.Blob([data], { type: 'application/pdf' });
  var fileUrl = URL.createObjectURL(file);
  var wnd = window.open(fileUrl, "_blank", "location=no, fullscreen=yes, scrollbars=auto, width=" + screen.width + ",height=" + screen.height);
Run Code Online (Sandbox Code Playgroud)

所有这些工作正常,但每个浏览器都显示一个丑陋的副标题(类似这样):blob:2da57927-311e-4b3d-a261-d2679074802c

有什么办法可以去掉这个副标题或者用一些有意义的东西代替它吗?

编辑: 这是改进代码的屏幕截图(在应用 VisioN 的建议后):

在此处输入图片说明

html javascript report angularjs

4
推荐指数
1
解决办法
5957
查看次数

标签 统计

javascript ×2

angularjs ×1

blob ×1

ecmascript-6 ×1

google-chrome ×1

html ×1

pdf ×1

report ×1