【问题标题】:Displaying REST API response as inline pdf (not downloaded file)将 REST API 响应显示为内联 pdf(未下载的文件)
【发布时间】:2017-01-02 23:13:18
【问题描述】:

我正在使用 force.com,我必须在页面中嵌入一个 chatter pdf 文件(不是作为下载文件)。我没有指向 pdf 的直接访问链接,获取文件本身的唯一方法是通过对 eg 的休息调用

/services/files/fileid/内容

这将返回二进制 pdf 数据,然后我想将其嵌入网页中。 基于各种 Stack Overflow 答案,我得到了一些好主意,如何做到这一点,并且 pdf 在页面中打开,除了它是空白的 - 即它没有内容。它的页数正确,但没有显示文本。

如果我在此请求发生时运行 fiddler,然后将响应保存为文件,则 pdf 看起来很棒。但是由于某种原因,对 ajax 请求的响应并被传递到浏览器并不好。我怀疑这与我需要进行的某种编码有关,以便将 pdf 数据正确地传送到浏览器。

非常感谢这里的任何建议甚至不同的方法 - 尝试了许多不同的方法,这是我得到的最接近的方法,但又被阻止了。

这是我进行 API 调用并在浏览器中显示的代码:

$.ajax({
url: "/services/data/v35.0/chatter/files/069R0000000O8reIAC/content?versionNumber=1",
headers: {"Authorization": "OAuth xxxxxxxxxxxx"},
contentType: "application/pdf",
success: function(data) 
{ 
    
      var blob = new Blob([data], {type: "application/pdf"});
      window.open(URL.createObjectURL(blob));     

},
 type: 'GET'
});

这会打开一个如下所示的页面:(注意:它的页数正确)

即使当我查看该请求的提琴手并将响应正文保存为文件时,pdf 也很好!

【问题讨论】:

  • 嘿,我遇到了同样的问题。你碰巧知道你的原因吗?谢谢

标签: ajax rest pdf content-type


【解决方案1】:

不仅将 ContentType 包含为“application/pdf”,还将 ContentDisposition 包含为“inline”。

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2017-04-17
    • 2020-12-18
    • 2021-09-21
    • 2016-11-26
    • 1970-01-01
    相关资源
    最近更新 更多