diff --git a/.gitignore b/.gitignore index 9083ece..af2f76b 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,4 @@ yarn-error.log* # ZCode local config .zcodeignore -design-refs/mockup/single/ +design-refs/mockup/single*/ diff --git a/design-refs/mockup/build.sh b/design-refs/mockup/build.sh index c001759..0ca7528 100755 --- a/design-refs/mockup/build.sh +++ b/design-refs/mockup/build.sh @@ -1,51 +1,68 @@ #!/usr/bin/env bash -# 课程书架设计稿构建:course-shelf.html → 5 个单页 PDF → 合并 course-shelf.pdf -# 依赖:pdf skill 的 html2poster.js + pypdf(playwright + chromium 需可用) +# 设计稿构建:把整页 HTML 按顶层 .page 拆成单页 → html2poster 逐页渲染 → 合并为同名 PDF +# 用法:bash build.sh [stem ...] # stem 为 design-refs/mockup 下的 html 文件名(不含扩展名) +# 默认构建 course-shelf 与 components 两个目标 set -euo pipefail cd "$(dirname "$0")" PDF_SKILL_DIR="${PDF_SKILL_DIR:-$HOME/.zcode/cli/plugins/cache/zcode-plugins-official/pdf/0.1.7/skills/pdf}" export PDF_SKILL_DIR -# 1. 按 .page 拆成单页 HTML(固定布局必须走 html2poster,不能用 html2pdf-next) -python3 - <<'EOF' -import os, re -html = open("course-shelf.html", encoding="utf-8").read() +STEMS=("$@") +if [ ${#STEMS[@]} -eq 0 ]; then + STEMS=(course-shelf components) +fi + +for STEM in "${STEMS[@]}"; do + SRC="${STEM}.html" + [ -f "$SRC" ] || { echo "!! 缺少 $SRC,跳过"; continue; } + OUT_DIR="single-${STEM}" + mkdir -p "$OUT_DIR" + + # 1. 按顶层 .page 拆单页(固定布局必须走 html2poster,不能用 html2pdf-next) + python3 - "$SRC" "$OUT_DIR" <<'EOF' +import re, sys +src, out_dir = sys.argv[1], sys.argv[2] +html = open(src, encoding="utf-8").read() head, rest = html.split("
", 1) body_inner = rest.rsplit("", 1)[0] pat = re.compile(r'(?=