aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/make-flow-pdfs.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/make-flow-pdfs.py')
-rw-r--r--scripts/make-flow-pdfs.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/scripts/make-flow-pdfs.py b/scripts/make-flow-pdfs.py
index 70ad495..e9f7942 100644
--- a/scripts/make-flow-pdfs.py
+++ b/scripts/make-flow-pdfs.py
@@ -16,6 +16,7 @@ base は SVG の元の高さ(リンク行を追記する前の値)。SVG の
"""
import pathlib
import re
+import subprocess
import sys
import pymupdf
@@ -49,8 +50,14 @@ LIC_PUBLIC = ("© 安竹洋平(小平市議会議員)/公立版・私立ç‰
# 私立版と簡易版には課題欄がないので、その但し書きは入れない
LIC_NO_KADAI = ("© 安竹洋平(小平市議会議員)/公立版・私立版とも CC BY-ND 4.0"
"(切り取り可・無保証)/yasutakeyohei.com/ijime-judai-jitai/flow/")
-# 図に合わせた版の情報(PDFのメタデータにも入れる)
-EDITION = "第1版(令和8年9月23日)"
+# 版の情報は、SVGの右上の「最終更新:…」から取る(stamp-flow-version.py が入れる)
+EDITION_RE = re.compile(r'x="1796" y="56"[^>]*>([^<]*)</text>')
+
+
+def edition_of(svg_name):
+ """SVGの右上の「最終更新:…」を、PDFのメタデータ用に取り出す。"""
+ m = EDITION_RE.search((IMAGES / svg_name).read_text(encoding="utf-8"))
+ return m.group(1) if m else ""
# (SVGファイル名, 出力の6ページ版, 出力の1ページ版, SVGの元の高さ, フッターのライセンス, 版の名前)
JOBS = [
@@ -131,9 +138,9 @@ def build(svg_name, out_6p, out_1p, base_h, license_text, label):
out.set_metadata({
"title": f"{TITLE}({label})",
"author": "安竹洋平(小平市議会議員)",
- "subject": (f"{EDITION}。CC BY-ND 4.0(表示—改変禁止)。公立学校版・私立学校版とも同じライセンス。"
+ "subject": (f"{edition_of(svg_name)}。CC BY-ND 4.0(表示—改変禁止)。公立学校版・私立学校版とも同じライセンス。"
"出典 https://yasutakeyohei.com/ijime-judai-jitai/flow/"),
- "keywords": f"いじめ重大事態, フロー図, {label}, {EDITION}, CC BY-ND 4.0, 安竹洋平, 小平市",
+ "keywords": f"いじめ重大事態, フロー図, {label}, {edition_of(svg_name)}, CC BY-ND 4.0, 安竹洋平, 小平市",
"creator": "https://yasutakeyohei.com/ijime-judai-jitai/flow/",
})
out.subset_fonts()
@@ -149,5 +156,8 @@ def build(svg_name, out_6p, out_1p, base_h, license_text, label):
src.close()
+# 「最終更新」の日付を先に更新してから、PDFを作る
+subprocess.run([sys.executable, "scripts/stamp-flow-version.py"], check=True)
+
for svg_name, out_6p, out_1p, base_h, license_text, label in JOBS:
build(svg_name, out_6p, out_1p, base_h, license_text, label)