diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/make-flow-pdfs.py | 18 |
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() |
