一、完整的 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,