coolair
V2EX  ›  问与答

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

  •  
  •   coolair · May 19, 2017 · 9075 views
    This topic created in 3456 days ago, the information mentioned may be changed or developed.
    网上看了一些别人写的项目,很多是转成 swf 然后用 Flash 空间去播。
    Supplement 1  ·  May 19, 2017
    结合 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 replies  •  2017-05-20 15:54:49 +08:00
    lcatt
    lcatt
    May 19, 2017
    1
    doc、xls、docx、xlsx 可以用微软的库或者别人写好的库,pdf 有商业的库 都是用来转换成网页显示(转成 html,和百度文库不一样)的
    samyucn234
    samyucn234
    May 19, 2017
    2
    同问有没有开源的项目
    340244120
    340244120
    May 19, 2017 via Android
    3
    花钱的 Aspose 免费的 JODConverter 转成 html,pdf 什么的
    chinajik
    chinajik
    May 19, 2017
    4
    永中 DCS.web 商业项目,效果不错
    chinajik
    chinajik
    May 19, 2017
    5
    之前有想过自己写, 无非是 统一转换成 pdf 然后走 pdf.js
    实际测试效果还可以的
    Tink
    Tink
    May 19, 2017
    6
    以前写过转成 pdf 的,然后 flash 读
    ixinshang
    ixinshang
    May 19, 2017 via Android
    7
    用过谷歌文档 百会
    coldmn3
    coldmn3
    May 19, 2017
    9
    office web apps 缺点是不可定制,页面都是微软生成好的
    pdf 的话在线方案都不是很好,一般都是移动端缓存到本地放
    hpu423
    hpu423
    May 19, 2017
    10
    mark
    huangtao728
    huangtao728
    May 19, 2017 via Android
    11
    PDF 可以用 pdf.js
    holystrike
    holystrike
    May 19, 2017
    12
    我们自己用的是 2 种方案,交叉使用

    1. 用微软 Office 来转,效果是最好最有保障的,缺点是要跑在 windows 下,如果服务器是 linux,则需要做好接口处理。
    2. 用 OpenOffice + unoconv,优点是快,但是缺点是保真兼容有时候会出问题
    paradoxs
    paradoxs
    May 19, 2017
    13
    office online
    chinajik
    chinajik
    May 19, 2017
    14
    补充 新版的 libreoffice 支持 headless 的, 实际测试转换速度不稳定,ppt 会很慢
    CC2757
    CC2757
    May 19, 2017
    15
    1、Office Online Server 搭建麻烦些,但效果很好,兼容性也可以,这个还可以在线编辑。
    2、Flash 那种方式不推荐
    luozhaofu
    luozhaofu
    May 19, 2017
    16
    实现你的 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
    HerrDu
    May 19, 2017
    17
    微软有可以调用的方法
    zddhub
    zddhub
    May 19, 2017 via iPhone
    18
    Box
    wyfyw
    wyfyw
    May 19, 2017
    19
    我研究了一下,发现微软的 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
    liuweisj
    May 19, 2017
    20
    装个 群晖 DSM 6.x 这些功能都有
    20015jjw
    20015jjw
    May 19, 2017 via Android
    21
    box
    xycool
    xycool
    May 19, 2017
    22
    自己用过以下两种方案,
    1.微软的 Office Web Apps Server
    优:效果最好,还支持多人协作编辑
    缺:部署麻烦,必须要有一台 AD 域服务器,所以至少需要两台服务器才能完成预览功能
    2.转 PDF 之后预览
    优:实现简单,预览速度快
    缺:没办法保证显示效果一样,样式容易丢失

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

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

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

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