我的应用生成 PDF 供用户使用。 “Content-Disposition”http header 的设置如前所述 here .这设置为“inline; filename=foo.pdf”,这应该足以让 Acrobat 在保存 pdf 时将“foo.pdf”作为文件名。
但是,在浏览器嵌入的 Acrobat 中单击“保存”按钮后,要保存的默认名称不是该文件名,而是带有斜杠的 URL 更改为下划线。又大又丑。有没有办法在 Adobe 中影响此默认文件名?
URL 中有一个查询字符串,这是不可协商的。这可能很重要,但在 URL 末尾添加“&foo=/title.pdf”不会影响默认文件名。
更新 2:我都试过了
content-disposition inline; filename=foo.pdf
Content-Type application/pdf; filename=foo.pdf
和
content-disposition inline; filename=foo.pdf
Content-Type application/pdf; name=foo.pdf
(通过 Firebug 验证)遗憾的是,两者均无效。
示例网址是
/bar/sessions/958d8a22-0/views/1493881172/export?format=application/pdf&no-attachment=true
转换为默认的 Acrobat 保存为文件名
http___localhost_bar_sessions_958d8a22-0_views_1493881172_export_format=application_pdf&no-attachment=true.pdf
更新 3:Julian Reschke 为这个案例带来了真实的洞察力和严谨性。请支持他的回答。 这似乎在 FF ( https://bugzilla.mozilla.org/show_bug.cgi?id=433613 ) 和 IE 中被破坏,但在 Opera、Safari 和 Chrome 中工作。 http://greenbytes.de/tech/tc2231/#inlwithasciifilenamepdf
最佳答案
部分问题是相关的RFC 2183并没有真正说明如何处理“内联”处置类型和文件名。
此外,据我所知,唯一实际使用 type=inline 文件名的 UA 是 Firefox(请参阅 test case)。
最后,插件 API 实际上使该信息可用并不明显(也许熟悉 API 的人可以详细说明)。
话虽这么说,我已经将这个问题的指针发送给了 Adobe 人员;也许合适的人会看看。
相关:请参阅 draft-reschke-rfc2183-in-http 中阐明 HTTP 中内容处置的尝试-- 这是正在进行的早期工作,感谢反馈。
更新:我添加了一个 test case ,这似乎表明 Acrobat 阅读器插件不使用响应 header (在 Firefox 中),尽管插件 API 提供对它们的访问。
关于http - "name"web pdf 在 Acrobat 中更好的默认保存文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/151079/