使用标准HTTP响应字段动态生成PDF

时间:2015-09-14 08:34:24

标签: http web

我正在开发一个带有表单的网页,该表单根据表单数据返回PDF文档。目前我使用HTTP响应字段

Content-Type: application/pdf
Content-Disposition: attachment; filename="foo.pdf"

但是,由于字段 Content-Disposition 是非标准的,并且在所有浏览器中都不起作用,我正在寻找不同的方法。我是否必须将PDF文档保存在服务器上?什么是作案手法?

编辑:通过"并不适用于所有浏览器"我的意思是,对于某些浏览器,文件名未设置为 foo.pdf 。例如,Dillo只是将默认文件名(在下载对话框中)设置为URL路径的基本名称(加上查询字符串)。

1 个答案:

答案 0 :(得分:0)

  

我是否必须将PDF文档保存在服务器上?

没有。就HTTP客户端而言,服务器的内部工作方式对它完全不透明。它所看到的只是来自服务器的TCP字节流,只要它与指定的Content-Type匹配,该流的生成方式并不重要。

只需在HTTP标题之后立即发送PDF即可。

由于评论而更新

因此,如果您想知道如何在不使用标题字段的情况下提供文件名:只需使用它扩充URL即可。即

之类的东西
http://${DOMAIN}/${PDF_GENERATOR}/${DESIRED_FILENAME}

在HTTP服务器中添加重写规则以简单地省略文件名部分并重定向到

http://${DOMAIN}/${PDF_GENERATOR}

HTTP客户端看不到它,它看到的是一些以"文件名"结尾的URL,它可以将用户显示为保存的默认值。