2016-11-09

PowerShellでPDFファイルを結合する

PDFファイルは様々な場面で登場します。
複数のPDFファイルを1つにまとめたいと思ったことがある方は非常に多いのではないでしょうか。

巷にはPDFファイルを操作するフリーソフトはたくさんありますが、わざわざダウンロードしなくてもPowerShell(とiTextSharp)があれば簡単な操作は可能です。

ここでは「PowerShellでPDFファイルを結合する方法」をご紹介します。

※事前に iTextSharp.dll を入手しておく必要がありますので、各自ダウンロードをお願いします。
以下、スクリプトです。
## PowerShellからiTextSharpを使用したPDFファイルの結合

# iTextSharpの読み込み
[System.Reflection.Assembly]::LoadFrom("D:\itextsharp.dll")

# pdfファイルの指定
$pdf1 = New-object iTextSharp.text.pdf.pdfreader("C:\Users\user001\Desktop\001.pdf")
$pdf2 = New-object iTextSharp.text.pdf.pdfreader("C:\Users\user001\Desktop\002.pdf")

# 新しいPDFファイル
$new_pdf = New-Object System.IO.FileStream("C:\Users\user001\Desktop\new_pdf.pdf", [System.IO.FileMode]::OpenOrCreate)

# 結合後ファイルに読み込んだpdfファイルのコピーを追加する
$copy = New-Object iTextSharp.text.pdf.PdfCopyFields($new_pdf)
$copy.AddDocument($pdf1)
$copy.AddDocument($pdf2)

# 後片付け
$copy.Close()
$new_pdf.Close()
$pdf1.Close()
$pdf2.Close()

続いて解説です。

- - - - - - - 解説 - - - - - - - -
# iTextSharpの読み込み
[System.Reflection.Assembly]::LoadFrom("D:\itextsharp.dll")
ここでは、ライブラリファイル「iTextSharp.dll」をインポートしています。
iTextSharp.dllを格納している場所は各自異なると思いますので、パスの部分は適宜変更してください。

# pdfファイルの指定
$pdf1 = New-object iTextSharp.text.pdf.pdfreader("C:\Users\user001\Desktop\001.pdf")
$pdf2 = New-object iTextSharp.text.pdf.pdfreader("C:\Users\user001\Desktop\002.pdf")
続いて、既存のPFファイルを読み込み、それぞれを変数に格納しています。

# 新しいPDFファイル
$new_pdf = New-Object System.IO.FileStream("C:\Users\user001\Desktop\new_pdf.pdf", [System.IO.FileMode]::OpenOrCreate)
ここでは、入れ物となる新しいPDFファイルを生成しています。
この時点ではまだ空っぽです。

# 結合後ファイルに読み込んだpdfファイルのコピーを追加する
$copy = New-Object iTextSharp.text.pdf.PdfCopyFields($new_pdf)
$copy.AddDocument($pdf1)
$copy.AddDocument($pdf2)
次に、新しいPDFファイルを受け入れ状態にしたうえで、先に読み込んでおいた既存のPDFファイルを追加します。

# 後片付け
$copy.Close()
$new_pdf.Close()
$pdf1.Close()
$pdf2.Close()
最後に、これまで使用した各ファイルを閉じて終了です。
この閉じる操作を怠ると、PowerShellで開いたままの状態となってしまい、削除や移動などができない可能性がありますので忘れないようにしなければなりません。

以上で結合は完了です。
新しいPDFファイルを開き、結合されていることを確認してください。

スポンサーリンク


0 件のコメント:

コメントを投稿

疑問・質問・リクエスト お気軽にどうぞ (^O^)/