【问题标题】:Request PDF via POST using JSON使用 JSON 通过 POST 请求 PDF
【发布时间】:2012-10-30 11:58:48
【问题描述】:

我有一个从 JSON 对象创建 PDF 的 Web 服务。 在我的 Web 应用程序中,我想在浏览器中显示该 PDF。

所以我希望浏览器发送一个使用 Request Content-Type: application/json 和我的 JSON 对象的 POST-Request。

使用 AJAX 调用不会有问题。但是后来我将 PDF 作为字符串,不知道如何将该字符串呈现为 PDF。

另一种可能性是建议浏览器加载 PDF 作为下一页显示。但似乎没有办法修改用于加载页面的请求内容类型。当我使用 Form-Tag 时,Request Content-Type 始终是 application/x-www-form-urlencoded。

我在 Internet 上发现其他人也有同样的问题。但是还没有找到解决办法。 但由于这对我来说似乎是一个标准问题,我无法相信没有解决方案。

有什么想法吗?

【问题讨论】:

  • “从 JSON 对象创建 PDF 的 Web 服务”然后是“我将 PDF 作为字符串” - 那么现在 Web 服务 实际上 创建 PDF 了吗?还是什么?
  • Web 服务创建一个 PDF。但是当我通过 XMLReqeust 获得它时,没有可用的 PDF 特定表示。所以我得到了服务器响应的内容,它是一个 PDF,作为字符串。

标签: javascript json http-headers


【解决方案1】:

您可以尝试使用数据协议(例如 data:application/pdf,base64;ABC....=)将 PDF 数据传递给 window.open;取决于网络浏览器,它可能会也可能不会处理那么长的 URL

另一种方法是将其提供给一些 HTML/JS 库,例如https://github.com/mozilla/pdf.js。也有 Flash 替代品。

【讨论】:

  • 它似乎可以在 Firefox、Chrom、Konqueror 中使用。我还没有签入 Safari。 Internet Explorer 似乎有问题。我不知道为什么。根据msdn.microsoft.com/en-us/library/cc848897%28v=vs.85%29.aspx Internet Explorer 支持数据:但 IE8 有 32KB 的限制。我可以忍受。我会告诉我什么时候解决 IE 问题。
  • Safari 可以处理它。但我必须将它保存到磁盘并将名称更改为 .pdf 才能看到它。光打开链接不行。
  • 我并没有真正弄清楚为什么 Internet Explorer 不喜欢它。维基百科说这是出于安全原因,其他人说外部链接不支持 Data URI Sheme。
猜你喜欢
  • 2017-05-04
  • 2011-05-03
  • 2015-11-03
  • 2022-12-10
  • 1970-01-01
  • 2018-01-16
  • 2019-01-06
相关资源
最近更新 更多