著者:関 勝寿
公開日:2023年8月9日 - 最終更新日:2025年8月13日
キーワード: python

複数の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
)