任何可嵌入的文档查看器

时间:2011-06-14 06:49:17

标签: php cakephp documentviewer

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

我希望我的用户能够查看文档,但不能下载它。 Google文档查看器非常棒,但用户只需将URL插入地址栏并下载文档即可。

无论如何,我可以像读取文档那样与用户分享我的文档吗?

2 个答案:

答案 0 :(得分:5)

首先,您必须了解当用户的浏览器显示某些文件/内容时,它已经在用户的计算机上。它已经下载了。没有神奇的“内容留在服务器上,但用户可以看到它”。数据总是从服务器传输给用户,用户可以将数据留在他的机器上 - 无论如何。

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

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

现有解决方案,即嵌入带有禁用下载选项的幻灯片共享演示文稿。不要试图发明自己的,特别是如果你不想在支持和持续增强的情况下走很长的路。

答案 1 :(得分:1)

我使用google文档查看器坚持以下指南。

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

这仍然不是一种非常安全的方式,但对我来说就是诀窍。