0

我将 pdf 作为 chatter 文件存储在我们的 SF org 中,它运行良好,除了向用户显示这些 PDF 非常具有挑战性,尤其是在移动设备(例如 ipad)上,我已经找到了一些好的 javascript PDF 查看器,它们会表现在 ipad 上还算不错。挑战在于将 pdf 文件从这些查看者那里传递出去。

它们中的大多数需要本地 pdf 文件才能查看,但也有一些像 google view 这样的 url 会获取 pdf 的 URL,例如 https://docs.google.com/viewer?url=https://urltopdf

pdf 可通过 chatter GET 获得,如下所示: https://cs2.salesforce.com/services/data/v35.0/chatter/files/ {docId}/content?versionNumber=1 当然问题是我需要传入身份验证标头。如果我只是将该 url 传递给 google 查看器,它会因为身份验证而失败,因为它没有传入 Auth 标头。

我尝试了几件事..

  • 在 Google 查看器调用的 Salesforce 中构建了一个代理 API,该 API 调用 chatter,然后将文件返回到 google docs view 问题:自定义 SF API 有 6mb 的限制,这意味着如果 pdf 大于 6mb,它将无法工作!

  • 在 SF 外部构建了一个代理 API(以绕过 6mb 限制),包括一些有趣的方式来持久化身份验证 问题:跳数太多,谷歌查看器没有及时取回数据......它调用外部代理API 然后调用 chatter API,后者必须将 pdf 数据返回到外部代理 API,然后返回到 Salesforce(我知道这很荒谬)。

所以我被困住了.....我认为从 Spring 13 开始,Chatter API 无需任何来自 VF 页面上的 Javascript 的特殊身份验证即可访问。真的吗?从 VF 页面上的 javascript 调用时,此 url 是否可以在没有任何 auth 标头的情况下工作?https://cs2.salesforce.com/services/data/v35.0/chatter/files/ {docId}/content?versionNumber=1 它似乎对我不起作用,并且在通过谷歌查看器时肯定不起作用。

真的很感激任何建议如何做到这一点?谢谢

4

1 回答 1

1

请不要恨我,我正在努力争取一些代表。

您可以在VF页面上查询docid的静态资源并通过ajax请求加载文件。

之后使用 data:image/png;base64 添加到 base64 以将其添加到画布。您还可以在画布上添加下载标签,以便下载或在另一个窗口中打开它,从而为用户提供浏览器 pdf 资源管理器。

如果您使用画布,请在调整大小时小心使用 Safari。如果你得到一个很长的数字,它会在画布上乱七八糟。我在那上面花了几个小时。

我希望这会有所帮助。

于 2016-11-15T12:50:05.527 回答