Any2Screen 是一个文档转换工具集,目标是把常见图文内容转换成更适合移动端阅读、传输和分享的输出格式。
Demo 网站访问地址:http://39.105.102.5:8082/
项目当前开发计划:.\DEVELOPMENT_PLAN.md)
当前仓库提供一个统一命令入口 any2screen,通过子命令调用主 pipeline 或独立阶段模块:
convert:运行完整any2html -> html2screenpipelineany2html:将输入文档转换为 HTML 中间产物html2screen:将 HTML 转换为 A4 PDF、WeChat PDF、HTML 或图片doc2md:将 DOCX/PDF/TXT 转换为 Markdown,作为独立工具保留
当前代码更接近“转换能力原型”,不是完整应用。
- 统一入口已经可用:
scripts/any2screen.py - 子命令分发逻辑位于
src/ convert作为主 CLI pipeline,内部执行any2html -> html2screenany2html和html2screen可独立调用,便于调试、复用和后续扩展doc2md作为独立转换工具保留,后续可作为 DOCX/PDF/TXT 接入any2html的基础
Any2Screen/
├── README.md
├── DEVELOPMENT_PLAN.md
├── pyproject.toml
├── uv.lock
├── scripts/
│ └── any2screen.py
├── src/
│ ├── cli.py
│ ├── command_registry.py
│ ├── convert_cli.py
│ ├── any2html_cli.py
│ ├── html2screen_cli.py
│ ├── preview_cli.py
│ ├── web_cli.py
│ ├── doc2md.py
│ ├── pipeline.py
│ ├── preview.py
│ ├── any2html/
│ │ └── markdown.py
│ ├── html2screen/
│ │ └── renderers.py
│ └── web/
│ ├── app.py
│ ├── routes.py
│ └── schemas.py
├── docs/
│ ├── pipeline.md
│ └── runtime.requirements.txt
说明:
scripts/any2screen.py是唯一统一入口src/是统一入口实际调用的模块实现src/any2html/负责把输入文档转换为 HTML 中间产物src/html2screen/负责把 HTML 输出为 A4 PDF、WeChat PDF、长图等屏幕友好格式src/pipeline.py负责串接any2html -> html2screen- 项目依赖由
uv管理,声明在pyproject.toml,锁定在uv.lock
项目需要 Python 3.10 及以上。
先在 PowerShell 中克隆仓库:
git clone https://github.com/Archjing/Any2Screen.git
cd Any2Screen如果已经安装 uv:
uv sync
uv run any2screen convert README.md --pdf如果没有 uv,使用 pip:
py -m pip install -e .
py scripts/any2screen.py convert README.md --pdf先在终端中克隆仓库:
git clone https://github.com/Archjing/Any2Screen.git
cd Any2Screen如果已经安装 uv:
uv sync
uv run any2screen convert README.md --pdf如果没有 uv,使用 pip:
python3 -m pip install -e .
python3 scripts/any2screen.py convert README.md --pdf默认会在输入文件同级目录生成输出文件。要导出长图,首次使用前还需要安装 Chromium。
使用 uv:
uv run playwright install chromium没有使用 uv 时:
python3 -m playwright install chromiumWindows:
py -m playwright install chromium如果你希望改完 src/ 或 scripts/ 后不用重新 build 镜像,可以使用本地覆盖配置:
docker compose \
-f Any2Screen-server/docker-compose.yml \
-f Any2Screen-server/docker-compose.local.yml \
up -d --build说明:
- 首次仍然需要
--build,因为基础镜像里要安装 Python 依赖和 Playwright Chromium。 - 之后修改
src/、src/web/static/、scripts/会通过宿主机 bind mount 进入容器。 any2screen-api在本地覆盖配置里会使用--reload启动,代码变更后会自动重载。- 只有依赖变更或
Dockerfile变更时,才需要再次--build。
总用法:
python3 scripts/any2screen.py <module> [module_args...]当前支持的 <module>:
convertany2htmlhtml2screenpreviewwebdoc2md
查看帮助:
python3 scripts/any2screen.py --help
python3 scripts/any2screen.py convert --help
python3 scripts/any2screen.py any2html --help
python3 scripts/any2screen.py html2screen --help
python3 scripts/any2screen.py preview --help
python3 scripts/any2screen.py web --help
python3 scripts/any2screen.py doc2md --help将单个文件或目录中的文档转换为 Markdown。
支持格式:
.docx.pdf.txt
参数:
input:输入文件或目录-o, --output:输出目录,默认当前目录-p, --password:加密.docx的密码,可选
示例:
python3 scripts/any2screen.py doc2md ./report.docx
python3 scripts/any2screen.py doc2md ./report.pdf -o ./out
python3 scripts/any2screen.py doc2md ./docs -o ./out -p your_password运行完整 pipeline,将一个或多个输入文档转换为 HTML、PDF、微信阅读 PDF 或长图。
参数:
paths:一个或多个.md文件或目录-o, --output:输出目录,默认与源文件同级--html:生成 HTML;默认无 PDF 参数时启用--pdf:生成 A4 PDF;默认只输出 PDF--wechat:生成适合微信阅读的 PDF;默认只输出 PDF--img:生成长图;默认只输出图片--width:图片视口宽度,默认960--format:图片格式,支持png、jpeg,默认png-v, --verbose:详细输出
示例:
python3 scripts/any2screen.py convert ./README.md
python3 scripts/any2screen.py convert ./notes -o ./exports
python3 scripts/any2screen.py convert ./trip.md --pdf
python3 scripts/any2screen.py convert ./trip.md --html --pdf
python3 scripts/any2screen.py convert ./trip.md --img --width 1080 --format png
python3 scripts/any2screen.py convert ./trip.md --img --format jpeg -o ./exports
python3 scripts/any2screen.py convert ./trip.md --html --pdf --wechat --img
python3 scripts/any2screen.py convert ~/workspace/stok-mapping/tasks/cross-market/HK_A_SHARE_MAPPING_STRATEGIES.md --pdf依赖:
- 运行依赖见
pyproject.toml watchdog是可选依赖,使用--watch时安装uv sync --extra watch
补充:
- 该模块当前是仓库里最成熟的 CLI
- 指定任一输出 flag 时只输出指定格式;需要多格式时组合使用,比如
--html --pdf --img
图片输出依赖:
- 运行依赖见
pyproject.toml - 首次使用
--img前需要安装 Playwright 浏览器:uv run playwright install chromium
只执行预处理阶段,将输入文档转换为 HTML 中间产物。
python3 scripts/any2screen.py any2html ./README.md
python3 scripts/any2screen.py any2html ./README.md -o ./exports
python3 scripts/any2screen.py any2html ./README.md -o ./exports/readme.html只执行输出渲染阶段,将 HTML 中间产物转换为屏幕友好格式。
python3 scripts/any2screen.py html2screen ./README.html --pdf
python3 scripts/any2screen.py html2screen ./README.html --wechat
python3 scripts/any2screen.py html2screen ./README.html --img --width 960 --format png
python3 scripts/any2screen.py html2screen ./README.html --html --pdf --wechat --img -o ./exports生成轻量 HTML 预览,只处理 Markdown 的前若干个内容块,适合后续 Web 首屏预览。
参数:
paths:一个或多个.md文件或目录-o, --output:输出 HTML 文件或目录,默认与源文件同级--blocks:最多保留的 Markdown 块数,默认20--table-rows:每个表格最多保留的数据行数,默认20--code-lines:每个代码块最多保留的行数,默认120
示例:
python3 scripts/any2screen.py preview ./README.md
python3 scripts/any2screen.py preview ./README.md --blocks 12
python3 scripts/any2screen.py preview ./notes -o ./previews启动 API-first 的 FastAPI 开发服务。
先安装 Web 额外依赖:
uv sync --extra web没有使用 uv 时:
python3 -m pip install -e ".[web]"启动服务:
python3 scripts/any2screen.py web默认地址:
- API 根路径:
http://127.0.0.1:8000/api - Web 页面:
http://127.0.0.1:8000/ - 健康检查:
http://127.0.0.1:8000/api/health - 文件上传:
POST http://127.0.0.1:8000/api/files - Markdown/TXT/DOCX/PDF 预览:
GET http://127.0.0.1:8000/api/previews/{file_id} - HTML 导出:
GET http://127.0.0.1:8000/api/exports/{file_id}/html - PDF 导出:
GET http://127.0.0.1:8000/api/exports/{file_id}/pdf - OpenAPI:
http://127.0.0.1:8000/openapi.json - Swagger UI:
http://127.0.0.1:8000/docs
上传接口示例:
curl -F file=@README.md http://127.0.0.1:8000/api/files预览接口示例:
curl http://127.0.0.1:8000/api/previews/{file_id}导出接口示例:
curl -OJ http://127.0.0.1:8000/api/exports/{file_id}/html
curl -OJ http://127.0.0.1:8000/api/exports/{file_id}/pdf统一入口本身不写任何具体转换逻辑,只负责路由。
新增子命令时:
- 在
src/添加模块脚本 - 在 src/command_registry.py 注册子命令与脚本路径
- 通过
python3 scripts/any2screen.py <new_module> ...调用
python3 -m unittest discover -s tests- pipeline 补充说明:
docs/pipeline.md - 中间文档结构设计:
docs/intermediate-document.md - 运行依赖清单:
docs/runtime.requirements.txt - 开发规划:
DEVELOPMENT_PLAN.md
This project is licensed under CC BY-NC-SA 4.0.
You are free to:
1. Share — copy and redistribute the material in any medium or format.
2. Adapt — remix, transform, and build upon the material.
The licensor cannot revoke these freedoms as long as you **follow the license terms**.
本项目采用 CC BY-NC-SA 4.0 许可证。
你可以自由:
分享 — 以任何媒介或格式复制、再分发本素材
改编 — 对本素材进行混编、转换、二次创作
只要你遵守许可证条款,许可人就不能撤销这些自由

