实用指南:文心雕龙:DIFY 工作流驱动的Word自动化生成与规范排版方案

一、完整的 Python 服务代码

from flask import Flask, request, send_file
from docx import Document
from docx.shared import Pt, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
import io
import re  # 新增正则模块,用于识别一级标题
app = Flask(__name__)
class OfficialDocGenerator:
    def __init__(self, data):
        self.data = data
        self.doc = Document()
        self._set_page_style()
    def _set_page_style(self):
        """设置页边距、纸张大小(符合GB/T 9704-2012)"""
        section = self.doc.sections[0]
        section.page_width = Cm(21)  # A4
        section.page_height = Cm(29.7)
        section.left_margin = Cm(2.8)
        section.right_margin = Cm(2.6)
        section.top_margin = Cm(3.7)
        section.bottom_margin = Cm(3.5)
    def _set_font(self, para, font_name="仿宋", size=16, align=WD_ALIGN_PARAGRAPH.LEFT):
        """设置字体(解决中文显示问题)"""
        for run in para.runs:
            run.font.name = font_name
            run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)  # 强制中文显示
            run.font.size = Pt(size)
        para.alignment = align
    def generate(self):
        """生成完整公文"""
        # 1. 发文字号(版头)
        self.doc.add_paragraph()
        self.doc.add_paragraph()
        文号 = self.doc.add_paragraph(self.data["发文字号"])
        self._set_font(文号, align=WD_ALIGN_PARAGRAPH.CENTER)
        # 2. 标题
        self.doc.add_paragraph()
        title = self.doc.add_paragraph(self.data["标题"])
        self._set_font(title,

posted on 2025-10-03 14:09  slgkaifa  阅读(17)  评论(0)    收藏  举报

导航