Catalog PyPI
Back to packageRELEASE DETAILS

3.0.0

PyPI

acks-office

面向 AI Agent 的 Python 办公工具:生成、读取 Word / Excel / PPT / PDF,提供 CLI、doctor 和技能包;格式转换需 LibreOffice。

ai-agentdesign-systemdocument-generationdocxexcelofficepdfpowerpointpptxskillwordxlsx办公自动化
Published10 Oct 2026
Direct dependencies13
Transitive dependenciesNot calculated

README

Version 3.0.0 documentation

ACKS Office Suite Simplify

中文 · English

面向 AI Agent 和 Python 程序的办公文档引擎:按主题生成 Word / Excel / PPT / PDF,读取、转换、加水印、合并, 提供命令行、环境检查和技能包。 A document engine for AI agents and Python: themed Word / Excel / PowerPoint / PDF generation, plus reading, conversion, watermarking and merging, with a CLI, an environment check and an agent skill.

文档对应版本:3.0.0。GitHub 与 PyPI 使用本文件作为项目说明;历史版本的说明随发行包保留。

tests Python Platform License

中文

由 ACKS Studio 出品。安装包名 acks-office,导入名 acks_office。 生成与读取文件由 Python 库完成,不需要 Microsoft Office 或 WPS;格式转换需要 LibreOffice。 从 2.x 升级请先看迁移指南。

当前能力

格式 / 入口已实现范围与条件
主题内置 neutral(默认)、slate(商务)、folio(杂志);自建主题、校验、HTML 样张主题决定配色、字体、字号、版式与页眉页脚,四种格式共用
Word .docx封面(标题块 / 独立封面 / 期刊封面)、编号标题或章节页、分栏与首字下沉、表格、提示块、引文、代码、图片;提取正文与表格;合并、水印写入字体名称,缺字体时用本机备选字体并提醒 FONT_SUBSTITUTED
PDF引擎直接排版,版式与 Word 一致,字体嵌入文件;提取文字、合并、水印;Python API 按页拆分只能嵌入 TrueType 字体;都找不到时中文由阅读器替换显示(FONT_NOT_EMBEDDED);扫描件需外部 OCR
PPT .pptx封面、章节页、内容页、数据页(关键数字 + 条形图)、表格页、大数字页、引文页、图片页;文字提取;Python API 添加切换效果标题按实际字宽自动缩放;版式随主题变化
Excel标题行、表头与合计行样式、数字格式与负数色、多张工作表与图表;读取 .xlsx / .xls公式由打开文件的软件计算(自动生成的合计行除外)
convert委托 LibreOffice 转换文件,如 DOCX → PDF转换方向取决于引擎的导入 / 导出过滤器
doctor只读检查 Python、依赖、字体(按主题)、LibreOffice、宿主线索,给出补齐计划不执行安装;其他 Office 程序只检测、不调用
扩展SMTP 邮件、批量操作、顺序执行工作流配置在已弃用的 OfficeSuite 上,4.0 前保留

直接读取支持 .docx、.pdf、.pptx、.xlsx、.xls。旧版 .doc / .ppt 可先交给 LibreOffice 转换。

安装与升级

推荐在专用虚拟环境中从 PyPI 安装(Python 3.10 或更高):

python -m pip install acks-office==3.0.0
acks-office doctor --json

升级到最新发行版:python -m pip install --upgrade acks-office。下载主题用到的开源字体需要字体可选依赖:

python -m pip install "acks-office[fonts]==3.0.0"
acks-office fonts install --theme slate --system

各系统虚拟环境、依赖、字体和 LibreOffice 的准备步骤见 安装指南。 也可从 GitHub Release 下载 wheel 或技能包。

Agent 技能

技能包由 SKILL.md、Python 入口脚本和程序代码组成,供支持技能规范及本地命令执行的 Agent 使用。

  1. 从 GitHub Release 下载 acks-office-skill-3.0.0.zip,解压到宿主技能目录,得到 acks-office/SKILL.md。 Claude Code、Codex、OpenClaw、WorkBuddy、Hermes 的目录示例见安装指南。
  2. Agent 运行 scripts/acks.py doctor --json,说明补齐计划并取得用户同意后,安装依赖到专用虚拟环境。

技能包含程序代码;依赖与字体的安装由 Agent 或用户在征得同意后执行,脚本本身不会自动安装。

命令行

