如何使用 Python 实现根据用户所填信息填入合同 word 模板,自动生成 pdf 合同? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
itIsUnbelievable
V2EX    问与答

如何使用 Python 实现根据用户所填信息填入合同 word 模板,自动生成 pdf 合同?

  •  
  •   small class="gray">itIsUnbelievable 2020-01-03 11:33:03 +08:00 4474 次点击
    这是一个创建于 2107 天前的主题,其中的信息可能已经有所发展或是发生改变。

    部署在 linux 环境下。

    17 条回复    2020-01-04 07:51:24 +08:00
    a719114136
        1
    a719114136  
       2020-01-03 11:54:30 +08:00
    用图片吧,然后就是在 pdf 里插图片
    itIsUnbelievable
        2
    itIsUnbelievable  
    OP
       2020-01-03 12:07:12 +08:00
    @a719114136 把 word 转成图片吗?我随便搜了一下好像没看到实现的方法,而且转图片排版也有问题吧
    k8ser
        3
    k8ser  
       2020-01-03 12:34:56 +08:00
    {} 模板 读成字符串 format 不就行了?
    renmu
        4
    renmu  
       2020-01-03 12:37:27 +08:00 via Android
    直接写成 PDF 可能倒比写到 Word 再转更方便
    a719114136
        5
    a719114136  
       2020-01-03 12:50:11 +08:00 via Android
    @itIsUnbelievable 模板就直接用图片,然后在图片上添加文字
    ddd2500
        6
    ddd2500  
       2020-01-03 12:54:47 +08:00
    使用 html 模板吧, 再转 pdf 感觉比较简单
    CallMeReznov
        7
    CallMeReznov  
       2020-01-03 13:03:06 +0800
    用 flask 写个页面,然后把你的 WORD 格式在 HTML 模板里做好
    最后用转成 PDF.
    virusdefender
        8
    virusdefender  
       2020-01-03 13:08:52 +08:00
    直接写 pdf 或者 html 转 pdf 或者 LaTeX 转 pdf 会更简单点
    chenxj123
        9
    chenxj123  
       2020-01-03 13:13:38 +08:00
    chenxj123
        10
    chenxj123  
       2020-01-03 13:17:21 +08:00   1
    python-docx-template
    可以用这个包,事先用 word 做好模板

    word 弄好之后,在 linux 下装好 libreoffice,然后用这个工具转成 pdf
    Hyseen
        11
    Hyseen  
       2020-01-03 14:41:25 +08:00
    用 html 模版,再转 pdf
    no1xsyzy
        12
    no1xsyzy  
       2020-01-03 15:53:49 +08:00
    @chenxj123 那为何不直接写 LibreOffice 宏?替换、转 PDF 一步到位。
    而且用 LaTeX 方便多了,可用 pandoc 从 docx 转成 LaTeX 然后清理。
    chenxj123
        13
    chenxj123  
       2020-01-03 17:56:09 +08:00
    @no1xsyzy python-docx-template 这个包支持很多 word 格式,而且 python 实现起来很方便,数据从数据库里一取一填就好了。
    其他工具我不知道对 word 的格式支持能到什么程度,反正我之前做的一个自动化报告的项目,里面各种乱七八糟的格式要求,字体,字号,一段文字中间的不同颜色,斜体黑体什么的。还要表格根据数据自动生成相应的行数,没有数据就没有表格,还要插入图片什么的,各种要求吧。
    唯一做不到的就是转 PDF,所以就再找个转 pdf 的工具就好了
    iilxy
        14
    iilxy  
       2020-01-03 21:10:51 +08:00
    PyFPDF 直接生成 pdf 就行了
    xml123
        15
    xml123  
       2020-01-03 23:50:13 +08:00
    这个需求直接用 LaTeX 更方便吧,就是需要把模板用 LaTeX 重新写一边。
    no1xsyzy
        16
    no1xsyzy  
       2020-01-04 01:59:57 +08:00
    @chenxj123 原来是 jinja2
    那直接 jinja2 做出 html 转 PDF 就行了啊,你这是绕一圈
    不过 LaTeX 告诉我们有时绕一圈生成速度快生成文件还小(手动笑哭
    changxiushanwu
        17
    changxiushanwu  
       2020-01-04 07:51:24 +08:00 via iPhone
    同推荐 python-docx-template,直接生成 word 文档。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2899 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 13:49 PVG 21:49 LAX 06:49 JFK 09:49
    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