格式化文档以便在网络上查看是一件艰巨的事情。问题是,每个浏览器都以不同的方式处理文档。让我们假装你有一个文件使用HTML5嵌入文档你想嵌入到你的网站。你在你的电脑上测试它,它的效果非常好!你在同志的电脑上测试一切,一切都按照原样工作。您甚至可以在不同的浏览器(如GoogleChrome,InternetExplorer10,Firefox和Safari)中进行测试。到目前为止,事情似乎相当不错。
那么不是那么快
尽管您的文档迄今已经在您测试的浏览器上可见,但无法保证访问您的站点的访问者将能够以您认为可能的方式查看文档。这可能有很多原因。也许他们的浏览器不支持PDF嵌入。也许他们的浏览器阻止PDF文件的预览。也许他们没有最新的“必须许可”?AdobePDFPreviewerMegaViewerPluginVersion2.23。
解决办法是什么?
在芊雅企服,我们遇到了这个确切的问题。我们如何嵌入文件,包括不同类型的文档,并确保最大比例的访问者能够查看这些文档?做了一些研究后,似乎HTML5一代就是走了。将文档转换为HTML5,并且可以在任何支持HTML5的设备上查看。这包括难以捉摸和令人垂涎的移动设备市场。但是,如何将文档转换为HTML5?这是一个棘手的问题,因为有许多不同的技术支持各种格式,如AdobePDF文件和MicrosoftWord文档。
狩猎周围的interwebs,我们偶然发现一个非常有趣的服务叫鳄鱼。事实证明,Crocodoc被Box收购,他们正在开发一种称为BoxViewAPI的新型HTML5文档生成服务,这就是我们的旅程开始。
我们惊人的新客户Jurify需要在他们的Drupal网站上显示文档预览的能力。他们有数以千计的AdobePDF和MicrosoftWord格式的文档。解决方案是将BoxViewAPI与Drupal集成。当时没有为API制作的Drupal模块或PHP库。什么是渴望的开发者呢?当然,创建一个PHP库和Drupal模块!
与第三方API接口的第一步是了解API的工作原理。BoxViewAPI是一个干净,REST风格的Web服务,具有令牌身份验证(nooauth,yay!)。首先,您必须获得一个ViewAPI密钥,您将可以开始上传和预览文档。
使用PHP库
如果您没有Drupal网站,只想使用PHP库,那就很简单了。你需要包含两个类文件,你已经准备好开始玩乐了!
要使用API,您需要设置您的令牌:
您现在可以上传,删除,查看和下载文档。要上传文档,您必须先创建一个新的Box_View_Document:
如果您的文档不可公开访问,则可以使用file_path发送原始文件内容,如下所示:
现在你有了Box_View_Document设置,你可以通过API上传了。确保将API调用包装在try/catch块中,您不需要任何讨厌的未捕获的异常。
现在,您已经上传了文档,Box正在处理它,生成一个HTML5版本的文档。要查看BoxView文档,您必须生成会话。会话是文档预览的短暂链接。一旦它们过期,您将必须生成一个新的会话。使用PHP库,这个过程很轻松。你只需要告诉你想要一个预览,并在某个地方打印会话URL。
现在,您可以使用iframe将此文档嵌入到页面中,也可以链接到文档。
与BoxViewAPI的接口太简单了吧?还有更多的事情你可以做:
使用DRUPAL模块
BoxViewAPIDrupal模块与我们已经讨论过的PHP库集成在一起。您可以下载Drupal模块,也可以下载设置:
>drushenbox_view-y
对于我们的客户,Jurify,我们希望在创建一个附有文档的新节点时生成文档预览。为此,我们开始创建一个自定义模块,以便我们可以挂接到Drupal。首先是利用node_presave钩子:
接下来,您需要检查节点中的文件字段,并上传文件:
现在我们已经上传了我们的文件,我们该怎么办?那么我们可以获取给定文件路径的文档。如果我们要在节点模板上查看文档预览,我们可以简单地使用内置的视图方法:
要在节点模板中显示预览,您必须修改模板以包括:
您也可以链接到文档预览,而不是嵌入它。BoxView模块附带一些预定义的菜单回调,包括视图:
现在,您将脚趾浸入了HTML5文档生成的黑暗世界,随时对此文章发表评论,或者为PHP库/Drupal模块创建一个问题。