経緯
これまでkindleでのペーパーバック作成時の表紙作成にはAvePDFを使用して、figmaで作成したPDFを突っ込んでリサイズして作成していた。
しかし、この外部のwebサイトを使用することに対して いかがなものかと と言われてしまい、使用できなくなった。
なので、これまで行っていたPDFのリサイズを自前で出来るようにしたので備忘録として残しておく。
スクリプト
以下のスクリプトはcolabで動かすことを想定しています。
入力ファイルとなるinput.pdfは、colabのファイルの直下に存在する想定で記述しています。
!pip install pypdf
# import
from pypdf import PdfReader, PdfWriter
# 最終的な出力サイズを指定
x_cm = XXX.XX # 各自修正
y_cm = YYY.YY # 各自修正
# 出力に使う定数
inch_cm = 25.4
dpi = 72
# 出力サイズに合わせたピクセル数を計算
x_px = x_cm * dpi / inch_cm
y_px = y_cm * dpi / inch_cm
# pdfファイルを読み込み
reader = PdfReader("input.pdf")
# 出力先のpdfファイルを用意
writer = PdfWriter()
# 読み込んだpdfファイルのすべてのページのサイズを変更
for i in range(len(reader.pages)):
page = reader.pages[i]
page.scale_to(x_px, y_px)
writer.add_page(page)
# pdfファイルとして書き出し
writer.write("output.pdf")
writer.close()
あとがき
pythonでPDFを扱うライブラリはいくつもあって迷いましたが、(主観で)開発が活発に行われていそうなpypdfを選びました。
PDFのサイズ変更を行うscale_to関数に渡す引数の単位が公式ドキュメントに明記されていないので少し面倒でしたが、色々与えてみてピクセルだと分かったので、スクリプト上でcmからpxへの変換を行うようにしていました。