feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""页码 CSS 生成"""
|
||||
from typing import Any, Dict
|
||||
|
||||
|
||||
def _resolve_page_number_config(config: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"""从模板 JSON 解析页码配置"""
|
||||
show = config.get("showPageNumber")
|
||||
if show is None:
|
||||
show = config.get("show_page_number", True)
|
||||
return {
|
||||
"show": bool(show),
|
||||
"position": config.get("pageNumberPosition", "footer"),
|
||||
"align": config.get("pageNumberAlign", "center"),
|
||||
"format": config.get("pageNumberFormat", "chinese"),
|
||||
"font_size": config.get("pageNumberFontSize", 10),
|
||||
"color": config.get("pageNumberColor", "#666666"),
|
||||
}
|
||||
|
||||
|
||||
def build_page_number_css(config: Dict[str, Any]) -> str:
|
||||
"""生成 WeasyPrint @page 页码 margin 规则"""
|
||||
cfg = _resolve_page_number_config(config)
|
||||
if not cfg["show"]:
|
||||
return ""
|
||||
|
||||
edge = "top" if cfg["position"] == "header" else "bottom"
|
||||
margin_box = f"{edge}-{cfg['align']}"
|
||||
|
||||
fmt = cfg["format"]
|
||||
if fmt == "fraction":
|
||||
content = 'counter(page) " / " counter(pages)'
|
||||
elif fmt == "english":
|
||||
content = '"Page " counter(page) " of " counter(pages)'
|
||||
else:
|
||||
content = '"第 " counter(page) " 页 / 共 " counter(pages) " 页"'
|
||||
|
||||
return f"""
|
||||
@{margin_box} {{
|
||||
content: {content};
|
||||
font-size: {float(cfg['font_size'])}pt;
|
||||
color: {cfg['color']};
|
||||
}}"""
|
||||
Reference in New Issue
Block a user