業務自動化とプログラミングのためのTips

自動化.work

PowerShell Windows

コマンドラインでPDFの結合を行う[PowerShell]

更新日:

WindowsのコマンドラインでPDFを処理するには

  • コマンドライン対応のアプリケーションを使用する。(pdftk.exe)
  • PowerShellでPDFを操作できるライブラリを使用する。(iTextSharp)

の2つがあります。

どちらでも操作感や機能に差はなく、自動化をする上では障壁とならないと思いますが、今回はPowerShellでPDFの処理ができるライブラリを使用した方法を紹介します。

iTextSharpのインストール

iTextSharpは以下のURLからダウンロードできます。

iTextSharp, a .NET PDF library | SourceForge.net
https://sourceforge.net/projects/itextsharp/

ファイルの中身は色々と入っておりますが、今回は基本的な操作のみということで、"itextsharp-dll-core"のみ使用します。
itextsharp-dll-coreを展開してフォルダをCドライブ直下にコピーしました。置く場所はどこでも良いですが、中のDLLファイルはPowerShellのスクリプトから読み込みます。

DLL読み込みのエラー

Windowsのバージョンによって挙動が違うのか、Windows10ではDLLを置いただけではスクリプト実行時に以下のようなエラーが発生しました。

"1" 個の引数を指定して "LoadFrom" を呼び出し中に例外が発生しました: "ファイルまたはアセンブリ 'file:///C:\itextsharp-dll-core\itextsharp.dll'、またはその依存関係の 1 つが読み込めませんでした。操作はサポートされません。 (HRE
SULT からの例外:0x80131515)"
発生場所 C:\Users\usuikanae\Documents\PowerShell Practice\pdf_control\joint_pdf.ps1:2 文字:1
+ [System.Reflection.Assembly]::LoadFrom("C:\itextsharp-dll-core\itexts ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FileLoadException

どうもインターネットからダウンロードした得体の知れないDLLはあらかじめOSが利用できないようにブロックしているようです。プロパティからブロックの解除を行う必要があります。

PDFの結合するスクリプトのコード

実行時に引数として結合したいPDFファイルを全て指定すると全て結合されたPDFファイルが生成される。


-PowerShell, Windows
-

Copyright© 自動化.work , 2020 All Rights Reserved.