任何可嵌入的文档查看器


Any Embeddable Document Viewer

我希望在我的CakePHP应用程序中为上传的文档添加一个文档查看器。我想要一个支持Microsoft Word(.DOC和.DOCX)、Microsoft PowerPoint(.PPT和.PPTX)和Adobe可移植文档格式(.PDF)的查看器。

我希望我的用户能够查看文档,但不能下载。谷歌文档查看器很棒,但用户只需将URL插入地址栏即可下载文档。

我是否可以像可读文档一样与用户共享我的文档?

首先,您必须明白,当用户的浏览器显示某些文件/内容时,它已经在用户的机器上了。它已经被下载了。没有神奇的"内容留在服务器上,但用户可以看到"。数据总是从服务器传输到用户,用户可以通过某种方式将数据留在自己的机器上。

如果你理解这一点,你有几个选择:

  • 您不关心用户是否拥有该文件。这是最明智的选择。所有其他方法都是用户讨厌的某种"DRM"
  • 仅将用户应看到的数据传输到浏览器:
    • 生成用户正在查看的文档部分的图像,并将其发送到浏览器。用户没有文本数据,需要进行多次请求才能下载所有文档
    • 编写一个浏览器插件(java、flash、javascript),从服务器读取加密的文档,对其进行解密(同样,在用户的机器上,这意味着他可以窥探文档)并将其显示出来。这样,用户不仅可以获得文档,还需要解密文档

有现有的解决方案,即嵌入幻灯片放映演示文稿禁用下载选项。不要试图发明自己的,尤其是如果你不想在支持和持续增强方面走很长的路的话。

我使用谷歌文档查看器遵循以下准则。

  • 每次为文档生成随机URL地址(使用服务器端脚本和htaccess。我使用的是PHP&htaccess)。这不会让任何人直接访问该文件
  • 使用URL对时间和日期进行编码(通过使用任何服务器字符串编码脚本),以便文件只能在特定时间内访问(比如说5分钟)
  • 仅通过匹配Google文档查看器用户代理来输出文件。这只会让谷歌文档查看器访问该文件,而不会让其他人访问,即使他们在浏览器中键入该地址

这仍然不是一种非常安全的方式,但对我来说很有用。