V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
SaintSeiya
V2EX  ›  程序员

大量 word 办公文件要做在 web 系统里,最后还要生成和原来一样的文件,有没有老哥做过这类需求

  •  
  •   SaintSeiya · 2019-12-12 17:05:21 +08:00 via Android · 4429 次点击
    这是一个创建于 1837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    客户这边有大量的 word 文件,里面的格式不尽相同,都是打印出来填写或勾选的,现在要做无纸化,不过最后还要生成文件并且在系统上可以直接预览和打印,客户对格式要求也挺高,必须要和原来的 word 文件一样,有的还要多个文件合并到一个中。

    现在处理方案是每一份 word 文件都分别写一份填写用的表单,再写一份打印用的 html 页面,但是内容少还可以,有的 word 几十页就难受了, 而且打印出来的和原文件差的挺大。

    想问下有没有老哥做过这类需求的,还望给点建议
    第 1 条附言  ·  2019-12-13 08:53:21 +08:00
    之前是上面的人一致要求这个功能只让前端来做,后端只存数据,刚开始我想用 docxtemplater 这个可以在前端做 word 模板替换,但是插入图片等高级一点的功能是商业收费的,也没有找到其它类似的库,所以将就用现在这种写一份 html 的方式。
    另外客户这边的 word 都是表格填写形式的,每页都是几十个空位要填写,当前打印用的 html 也不好控制表格间距,打印的分页也是有问题的,将表格录入成可填写的表单也要花大量时间。
    多谢各位老哥的回复,我大概有了头绪,这个功能还是要和后端一起搞。
    29 条回复    2019-12-13 11:19:58 +08:00
    lihongjie0209
        1
    lihongjie0209  
       2019-12-12 17:12:27 +08:00   ❤️ 2
    有个想法,web 端通过表单收集填写的信息, 然后后端通过 MS 的技术栈 C#之类的调用 Word 相关的 API 帮客户填好, 最后每个表单都生成一个独立的 Word 文件, 要打印还是要下载都可以
    turan12
        2
    turan12  
       2019-12-12 17:16:55 +08:00   ❤️ 2
    之前特别测试过,连微软自己的 Word Online 创建的文件在有复杂内容都情况下都不可能和 Windows 版本都 Word 保持显示一致。
    Greendays
        3
    Greendays  
       2019-12-12 17:20:37 +08:00   ❤️ 1
    我觉得,如果内容不复杂的话,网页上的内容可以用 markdown 的新式显示,然后借用一些第三方工具把 markdown 转化为 word
    tuean
        4
    tuean  
       2019-12-12 17:22:20 +08:00   ❤️ 1
    之前做过一个不知道合不合适 简单来说就是获取原来的 word 文件的 document.xml (好像是这个名),用 velocity 之类的模板工具将数据替换进去,其中有个坑是勾选这个选项推荐用特殊字符代替,原生的不一定能正常显示,然后通过这个填充好的 xml 文件生成 word,大概率结果比较完美
    afirefish
        5
    afirefish  
       2019-12-12 17:23:44 +08:00   ❤️ 1
    onlyoffice
    ruiyinjinqu
        6
    ruiyinjinqu  
       2019-12-12 17:25:00 +08:00   ❤️ 1
    我们有类似的,前端是写好的 html+css+js,初始化会回显需要的数据,用 form 表单接收数据,用 k-v 的形式存在数据库里,再次打开文件返回数据可以修改,用 freemaker 生成 pdf,可以修改,预览,打印,多个文件合并到是没有做, 极度麻烦。。。
    care
        7
    care  
       2019-12-12 21:22:01 +08:00 via iPhone   ❤️ 1
    sharepoint+office online server,不过搭建起来比较复杂,技术资料也比较少。
    gamexg
        8
    gamexg  
       2019-12-12 21:38:17 +08:00   ❤️ 1
    每个表单都做个模板 word 文件,
    服务端使用 office api 替换模板文件的字段,
    之后可以试试打印为 pdf 显示到前端

    只以前做自动生成 word 报表时本地这么操作过
    没放到服务器上面跑过,不知道是否有其他坑。
    ytmsdy
        9
    ytmsdy  
       2019-12-12 21:42:04 +08:00   ❤️ 1
    ntko
    zjsxwc
        10
    zjsxwc  
       2019-12-12 21:55:50 +08:00 via Android   ❤️ 1
    开下脑洞,
    把 word 变成 jpg 图片背景,
    ocr 定位出可以输入的地方,
    前端就是相当于让客户在定位出的地方输入数据,
    打印就是输入的数据和 jpg 图片叠加
    gowa
        11
    gowa  
       2019-12-13 00:02:09 +08:00 via Android   ❤️ 1
    楼主做企业还是政务应用的。

    文书这块并不难。单纯的 Word 就用 poi 做模板替换就好了。

    不过看你有在线预览和打印 那是 pdf 好点。

    那么就用 freemarker 做模板 itext 渲染吧。 当前就用的这个 .有一个非常棒的解决方案在此

    https://github.com/flyingsaucerproject/flyingsaucer

    另外说一句 多用谷歌 少提问题 。

    有用红心加上不谢
    chinvo
        12
    chinvo  
       2019-12-13 01:21:29 +08:00 via iPhone   ❤️ 1
    这个需求,适合用 C# + COM
    Cryse
        13
    Cryse  
       2019-12-13 02:23:36 +08:00 via Android   ❤️ 1
    只做过生成 PDF…
    springz
        14
    springz  
       2019-12-13 02:41:37 +08:00   ❤️ 1
    ONLYOFFICE ?永中 DCS ?
    springz
        15
    springz  
       2019-12-13 02:43:01 +08:00   ❤️ 1
    只要不是 doc 都好说,docx,带 x 后缀的各个平台都兼容的很好。
    JimiJimi
        16
    JimiJimi  
       2019-12-13 08:43:32 +08:00   ❤️ 1
    NPOI
    renmu
        17
    renmu  
       2019-12-13 08:47:44 +08:00 via Android   ❤️ 1
    弄成 PDF 上传上去吧。随便说一句,上一次逛了一下嘉兴大部分的政务中心,每一个倒都有无纸化系统,就是从来没见人用过,我试了一下,速度非常感人。
    HuHui
        18
    HuHui  
       2019-12-13 08:55:38 +08:00 via Android   ❤️ 1
    不要给自己加需求
    php01
        19
    php01  
       2019-12-13 09:02:44 +08:00   ❤️ 1
    说句实在话,完美还原到 web 上的话,就这一个功能,你可以自己成立公司了,上市倒是希望小,但是被收购的可能性还是很大的
    taotaodaddy
        20
    taotaodaddy  
       2019-12-13 09:04:04 +08:00 via Android   ❤️ 1
    pdf 的话好办不少
    abcbuzhiming
        21
    abcbuzhiming  
       2019-12-13 09:17:14 +08:00   ❤️ 1
    word ? MS Word ?楼主,ms word 是太阳系范围内超级牛逼,没有之一,天上地下,唯我独尊的富文本排版工具。富文本排版工具有多难,建议搜索知乎“有什么产品经理觉得简单但实际超难的需求”。所以,想用第三方系统达到和 word 文档展示一模一样的排版效果的想法,这连微软自己都做不到。

    想用第三方系统生成 word 文档展示(管你是打印还是显示在 web 还是别的啥)并达到和 word 一模一样的效果,是无数傻逼甲方提过的需求,据我所知他们无一例外的把拉出来的翔吃回去了。所以楼主你别头铁了。

    还有楼上好多说转成 pdf 的?我就没见过哪个 pdf 转换工具能完全还原 word 的排版样式的,哪怕是那些吹的震天响的商业转换工具,能还原 80%算你技术先进
    binsys
        22
    binsys  
       2019-12-13 09:29:18 +08:00   ❤️ 1
    我们自己实践方案是根据模板生成 docx 下载,然后客户随便自由打印,这是保留原格式的唯一方法。
    模板制作是个体力活,需要一定技巧。
    zarte
        23
    zarte  
       2019-12-13 09:34:10 +08:00   ❤️ 1
    楼上的老哥都是站着说话不腰疼,这需求楼主一个搞定前端?一个小工作室搞个这个出来老板都发了好吧。
    xwbz2018
        24
    xwbz2018  
       2019-12-13 09:43:44 +08:00   ❤️ 1
    我做过类似的,给楼主参考一下:

    前后端没分离,格式要求没那么严格,就是直接复制 word 里的文字到 ueditor 里,格式也会大致复制过来,然后使用占位符用 freemarker 替换变量,然后用户填写的部分和模板部分分离(可以预览)
    vone
        25
    vone  
       2019-12-13 10:17:11 +08:00   ❤️ 1
    我之前给内部做 OA 的时候,同事也有这个想法。我直接回复他的是你装个 wps 自己编辑就行了,如果不会装,可以联系技术部,我们帮你装。
    nobuger
        26
    nobuger  
       2019-12-13 10:25:21 +08:00   ❤️ 1
    我们现在就有业务需求是网页端填写内容,然后可以生成指定格式的 word 和 PDF,用的就是字段替换,服务器存几十个 word 文档,就是个 KV 替换的操作,没有技术含量。模板制作很麻烦,因为要编 key,维护也很麻烦,模板一改动页面就需要改,服务器模板还需要改,感觉是个笨办法,没找到别的技术支持,静等大神
    gowa
        27
    gowa  
       2019-12-13 10:44:49 +08:00   ❤️ 1
    @abcbuzhiming 不错。微软虽然定放了 openxml 的格式,但是其 office 套件的更新,,其他软件是跟不上的。。

    各种 openOffice 差距大了
    liuzhaowei55
        28
    liuzhaowei55  
       2019-12-13 11:11:44 +08:00 via Android   ❤️ 2
    可以讲一下现在我的做法,基本场景和楼主讲述的差不多。就是先把 word 导出到 PDF,现在格式就已经固定了,然后用 PDF 的表单功能把 PDF 制作为可填写勾选的 PDF,再然后这份制作好的表单 PDF 就可以直接 email 分发使用填写了,如果需要 Web 填写表单然后导出 PDF 功能就需要用到程序开发了,现在用的是 itext 来做的,基本就是这样了。
    iseejun
        29
    iseejun  
       2019-12-13 11:19:58 +08:00   ❤️ 1
    @nobuger 跟这老哥做法一样,做社区银行的时候,就是表单填写,模板替换数据
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   877 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:47 · PVG 05:47 · LAX 13:47 · JFK 16:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.