V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
minuo0day
V2EX  ›  程序员

求问 PPT 文件上传后如何在 WEB 端直接打开查看,不下载!

  •  
  •   minuo0day ·
    minuo0318 · 2022-03-31 20:03:28 +08:00 · 3092 次点击
    这是一个创建于 967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PHP 的后台,VUE 的前端,在后台上传 doc\ppt\pdf 的文件,问题是“目前只解决了 PDF 的新标签页打开的问题,但是 DOC 和 PPT 前端 WEB 点击只能下载,不能直接再标签页内直接打开吗?” 跪求大神指点迷津~

    第 1 条附言  ·  2022-04-01 14:41:45 +08:00
    最好在同一个标签页打开,不要跳转新的标签页
    34 条回复    2022-04-07 15:40:39 +08:00
    WinkeyLin
        1
    WinkeyLin  
       2022-03-31 20:08:50 +08:00   ❤️ 1
    调用微软的 Office 在线预览服务: http://view.officeapps.live.com/op/view.aspx?src={文件地址}
    minuo0day
        2
    minuo0day  
    OP
       2022-03-31 20:23:37 +08:00
    @WinkeyLin 文件地址在阿里云的 OSS ,刚才试了 2 个,有点慢,不过确实成功了一次,另外一次报错了,查看器这个只能用 OFFICE 官方的么?下载的字眼太明显,客户不太想用户下载
    Coolxiaobai
        3
    Coolxiaobai  
       2022-03-31 21:27:18 +08:00
    web 服务器是 nginx 么,可以强制配置返回浏览器类型为 text/html 来处理
    crystom
        4
    crystom  
       2022-03-31 21:29:01 +08:00
    可用转 pdf 再预览,不过也不保证效果,蹲下面有没有更好的方案
    Quarter
        5
    Quarter  
       2022-03-31 21:33:37 +08:00 via iPhone
    onlyoffice 试试呢🥱
    Coolxiaobai
        6
    Coolxiaobai  
       2022-03-31 21:42:08 +08:00
    https://sm.ms/image/CBek3tK6PZuFUnm
    浏览器会依据这个返回的 header 处理资源吧,我理解,只要把这个返回的处理下就可以,处理成流就变成下载,处理成 application/pdf 就可以直接看
    Howlaind
        7
    Howlaind  
       2022-03-31 21:51:43 +08:00 via Android
    Collabora Online
    rodrick
        8
    rodrick  
       2022-03-31 22:46:56 +08:00
    office 在线预览感觉市面上就没几个特别完美的解决方案
    sumulige
        9
    sumulige  
       2022-03-31 23:02:43 +08:00
    一般都是 open office 转 pdf
    ZhanGuang01
        10
    ZhanGuang01  
       2022-03-31 23:21:00 +08:00
    chrome 好像不支持直接预览 ppt ,需要安装扩展才可以
    rekulas
        11
    rekulas  
       2022-03-31 23:35:05 +08:00
    最接近原生的方法就是直接对接原生,用 saas 的思想去开发
    例如类似 https://neverinstall.com/ 的技术
    这是我在网页上操作远程 brave 浏览器的视频,完全一模一样
    https://streamja.com/q5WJ1

    当然,这个属于额外功能,跟客户说要加钱
    Osk
        12
    Osk  
       2022-04-01 00:19:06 +08:00
    服务器上存原 word/ppt 方案:
    微软的 Office Server:

    Only Office:


    - 免费, 但限制 20 个连接
    buliugu
        13
    buliugu  
       2022-04-01 00:28:18 +08:00
    免费方案 kkfileview
    iyaozhen
        14
    iyaozhen  
       2022-04-01 00:28:24 +08:00
    你这叫在线预览服务

    国内几乎只能选择 WPS ,找他们掏钱吧。
    Osk
        15
    Osk  
       2022-04-01 00:29:02 +08:00
    不好意思发错了:

    服务器上存原 word/ppt 方案:
    微软的 Office Server:
    - 需要 Windows Server 和 Office Server 的两重授权, 价格想好哦, 你就可以搭建类似于一楼的那种 Office 在线预览服务了. 看过成品, 似乎是可以没有下载按钮的.

    Only Office:
    - 社区版只有 20 个连接被允许. 你需要尝试修改后自己编译 (贼麻烦), 或者买授权.
    - 中文字体名称问题老问题了.
    - 文档兼容性尚可.
    - 似乎也可以控制仅预览, 阻止下载和打印.

    Collabora Online:
    没用过不知道, 但文档兼容性一团糟 (网上评价的).

    WPS:
    没有了解过.


    在线预览都有一个大问题: 基本都需要占用不少的服务器资源来支撑 Office 后端.


    另一种做法: 将用户的 word/ppt 在后端转换成 pdf 或者图片, 这样就不用浪费资源区搭建 office 后端.
    Windows 可以使用微软的 office server 生成 pdf, 但不知到有没有这功能.
    利用 Office 桌面版 /wps 桌面版的 COM 接口, 来自动化转换为 pdf 格式(不推荐, 处理用户上传的文件容易出现安全风险).
    Linux 服务器上使用 LibreOffice 来命令行转换为 PDF, 但缺点还是那个: 兼容性堪忧.


    没亲自用过, 但折腾 next cloud 时特地了解过.
    jack80342
        16
    jack80342  
       2022-04-01 00:30:45 +08:00 via iPhone
    minuo0day
        17
    minuo0day  
    OP
       2022-04-01 08:56:20 +08:00
    @Quarter 有限制,之前考虑过,客户文件量比较大
    minuo0day
        18
    minuo0day  
    OP
       2022-04-01 08:57:56 +08:00
    @Coolxiaobai 同样的,免费版有广告,而且每个月的上传量比较大,客户想白嫖,我们也没有收这个付费的钱
    minuo0day
        19
    minuo0day  
    OP
       2022-04-01 08:59:57 +08:00
    @rekulas 客户想白嫖,加钱已经无望了,当时的需求清单也写了“支持上传文档课件进行预览”,但没有写清只能限制 pdf ,以后可得长点心,功能清单这玩意还得写的详细一些
    minuo0day
        20
    minuo0day  
    OP
       2022-04-01 09:00:56 +08:00
    @Osk 感谢大神,您这些方案都有尝试,文件数量是个问题,费用也是个大问题
    minuo0day
        21
    minuo0day  
    OP
       2022-04-01 09:01:22 +08:00
    @iyaozhen 尝试问过了,不太行的通
    minuo0day
        22
    minuo0day  
    OP
       2022-04-01 09:03:46 +08:00
    @buliugu
    @jack80342 这是个新大陆,我去研究下
    seakingii
        23
    seakingii  
       2022-04-01 10:32:43 +08:00
    你说了,需求只是"预览",我的理解是,可以在上传文件后直接生成一个对应的 PDF 文件或者一堆的 JPEG 图片,供预览即可.

    OFFICE 文件直接 WEB 打开要效果好,一般都是收费的.
    minuo0day
        24
    minuo0day  
    OP
       2022-04-01 14:40:12 +08:00
    @seakingii 文件数量比较多,这两种方案是最先试的,ppt 到 pdf 会错乱,ppt 到图片数量太大,实现没问题,效果很堪忧。
    minuo0day
        25
    minuo0day  
    OP
       2022-04-01 14:43:35 +08:00
    @Coolxiaobai 直接转 PDF 会将 PPT 中的课件样式错乱
    iyaozhen
        26
    iyaozhen  
       2022-04-01 15:52:53 +08:00
    @minuo0day 为啥?钱的原因?之前有业务做过这块,要预览还得 WPS ,要协同编辑最好还是微软,但都贵
    seakingii
        27
    seakingii  
       2022-04-01 16:23:07 +08:00
    @minuo0day

    图片数量太大?这算什么问题?你是想什么成本 都不付出么?
    davin
        28
    davin  
       2022-04-01 16:30:12 +08:00
    建议分成两个链接,一个用来下载,一个用来显示,用来显示的链接需要转换下格式。既然都用人家的 OSS 了,索性也直接用别人的文档格式转换功能吧,可能是付费的。其他的服务不能确保是否稳定或者有法律风险呢!
    Osk
        29
    Osk  
       2022-04-01 22:54:21 +08:00
    @minuo0day 没救了, 收拾东西跑路吧. /狗头 /

    ppt 转 pdf 是用的哪个方案呢, 似乎 wps 和 office 的转换效果还算可以啊
    minuo0day
        30
    minuo0day  
    OP
       2022-04-06 09:13:18 +08:00
    @seakingii 不是的,是文档数量多,转成图片后图片数量也就非常多了,这样的话,存储也得增加,前端一直在调用图片也会对流畅度造成困扰
    minuo0day
        31
    minuo0day  
    OP
       2022-04-06 09:13:53 +08:00
    @Osk [早就想这么干了] ,不行啊,还是得坚守
    seakingii
        32
    seakingii  
       2022-04-06 17:05:24 +08:00
    @minuo0day 就算你不直接转成图片,你用其它的第三方的预览服务,也会转成类似图片的(放在临时目录里).所以说这个空间和流量你是省不了的.

    如果不预先生成缓存起来,每次打开文件才去解析,然后通过某种方式(比如直接操作画布)显示出内容,那对服务器的 CPU 之类的压力也是承担不起的.

    前端一直调用图片对流畅度造成困扰?这是什么意思?客户端每次不需要加载太多图片,一次要加载的前后几页,图片用 CDN 加速,做压缩.
    minuo0day
        33
    minuo0day  
    OP
       2022-04-07 09:13:12 +08:00
    @seakingii 不是我想省钱,服务器在甲方手里,甲方抠,一直压着我们想解决方法,你这个方法我们是最早提出的方案,图片我们用 redis 做的缓存,被甲方否了。
    seakingii
        34
    seakingii  
       2022-04-07 15:40:39 +08:00
    @minuo0day 对方这限制那限制,又不肯花钱,难了.

    你这样,把所有的方案做个文档,提交给你的领导和对方,让他们选择.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1113 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:49 · PVG 02:49 · LAX 10:49 · JFK 13:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.