在 Visualforce 页面中显示 Chatter 文件的 PDF

问题描述 投票:0回答:2

我将 pdf 作为聊天文件存储在我们的 SF 组织中,该组织运行良好,但向用户显示这些 PDF 非常具有挑战性,尤其是在移动设备(例如 ipad)上 我找到了一些优秀的 javascript PDF 查看器,它们在 iPad 上表现得相当好。 挑战在于将 pdf 文件传递给这些查看者。

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

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

我尝试了一些事情..

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

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

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

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

javascript api salesforce salesforce-chatter
2个回答
1
投票

请不要恨我,我正在努力获得一些代表。

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

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

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

希望有帮助。


© www.soinside.com 2019 - 2024. All rights reserved.