V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
itIsUnbelievable
V2EX  ›  问与答

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

  •  
  •   itIsUnbelievable · Jan 3, 2020 · 4905 views
    This topic created in 2320 days ago, the information mentioned may be changed or developed.

    部署在 linux 环境下。

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

    word 弄好之后,在 linux 下装好 libreoffice,然后用这个工具转成 pdf
    Hyseen
        11
    Hyseen  
       Jan 3, 2020
    用 html 模版,再转 pdf
    no1xsyzy
        12
    no1xsyzy  
       Jan 3, 2020
    @chenxj123 那为何不直接写 LibreOffice 宏?替换、转 PDF 一步到位。
    而且用 LaTeX 方便多了,可用 pandoc 从 docx 转成 LaTeX 然后清理。
    chenxj123
        13
    chenxj123  
       Jan 3, 2020
    @no1xsyzy python-docx-template 这个包支持很多 word 格式,而且 python 实现起来很方便,数据从数据库里一取一填就好了。
    其他工具我不知道对 word 的格式支持能到什么程度,反正我之前做的一个自动化报告的项目,里面各种乱七八糟的格式要求,字体,字号,一段文字中间的不同颜色,斜体黑体什么的。还要表格根据数据自动生成相应的行数,没有数据就没有表格,还要插入图片什么的,各种要求吧。
    唯一做不到的就是转 PDF,所以就再找个转 pdf 的工具就好了
    iilxy
        14
    iilxy  
       Jan 3, 2020
    PyFPDF 直接生成 pdf 就行了
    xml123
        15
    xml123  
       Jan 3, 2020
    这个需求直接用 LaTeX 更方便吧,就是需要把模板用 LaTeX 重新写一边。
    no1xsyzy
        16
    no1xsyzy  
       Jan 4, 2020
    @chenxj123 原来是 jinja2
    那直接 jinja2 做出 html 转 PDF 就行了啊,你这是绕一圈
    不过 LaTeX 告诉我们有时绕一圈生成速度快生成文件还小(手动笑哭
    changxiushanwu
        17
    changxiushanwu  
       Jan 4, 2020 via iPhone
    同推荐 python-docx-template,直接生成 word 文档。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1732 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 103ms · UTC 16:19 · PVG 00:19 · LAX 09:19 · JFK 12:19
    ♥ Do have faith in what you're doing.