PDFを結合するツール (CLI)
概要
PDFを結合できるツールで良いのが無いか気になり、ちょっと調べてみた。社内システムのサーバーに組み込めそうなやつが欲しくて。
結論
PDFBoxすごく良さげ。💪
まとめ
tool | command | last version | last update | auther | license | platform | memo |
---|---|---|---|---|---|---|---|
PDFBox | merge PDFMerger |
3.0.2 2.0.31 |
2024-03 2024-03 |
Apache | Apache License v2.0 | java 8 java 6 |
安心のApache。javaライブラリもあり。 |
Poppler | pdfunite | 24.06.1 (24.02.0-0) |
2024-06 (2024-02) |
freedesktop.org | GPL | linux (win (x64)) |
実行バイナリは3rdから。 |
PDFtk Free | pdftk | 2.02 | 2013-07 | Sid Steward | GPL+ | win (x86) | 古い。。。 |
「開発元が信頼できる大手」で、
「公式で実行バイナリが入手可能」で、
「マルチ プラットフォーム (Java)」で
「最近も更新されている」で、
「ライブラリ提供もあり、Javaで実装組み込みも可能」で、
「Apache License (弱いコピーレフト)」
とか、PDFBox強すぎる。。。
ツールと結合コマンド
PDFBox
PDFBox standalone
が実行用ツール。v3.0系とv2.0系でコマンド引数が違う。実行結果については、簡単に行ってみたが、一応同様になった。
v3.x (java 8)
java -jar pdfbox-app-3.0.2.jar
Usage: pdfbox [COMMAND] [OPTIONS]
Commands:
debug Analyzes and inspects the internal structure of a PDF document
decrypt Decrypts a PDF document
encrypt Encrypts a PDF document
decode Writes a PDF document with all streams decoded
export:images Extracts the images from a PDF document
export:xmp Extracts the xmp stream from a PDF document
export:text Extracts the text from a PDF document
export:fdf Exports AcroForm form data to FDF
export:xfdf Exports AcroForm form data to XFDF
import:fdf Imports AcroForm form data from FDF
import:xfdf Imports AcroForm form data from XFDF
overlay Adds an overlay to a PDF document
print Prints a PDF document
render Converts a PDF document to image(s)
merge Merges multiple PDF documents into one
split Splits a PDF document into number of new documents
fromimage Creates a PDF document from images
fromtext Creates a PDF document from text
version Gets the version of PDFBox
help Display help information about the specified command.
See 'pdfbox help <command>' to read about a specific subcommand
java -jar pdfbox-app-3.0.2.jar merge -i in_1.pdf -i in_2.pdf -i in_3.pdf -i in_4.pdf -o out.pdf
v2.x (java 6)
java -jar pdfbox-app-2.0.31.jar
PDFBox version: "2.0.31"
Usage: java -jar pdfbox-app-x.y.z.jar <command> <args..>
Possible commands are:
Decrypt
Encrypt
ExtractText
ExtractXMP
ExtractImages
OverlayPDF
PrintPDF
PDFDebugger
PDFMerger
PDFReader
PDFSplit
PDFToImage
TextToPDF
WriteDecodedDoc
java -jar pdfbox-app-2.0.31.jar PDFMerger in_1.pdf in_2.pdf in_3.pdf in_4.pdf out.pdf
Poppler
公式にはWindowsバイナリがないので、
こちらの記事を参考に、Windowsバイナリを入手。
pdfunite
pdfunite version 24.02.0
Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011, 2022 Glyph & Cog, LLC
Usage: pdfunite [options] <PDF-sourcefile-1>..<PDF-sourcefile-n> <PDF-destfile>
-v : print copyright and version info
-h : print usage information
-help : print usage information
--help : print usage information
-? : print usage information
pdfunite in_1.pdf in_2.pdf in_3.pdf in_4.pdf out.pdf
PDFtk
どうやら PDFtk Free には PDFtk Server も同梱しているとのことで。無駄なものも入れたくなく、PDFtk Server をインストール。
(古い。。。)
コマンドは
を参考。
pdftk
SYNOPSIS
pdftk <input PDF files | - | PROMPT>
[ input_pw <input PDF owner passwords | PROMPT> ]
[ <operation> <operation arguments> ]
[ output <output filename | - | PROMPT> ]
[ encrypt_40bit | encrypt_128bit ]
[ allow <permissions> ]
[ owner_pw <owner password | PROMPT> ]
[ user_pw <user password | PROMPT> ]
[ flatten ] [ need_appearances ]
[ compress | uncompress ]
[ keep_first_id | keep_final_id ] [ drop_xfa ] [ drop_xmp ]
[ verbose ] [ dont_ask | do_ask ]
Where:
<operation> may be empty, or:
[ cat | shuffle | burst | rotate |
generate_fdf | fill_form |
background | multibackground |
stamp | multistamp |
dump_data | dump_data_utf8 |
dump_data_fields | dump_data_fields_utf8 |
dump_data_annots |
update_info | update_info_utf8 |
attach_files | unpack_files ]
For Complete Help: pdftk --help
pdftxk in_1.pdf in_2.pdf in_3.pdf in_4.pdf cat output out.pdf
出力検証
サンプル
Microsoft Wordにてサンプルを作成、PDF出力。
オリジナル (Microsoft Word)
PDF (ASCII表示)
結果
結合PDF
基本的にはみんな一緒。縦横のドキュメントが混じった、ページ設定の違うドキュメントでも、それらを維持して結合されている。また、fontも。
結合PDF (ASCII表示)
ツールごとに出力されるPDFのバージョンは異なっていた。まぁでもこれは大した問題ではないかと思われる。「内部エンジンが同じで、どのツールで出力しても全く同じ結果になる。」というわけでは無いことがわかる。
tool | PDF version |
---|---|
PDFBox 3.0.2 | 1.6 |
PDFBox 2.0.31 | 1.4 |
Poppler | 1.7 |
PDFtk Free | 1.7 |
その他
他にも Coherent PDF など、たくさんツールがあるかと思いうが、とりあえずはこのへんで。。。
謝辞🙇
-
PDFBox
https://pdfbox.apache.org/ -
Poppler
https://poppler.freedesktop.org/ -
Poppler : PDFのコマンドラインツール | PDF
https://pdf-file.nnn2.com/?p=863 -
GitHub - oschwartz10612/poppler-windows: Download Poppler binaries packaged for Windows with dependencies
https://github.com/oschwartz10612/poppler-windows -
PDFtk - Wikipedia
https://ja.wikipedia.org/wiki/PDFtk
Discussion