pdfgridcat - PDFの図を1ページにまとめる
複数のPDF画像ファイルを1ページの画像にまとめるPythonパッケージpdfgridcat を作成した。
poppler に含まれる pdfunite はページを単純に連結するだけで、pdf-nupper は余白ができるのに対し、pdfgridcat は余白なしで複数の PDF を 1 ページに配置できる。
たとえばこの論文のFig. 6では

このように複数のグラフが1枚の図としてまとめられている。この図は、4つのPDFファイルを縦横2個ずつ並べたものである(それぞれのPDFファイルに2つのグラフがあるため、合計8個のグラフがある)。元のPDFファイルは20個あり、4個ずつを1つの図としてまとめて、合計5個の図を作成している。
なお、当初は1ファイルスクリプトとしていたが2025年8月13日にPythonパッケージとして公開した。
インストール
pdfgridcatライブラリを次のコマンドによってインストールする。
python3 -m pip install pdfgridcat
実行方法
例えば、カレントディレクトリに複数のPDF画像ファイルがある場合、次のコマンドを実行する。
pdfgridcat -i *.pdf -o output.pdf -c 2 -r 3
この例では、画像ファイルが output/output.pdf に連結され、各ページに横に2つ、縦に3つの画像が配置され、ページごとに6つの画像が生成される。
利用可能なコマンドラインオプションを表示するには、次のコマンドを実行する。
pdfgridcat -h
すると、次のように表示される。
usage: pdfgridcat [-h] -i INPUT [INPUT ...] -o OUTPUT [-c COLUMNS] [-r ROWS]
Arrange multiple PDF images both horizontally and vertically within a single
page, resulting in multiple pages
options:
-h, --help show this help message and exit
-i, --input INPUT [INPUT ...]
Input PDF files
-o, --output OUTPUT Output PDF file
-c, --columns COLUMNS
Number of columns per page
-r, --rows ROWS Number of rows per page
Pythonプログラムからは次のように使う。
from pdfgridcat import concat_pdf_pages
concat_pdf_pages(
input_files=["a.pdf", "b.pdf", "c.pdf"],
output_file="output.pdf",
col=2,
row=3
)