首次提交: OnebotCatalog 项目代码与文档(含 NX 按需生成服务二期、后台、一键启动)
This commit is contained in:
50
onebot-data/tools/render-manual-pages.py
Normal file
50
onebot-data/tools/render-manual-pages.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# 把 ONEBOT 手册 PDF 的系列页拆出渲染成图片 (供目录软件"尺寸图"窗口对照查看)
|
||||
# 用法:
|
||||
# python tools\render-manual-pages.py # 渲染全部系列
|
||||
# python tools\render-manual-pages.py KC # 只渲染一个系列
|
||||
# 输出: OnebotCatalog\onebot-data\catalog\manual\<系列>\p<物理页码>.png (灰度 PNG 110dpi, 源目录布局)
|
||||
import fitz, os, sys
|
||||
|
||||
PDF = r"OnebotCatalog\ONEBOT - 直线气缸 - 中文.pdf"
|
||||
OUT = r"OnebotCatalog\onebot-data\catalog\manual"
|
||||
DPI = 110
|
||||
|
||||
# 系列 → 手册物理页码 (1-based, 含首尾); 依据: 手册印刷页码 = 物理页码 - 1
|
||||
SERIES_PAGES = {
|
||||
"KC": [2, 3, 4, 5, 6, 11, 12], # KC 全缸径: 32~125 (p2-6) + 125~320 (p11-12)
|
||||
"KCB": [9, 10],
|
||||
"KSB": [16, 17],
|
||||
"KCS": [13],
|
||||
"KS": [14, 15],
|
||||
"KSU": [14, 15],
|
||||
"M": [22, 23, 24, 25, 26, 27],
|
||||
"MS": [28, 29, 30, 31, 32],
|
||||
"MSC": [33, 34, 35],
|
||||
"MAL": [36, 37, 38, 39, 40],
|
||||
"MALC": [41, 42, 43],
|
||||
}
|
||||
|
||||
def main():
|
||||
only = sys.argv[1] if len(sys.argv) > 1 else None
|
||||
doc = fitz.open(PDF)
|
||||
todo = {k: v for k, v in SERIES_PAGES.items()} if only is None else {only: SERIES_PAGES.get(only, [])}
|
||||
total = 0
|
||||
for series, pages in todo.items():
|
||||
if not pages:
|
||||
print(f"[warn] 未知系列: {only}")
|
||||
continue
|
||||
d = os.path.join(OUT, series)
|
||||
os.makedirs(d, exist_ok=True)
|
||||
for p in pages:
|
||||
out = os.path.join(d, f"p{p:02d}.png")
|
||||
pix = doc[p - 1].get_pixmap(dpi=DPI, colorspace=fitz.csGRAY)
|
||||
pix.save(out)
|
||||
kb = os.path.getsize(out) // 1024
|
||||
total += kb
|
||||
print(f"{series} p{p:02d} -> {kb} KB")
|
||||
doc.close()
|
||||
print(f"完成, 共 {total // 1024} MB")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user