在Visualforce页面

时间:2016-11-14 19:25:40

标签: javascript api salesforce salesforce-chatter

我在我们的SF org中存储pdf作为聊天文件,除了向用户显示这些PDF是非常具有挑战性的事实,特别是在移动设备(例如ipad)上 我已经找到了一些好的javascript PDF查看器,它们在ipad上的表现相当不错。 挑战在于向这些观众提供pdf文件。

他们中的大多数都需要本地pdf文件才能查看,但有一些像谷歌视图,它将获取PDF格式的网址,例如 https://docs.google.com/viewer?url=https://urltopdf

pdf可通过聊天GET获取,如下所示: https://cs2.salesforce.com/services/data/v35.0/chatter/files/ {的docId} /内容?VERSIONNUMBER = 1 问题是我需要传递一个身份验证标头。如果我只是将该网址传递给Google观看者,则因为身份验证而无法传入Auth标头,因此无法通知该网址。

我尝试了一些事情......

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

  • 在SF外部构建一个代理API(以达到6mb的限制),包括一些有趣的方法来保持身份验证 问题:有太多的跃点,谷歌浏览器没有及时收回数据...它调用外部代理API,然后调用聊天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} /内容?VERSIONNUMBER = 1 它似乎不适合我,并且通过谷歌浏览器肯定不会工作。

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

1 个答案:

答案 0 :(得分:1)

请不要恨我,我想找个代表。

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

之后就是使用数据的问题:将image / png; base64添加到base64中,将其添加到画布中。您还可以向画布添加下载标签,以便下载或在另一个窗口中打开它将为用户提供浏览器pdf explorer。

如果使用画布,请在调整大小时小心Safari。如果你得到一个非常长的数字,它将在画布上扯掉。我在那个上花了几个小时。

我希望有所帮助。