Skip to main content

用Python轻松生成符合政府机关常用排版格式的docx文件!

Project description

cn-gov-docx

PyPI version Python

Project Logo

一个基于 python-docx 的中文公文 Word(.docx)生成工具,用于快速生成符合政府机关常见排版规范的文档结构。

本项目目标是提供一套稳定、可复用的公文排版生成层,减少重复排版工作。


功能特点

  • 自动生成 A4 公文版式(页边距已预设)
  • 内置中文公文常用字体规则
  • 支持标题 / 分级标题 / 正文结构
  • 自动处理首行缩进与行距
  • 封装常用 Word 样式设置逻辑
  • 基于 python-docx,无复杂依赖

安装

pip install cn-gov-docx

快速开始

from cn_gov_docx import CnGovDocx

doc = CnGovDocx()

doc.add_title("关于推进重点工作的通知")

doc.add_h1("一、总体要求")
doc.add_text("这里是正文内容,用于测试公文排版效果。")

doc.add_h2("(一)工作目标")
doc.add_text("继续补充正文内容。")

doc.save("output.docx")

默认排版规则

页面设置(A4)

  • 上边距:3.7 cm
  • 下边距:3.5 cm
  • 左边距:2.8 cm
  • 右边距:2.6 cm

字体规范

类型 字体
标题 方正小标宋简体
一级/二级/三级标题 黑体
正文 仿宋_GB2312

正文格式

  • 字号:16pt(接近三号)
  • 行距:28pt
  • 首行缩进:2字符
  • 对齐方式:两端对齐

API

CnGovDocx()

创建文档实例。

doc = CnGovDocx()

add_title(text)

添加居中主标题。

doc.add_title("标题")

add_h1(text)

添加一级标题,同样的还有二、三级标题。

doc.add_h1("一级标题")
doc.add_h2("二级标题")
doc.add_h3("三级标题")

add_text(text, indent_first_line=True, remove_newlines=True)

添加正文内容。

doc.add_text("正文内容")

参数

  • indent_first_line:是否首行缩进(默认 True
  • remove_newlines:是否移除换行并合并为单段(默认 True

针对remove_newlines的说明

Python 三引号换行通常用于代码可读性,不代表真实段落结构。该参数用于区分“格式化换行”与“真实排版结构”。

True(默认)
  • 忽略所有换行符(含 """...""" 内换行)
  • 合并为单一段落
  • 用于公文正文标准排版
False
  • 保留原始换行结构
  • 每行按原样写入文档
  • 可能形成多段或显式换行

save(path)

保存文件。

doc.save("result.docx")

使用说明(重要)

1. 字体依赖

本项目依赖系统字体:

  • 方正小标宋简体
  • 黑体
  • 仿宋_GB2312

如果系统缺失字体,Word 会自动替换字体,可能导致排版不一致。


2. 适用范围

适用于:

  • 政府公文格式草稿
  • 国企/事业单位文书
  • 标准化报告生成
  • 批量文档生成场景

不适用于:

  • 精确符合某地区红头文件模板(需二次定制)
  • 复杂 Word 版式设计
  • 非中文排版场景

依赖

  • python-docx >= 1.1.0 (别的版本没有测试)
  • lxml >= 5.0

未来计划

  • 支持图片插入
  • 更严格的 GB/T 9704 对齐

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cn_gov_docx-0.2.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cn_gov_docx-0.2.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file cn_gov_docx-0.2.0.tar.gz.

File metadata

  • Download URL: cn_gov_docx-0.2.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cn_gov_docx-0.2.0.tar.gz
Algorithm Hash digest
SHA256 79f39f701b688f9120ee3d51524488642852776433b21bec0dcde52b866cbb88
MD5 2114b4fa670f29d7c13d784ed675cc1d
BLAKE2b-256 7a0f948ace6321667db53a40b7a5b0ef8e6d097d9b202ffa9a2008f4b1ee8e66

See more details on using hashes here.

File details

Details for the file cn_gov_docx-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: cn_gov_docx-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for cn_gov_docx-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 abb9460e687b9f76877d6fe5358ec90e56c82010d1b2a782babd2d5b64abb03d
MD5 1236c9f404cc476411397a2dd79df55c
BLAKE2b-256 cc4c4d8e4c7fb289148df6aaf572e900f5defbd3ad27d8372c4d339699c77e1e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page