大量 word 办公文件要做在 web 系统里,最后还要生成和原来一样的文件,有没有老哥做过这类需求 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
SaintSeiya
V2EX    程序员

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

  •  
  •   SaintSeiya 2019-12-12 17:05:21 +08:00 via Android 4919 次点击
    这是一个创建于 2180 天前的主题,其中的信息可能已经有所发展或是发生改变。
    客户这边有大量的 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
    不要给自己加需求
    anteros
        19
    anteros  
       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  
       201912-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     Solana     1058 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:37 PVG 07:37 LAX 15:37 JFK 18:37
    Do have faith in what you're doig.
    ubao msn 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