网站在线预览 doc、xls、docx、xlsx、pdf 等文件有什么好的方案么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coolair
V2EX    问与答

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

  •  
  •   coolair 2017-05-19 09:16:23 +08:00 7941 次点击
    这是一个创建于 3069 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网上看了一些别人写的项目,很多是转成 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  
    PRO
       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     Solana     5406 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 07:42 PVG 15:42 LAX 00:42 JFK 03:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86