子命令:create、extract、convert、watermark、merge、theme、fonts、doctor、version。 输入格式(front matter、幻灯片、Excel 数据)见 命令参考。

acks-office create word -o 报告.docx --content-file 正文.md --theme slate
acks-office create pdf -o 报告.pdf --content-file 正文.md --theme slate
acks-office create pptx -o 汇报.pptx --slides-file slides.json --theme folio
acks-office create excel -o 数据.xlsx --data-file data.json
acks-office theme preview folio
acks-office theme init my-brand --extends slate --accent "#0B6E4F" --brand "栖木咖啡"
acks-office extract 报告.docx
acks-office convert 报告.docx --to pdf -o 转换版.pdf
acks-office watermark 报告.pdf --text "内部资料"
acks-office merge a.pdf b.pdf -o 合并.pdf

每个子命令可加 --json,返回 {ok, data, artifacts, warnings, error};退出码 0 成功、1 执行失败、2 参数错误。 默认不覆盖已有输出,需显式加 --overwrite。命令不在 PATH 上时,可用 python -m acks_office。

Python 库

import acks_office

acks_office.create(
    "word", "报告.docx", theme="slate",
    content="---\ntitle: 经营回顾\nauthor: 经营分析部\n---\n\n# 概览\n\n营收 **增长 24%**。\n\n"
            "| 区域 | 营收 |\n|---|--:|\n| 华东 | 5,888 |",
)
rows = acks_office.extract("数据.xlsx")
acks_office.add_watermark("报告.pdf", "内部资料")  # 写到 报告_watermarked.pdf,不改原文件

create、extract、convert、add_watermark、merge 出错时抛出异常(FileNotFoundError、ValueError、 acks_office.themes.ThemeError 等)。各格式的完整参数见 acks_office.docx.create_word、xlsx.create_excel、 pdf.create_pdf、pptx.create_pptx 的说明。PDF 拆分与 PPT 切换通过格式模块调用:

from acks_office.pdf import split_pdf
from acks_office.pptx import add_transition_effects

split_pdf("报告.pdf", "拆分页")
add_transition_effects("汇报.pptx", "汇报_淡入.pptx", effect="fade", duration=0.5)

主题与字体

主题定位字体
neutral(默认)零依赖,任何环境都能出品系统字体(苹方 / 微软雅黑、Helvetica Neue / Segoe UI)
slate报告、方案、汇报:清晰板正思源黑体 + Source Sans 3
folio品牌手册、年报、作品集:杂志感思源宋体 + Source Serif 4、Fraunces、霞鹜文楷
  • 主题是一个数据包(theme.json、tokens.json、chrome.json、fonts.json),沿 extends 继承; theme init 新建,theme validate 检查对比度与字体,theme preview 生成 HTML 样张和四种格式的示例文件。 格式与字段见设计参考。
  • 主题字体没装时,生成文件改用本机备选字体;fonts install --theme <主题> 在用户同意后下载主题缺的开源字体 (地址固定、校验哈希),--system 同时装到当前用户的字体目录。
  • PDF 的中文字体依次取 --font / ACKS_OFFICE_PDF_FONT、主题字体及其备选、同风格的系统 TrueType 字体, 都没有时用阅读器自带的 STSong-Light(不嵌入)。能否嵌入以 doctor 检测为准。
  • theme="default" 是 neutral 的别名。2.x 内置的 ACKS 样式已移出,改为单独安装的主题包。

正文写法见 Markdown 参考, 环境等级与字段见 doctor 参考。

兼容与工作流

OfficeSuite 与旧导入名 office_suite 保留到 4.0,使用时提示弃用;新代码使用上面的函数。 邮件、批量与 OfficeSuite.execute_workflow(config) 目前仍在 OfficeSuite 上:工作流按顺序执行步骤, 调度由调用方负责;加载 YAML 或使用 API 数据源时安装 acks-office[workflow]。示例见 workflow_example.yaml。 当前不执行 schedule、on_success 等根配置,notification 只打印通知。 程序提供技能与 CLI,不包含内置 MCP 服务。

验证与安全

最低 Python 3.10;CI 覆盖 Ubuntu / macOS / Windows × Python 3.10 / 3.13。 无 LibreOffice 的 runner 跳过实际转换测试,生成与读取测试仍运行。

