V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

网站在线预览 doc、xls、docx、xlsx、pdf 等文件有什么好的方案么?

  •  
  •   coolair · 2017-05-19 09:16:23 +08:00 · 7587 次点击
    这是一个创建于 2747 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网上看了一些别人写的项目,很多是转成 swf 然后用 Flash 空间去播。
    第 1 条附言  ·  2017-05-19 18:48:50 +08:00
    结合 V2EXer 推荐和测试,总结以下几个方案:
    1、LibreOffice 转格式
    使用 libreoffice --headless --convert-to 将 doc、docx 转换成 pdf,将 xls、xlsx 转成 html。为什么不统一转成 PDF ?
    xls、xlsx 转成 pdf 的时候,格式容易失真,主要有两个方面:
    ( 1 )列数太多的话,会分页。
    ( 2 )单元格间距不能自适应调整到内容高度。
    不知道以上两个问题有没有办法调整参数解决。
    优点:开源、部署方便。
    缺点:格式容易失真,doc 转成 html 基本没法看,转 pdf 的时候里面的表格内容容易错位。总之就是能看,但不好看。

    2、使用永中 DCS
    商业项目,按服务器个数授权。
    优点:效果好,QQ 邮箱、网易邮箱都有使用这套方案。
    缺点:价格比较高。

    3、使用 Office Online Server
    优点:效果好,可在线编辑。网易邮箱有使用这套方案。
    缺点:部署复杂,我现在还没有部署起来。
    43 条回复    2017-05-20 15:54:49 +08:00
    lcatt
        1
    lcatt  
       2017-05-19 09:38:28 +08:00
    doc、xls、docx、xlsx 可以用微软的库或者别人写好的库,pdf 有商业的库 都是用来转换成网页显示(转成 html,和百度文库不一样)的
    samyucn234
        2
    samyucn234  
       2017-05-19 09:41:44 +08:00
    同问有没有开源的项目
    340244120
        3
    340244120  
       2017-05-19 09:43:14 +08:00 via Android
    花钱的 Aspose 免费的 JODConverter 转成 html,pdf 什么的
    chinajik
        4
    chinajik  
       2017-05-19 09:51:50 +08:00
    永中 DCS.web 商业项目,效果不错
    chinajik
        5
    chinajik  
       2017-05-19 09:52:45 +08:00
    之前有想过自己写, 无非是 统一转换成 pdf 然后走 pdf.js
    实际测试效果还可以的
    Tink
        6
    Tink  
       2017-05-19 09:54:30 +08:00
    以前写过转成 pdf 的,然后 flash 读
    ixinshang
        7
    ixinshang  
       2017-05-19 10:15:52 +08:00 via Android
    用过谷歌文档 百会
    coldmn3
        9
    coldmn3  
       2017-05-19 10:20:04 +08:00
    office web apps 缺点是不可定制,页面都是微软生成好的
    pdf 的话在线方案都不是很好,一般都是移动端缓存到本地放
    hpu423
        10
    hpu423  
       2017-05-19 10:28:34 +08:00
    mark
    huangtao728
        11
    huangtao728  
       2017-05-19 10:30:19 +08:00 via Android
    PDF 可以用 pdf.js
    holystrike
        12
    holystrike  
       2017-05-19 10:43:59 +08:00
    我们自己用的是 2 种方案,交叉使用

    1. 用微软 Office 来转,效果是最好最有保障的,缺点是要跑在 windows 下,如果服务器是 linux,则需要做好接口处理。
    2. 用 OpenOffice + unoconv,优点是快,但是缺点是保真兼容有时候会出问题
    paradoxs
        13
    paradoxs  
       2017-05-19 10:48:13 +08:00
    office online
    chinajik
        14
    chinajik  
       2017-05-19 11:03:14 +08:00
    补充 新版的 libreoffice 支持 headless 的, 实际测试转换速度不稳定,ppt 会很慢
    CC2757
        15
    CC2757  
       2017-05-19 11:21:43 +08:00
    1、Office Online Server 搭建麻烦些,但效果很好,兼容性也可以,这个还可以在线编辑。
    2、Flash 那种方式不推荐
    luozhaofu
        16
    luozhaofu  
       2017-05-19 11:30:54 +08:00
    实现你的 pdf 文档在线预览功能

    使用方法:
    将此 js 引入到你的网页中,并将 pdf 修改为你的文档即可
    <script src="http://www.lanrenzhijia.com/ajaxjs/pdfobject.js"></script>
    <script>
    window.onload = function (){
    var myPDF = new PDFObject({ url: "http://demo.lanrenzhijia.com/2014/pdf1023/sample.pdf" }).embed();
    };
    </script>
    说明:js 采用绝对路径,不建议修改,直接调用即可使用
    HerrDu
        17
    HerrDu  
       2017-05-19 11:39:06 +08:00
    微软有可以调用的方法
    zddhub
        18
    zddhub  
       2017-05-19 11:39:12 +08:00 via iPhone
    Box
    wyfyw
        19
    wyfyw  
       2017-05-19 11:55:49 +08:00
    我研究了一下,发现微软的 web viewer,其实有点像是后端 render 成为图片,比如 png ;前面用 js 来处理你选中文本和其他文档元素的效果。如果说得不对,希望大佬赐教、指正!

    如果你想不那么依赖微软这个 web viewer,可以抓一下它 render 的图片。比如我用 https://products.office.com/zh-CN/office-online/view-office-documents-online
    生成 https://calibre-ebook.com/downloads/demos/demo.docx 的 viewer,你用 F12 看一下 Sources,里面有个 ResReader.ashx ...

    当然如果真要抓它的图片,你要研究一下它的用户许可条文。
    liuweisj
        20
    liuweisj  
       2017-05-19 12:09:25 +08:00
    装个 群晖 DSM 6.x 这些功能都有
    20015jjw
        21
    20015jjw  
       2017-05-19 13:01:55 +08:00 via Android
    box
    xycool
        22
    xycool  
       2017-05-19 13:24:29 +08:00
    自己用过以下两种方案,
    1.微软的 Office Web Apps Server
    优:效果最好,还支持多人协作编辑
    缺:部署麻烦,必须要有一台 AD 域服务器,所以至少需要两台服务器才能完成预览功能
    2.转 PDF 之后预览
    优:实现简单,预览速度快
    缺:没办法保证显示效果一样,样式容易丢失

    可以看一下网易邮箱的 office 预览方式,它也是有两种模式,如果微软的那套打开很慢,会提示你用极速模式打开,但是样式可能就没有了。
    xycool
        23
    xycool  
       2017-05-19 13:26:26 +08:00
    @xycool 补充一下,都是 windows 下,用.net 开发。所以其它环境不清楚。
    laxenade
        24
    laxenade  
       2017-05-19 13:33:36 +08:00
    gotounix
        25
    gotounix  
       2017-05-19 16:19:09 +08:00
    永中 DCS 貌似看着挺好,在线试了一下,不知道怎么部署到服务器,没找到 Demo 下载。
    http://www.yozodcs.com/help.html#link11
    XhstormR
        26
    XhstormR  
       2017-05-19 16:25:49 +08:00 via Android
    @gotounix 别人拿来赚钱的,怎么可能轻易就能下载
    coolair
        27
    coolair  
    OP
       2017-05-19 16:59:45 +08:00
    @chinajik
    @holystrike libreoffice+unoconv 转换 xls 怎么保持宽度呢?
    coolair
        28
    coolair  
    OP
       2017-05-19 17:02:05 +08:00
    @xycool 极速模式现在是用的永中的模式,不是转 PDF 了。
    coolair
        29
    coolair  
    OP
       2017-05-19 17:02:48 +08:00
    @CC2757 Office Online Server 这套方案是免费的?
    chinajik
        30
    chinajik  
       2017-05-19 17:22:07 +08:00
    libreoffice 就不用 unoconv 了
    一条命令
    soffice --headless --convert-to pdf *.doc
    具体看
    soffice -h 里面的--convert-to 部分
    chinajik
        31
    chinajik  
       2017-05-19 17:22:17 +08:00
    coolair
        32
    coolair  
    OP
       2017-05-19 17:51:57 +08:00
    @chinajik 谢谢,我用这个命令试了下,命令执行没有输出,没有报错,也没有生成文件,奇怪了。
    Amayadream
        33
    Amayadream  
       2017-05-19 18:01:15 +08:00
    1.office -> pdf -> swf, 然后使用 flash 控件展示, 优点是支持 ie 低版本; 缺点是转换真 tm 麻烦, 而且不支持移动端

    2.office -> pdf, 然后使用 pdf.js 预览, 优点是比较美观, 少了一道转换程序, 缺点是不支持 ie9 以下

    3.使用 Office 提供的 Server, 优点是不用复杂的转换, 缺点是需要部署服务, 个人觉得极其麻烦

    4.使用各种商业产品, 优点是不用操心, 简单; 缺点是需要付费(如果这也算的话)以及保密性问题(可能也不算)
    coolair
        34
    coolair  
    OP
       2017-05-19 18:08:37 +08:00
    @chinajik 找到原因了,用了 unoconv 后,服务启动端口和直接用 soffice --headless 不一致。
    ic2y
        35
    ic2y  
       2017-05-19 18:12:19 +08:00
    qq 邮箱 好像用的永中
    gdsagdada
        36
    gdsagdada  
       2017-05-19 18:51:37 +08:00
    公司还是花点钱买永中顺便看看别家对比试用下,开源的这块做的都不好,复杂的转出来格式都乱了
    xycool
        37
    xycool  
       2017-05-19 19:35:16 +08:00 via iPhone
    @coolair 如果觉得永中贵的话可以看一下 officeweb365 也是一家提供在线预览服务的,之前找预览方案看到他们的。
    markyangd
        38
    markyangd  
       2017-05-19 20:25:39 +08:00
    Office 文件,如果用.net 的话,可以去看看 DevExpress 的控件,Spreadsheet、Rich Edit ; Pdf 可以考虑用浏览器内置的。
    alocne
        39
    alocne  
       2017-05-19 21:57:46 +08:00
    mark
    Exin
        40
    Exin  
       2017-05-19 23:23:23 +08:00
    七牛云有文档预览服务,但速度不是特别快 : (
    mingyun
        41
    mingyun  
       2017-05-19 23:44:59 +08:00
    @luozhaofu nice
    Khlieb
        42
    Khlieb  
       2017-05-20 15:39:50 +08:00 via Android
    LibreOffice Online
    PDF.js
    Khlieb
        43
    Khlieb  
       2017-05-20 15:54:49 +08:00 via Android
    上面这两个都已经加入 ownCloud 里面了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3329 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:16 · PVG 20:16 · LAX 04:16 · JFK 07:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.