aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts
diff options
context:
space:
mode:
authorYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-09-23 00:03:57 +0900
committerYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-09-23 00:03:57 +0900
commitf128400a32e27841e49c21fa0068040da8ab90ad (patch)
tree20882f4d077398602c0a4b83b17fce18c10db777 /scripts
parent8ea5841cf4b0fcf044456f76a29755e48d30bfd8 (diff)
フロー図のPDF: a要素の中身が欠けていたのを修正
PyMuPDFのSVG→PDF変換はa要素の中身を描画しないため、ベクター化して以降のPDFからは課題マーカーと課題・論点の一覧がごっそり欠けていた。PDF化するときだけa要素を外して中身を残すようにし、課題⑨の追加も反映した。
Diffstat (limited to 'scripts')
-rw-r--r--scripts/make-flow-pdfs.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/scripts/make-flow-pdfs.py b/scripts/make-flow-pdfs.py
index f6e263b..ae7ba26 100644
--- a/scripts/make-flow-pdfs.py
+++ b/scripts/make-flow-pdfs.py
@@ -15,6 +15,7 @@ base は SVG の元の高さ(リンク行を追記する前の値)。SVG の
使い方: python scripts/make-flow-pdfs.py
"""
import pathlib
+import re
import sys
import pymupdf
@@ -41,12 +42,24 @@ FOOT_1P = TITLE + " 全体像(縮小のため文字は小さめ。読みやã
# (SVGファイル名, 出力の6ページ版, 出力の1ページ版, SVGの元の高さ)
JOBS = [
- ("ijime-judai-flow.svg", "ijime-judai-flow-a4-6p.pdf", "ijime-judai-flow-a4-1p.pdf", 3890),
+ ("ijime-judai-flow.svg", "ijime-judai-flow-a4-6p.pdf", "ijime-judai-flow-a4-1p.pdf", 3930),
("ijime-judai-flow-private.svg", "ijime-judai-flow-private-a4-6p.pdf",
"ijime-judai-flow-private-a4-1p.pdf", 3624),
]
+ANCHOR_RE = re.compile(r"<a\b[^>]*>|</a>")
+
+
+def strip_anchors(svg_text):
+ """<a>要素を取り除く(中身は残す)。
+
+ PyMuPDF の SVG→PDF 変換は <a> の中身を描画しないため、PDF化するときだけ外す。
+ リンクとしては機能しなくなるが、元のラスタ版PDFもリンクは持っていなかった。
+ """
+ return ANCHOR_RE.sub("", svg_text)
+
+
def one_page_rect(base_h):
"""1ページ版の配置(旧スクリプトの縮小計算を再現)。"""
sc = min((2900 / 2.5) / 1820, ((4182 / 2.5) - 30) / base_h)
@@ -69,7 +82,8 @@ def add_footer(page, text):
def build(svg_name, out_6p, out_1p, base_h):
- svg = pymupdf.open(IMAGES / svg_name)
+ path = IMAGES / svg_name
+ svg = pymupdf.open("svg", strip_anchors(path.read_text(encoding="utf-8")).encode("utf-8"))
# show_pdf_page は PDF しか受け付けないため、いったんベクターPDFに変換する
src = pymupdf.open("pdf", svg.tobytes(garbage=4, deflate=True))
svg.close()