文档在本机处理。doctor 联网检查可用 --no-network 关闭;字体下载固定版本并校验哈希; SMTP 默认验证证书并拒绝明文登录。版本变化见 CHANGELOG, 安全与环境变量见 SECURITY.md。

开发与文档维护

git clone https://github.com/shynloc/ACKS-Office-Suite-Simplify.git
cd ACKS-Office-Suite-Simplify
python -m pip install -e ".[dev]"
python tools/check_release_docs.py
python -m pytest
python test_integration.py
python tools/build_skill_bundle.py

README 是 GitHub 与 PyPI 的共同说明来源。功能新增、移除或弃用时同步更新文档,维护流程见 CONTRIBUTING.md。

English

Made by ACKS Studio. Install acks-office, import acks_office. Files are written and read by Python libraries, so Microsoft Office or WPS is not needed; format conversion uses LibreOffice. Upgrading from 2.x? Read the migration guide.

What it does

  • Themes: built-in neutral (default), slate (business) and folio (magazine); create, validate and preview your own. A theme sets colors, fonts, sizes, layouts and headers / footers for all four formats.
  • Word: covers, numbered headings or chapter openers, columns and drop caps, tables, callouts, quotes, code and images from Markdown; text and table extraction; merge and watermark.
  • PDF: laid out directly by the engine with the same design as Word, fonts embedded; text extraction, merge, watermark, page split.
  • PowerPoint: cover, section, content, data (KPIs + bar chart), table, big number, quote and image slides.
  • Excel: title row, themed header and total rows, number formats, negative colors, several sheets and charts; reads .xlsx / .xls.
  • CLI and agent skill with JSON output, doctor environment checks and consent-based setup plans.

Install

Python 3.10 or newer:

python -m pip install acks-office==3.0.0
acks-office doctor --json

Theme fonts are open-source and downloaded only when you ask: python -m pip install "acks-office[fonts]==3.0.0" then acks-office fonts install --theme slate --system. The agent skill is acks-office-skill-3.0.0.zip on the GitHub Release.

Use

acks-office create word -o report.docx --content-file report.md --theme slate
acks-office create pptx -o deck.pptx --slides-file slides.json --theme folio
acks-office theme preview folio
acks-office theme init my-brand --extends slate --accent "#0B6E4F" --brand "My Brand"
import acks_office

acks_office.create("pdf", "report.pdf", theme="slate", title="Quarterly Review",
                   content="# Overview\n\nRevenue grew **24%**.")
rows = acks_office.extract("data.xlsx")

Functions raise exceptions on failure. OfficeSuite and the old office_suite import name remain until 4.0 with a deprecation warning. Commands, input formats and error codes are in the command reference; theme packages are described in the design reference (both in Chinese).

MIT License. 设计思路受 MiniMax Office Skill 启发。

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 16

Native requirements
13 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
python-docx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
python-docx>=1.1.0runtime
openpyxl
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
openpyxl>=3.1.2runtime
python-pptx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
python-pptx>=0.6.23runtime
reportlab
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
reportlab>=4.0.0runtime
pypdf
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pypdf>=4.0.0runtime
pandas
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pandas>=2.0.0runtime
xlrd
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
xlrd>=2.0.1runtime
Pillow
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
Pillow>=9.0.0runtime
markdown-it-py
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
markdown-it-py>=3.0.0runtime
fonttools
Environment
{
  "extras": "",
  "marker": "extra == \"fonts\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
fonttools>=4.40; extra == "fonts"runtime
requests
Environment
{
  "extras": "",
  "marker": "extra == \"workflow\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
requests>=2.28; extra == "workflow"runtime
PyYAML
Environment
{
  "extras": "",
  "marker": "extra == \"workflow\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
PyYAML>=6.0; extra == "workflow"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=7.0; extra == "dev"runtime
fonttools
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
fonttools>=4.40; extra == "dev"runtime
requests
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
requests>=2.28; extra == "dev"runtime
PyYAML
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
PyYAML>=6.0; extra == "dev"runtime

Distribution files

2 collected
acks_office-3.0.0-py3-none-any.whl

bdist_wheel · 146.52 KB · Python py3

Source file
acks_office-3.0.0.tar.gz

sdist · 170.89 KB · Python source

Source file

Repository

PENDING
shynloc/acks-office-suite-simplify

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:15 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:2d777634b97e472895b8a28cb553123dae1c7fcf00dc332d8bc98cdab95dfea7

Other collected versions

View all collected versions →