Home About
Groovy , PDF , PDFBox

PDFBox 3.0.0 で 複数のPDFファイルを結合してひとつのPDFファイルにまとめる

申告業務のためPDFをまとめようとした。 今まで使ってきたコードは PDFBox version 1.8.3。 もう PDFBox version 3.0.0 が出ているので、いい加減アップデートする。

環境

$ groovy --version
Groovy Version: 4.0.3 JVM: 1.8.0_322 Vendor: Azul Systems, Inc. OS: Mac OS X

1.8.3 でのPDFマージ

カレントディレクトリに 1.pdf, 2.pdf, 3.pdf があるとして、それを all.pdf にまとめる。

@Grab(group='org.apache.pdfbox', module='pdfbox', version='1.8.3')
import org.apache.pdfbox.util.PDFMergerUtility

System.setProperty("java.awt.headless", "true")

def inputFilenames = ["1.pdf", "2.pdf", "3.pdf"]
def outputFilename = 'all.pdf'

def util = new PDFMergerUtility()
inputFilenames.each{ util.addSource( new File(it) ) }
util.setDestinationFileName( outputFilename )
util.mergeDocuments()

以前メモしたコード、この環境での作動確認はしていないのであしからず。

3.0.0 でのPDFマージ

カレントディレクトリに 1.pdf, 2.pdf, 3.pdf があるとして、それを all.pdf にまとめる。

@Grab(group='org.apache.pdfbox', module='pdfbox', version='3.0.0')
import org.apache.pdfbox.multipdf.PDFMergerUtility
import org.apache.pdfbox.io.IOUtils
import org.apache.pdfbox.io.RandomAccessStreamCache.StreamCacheCreateFunction

System.setProperty("java.awt.headless", "true")

def inputFilenames = ["1.pdf", "2.pdf", "3.pdf"]
def outputFilename = 'all.pdf'

def util = new PDFMergerUtility()
inputFilenames.each{ util.addSource( new File(it) ) }
util.setDestinationFileName( outputFilename )
def streamCache = IOUtils.createMemoryOnlyStreamCache()
util.mergeDocuments(streamCache)

Version 1.8.3 からの変更点は:

以上です。

Liked some of this entry? Buy me a coffee, please.