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()

続いて解説です。

2016-08-01

[PowerShell] 変数に変数を使う

PowerShellだけでなく、どんなプログラムでも変数は必ず使用します。

PowerShellでは事前の宣言なく使用できる変数ですが、時折、連番で変数を取りたい場合があります。

(例)
$hensu01
$hensu02
$hensu03
$hensu04
  …

今回は上記のような「変数を連番で取る方法」をご紹介します。

以下、スクリプトです。
For ( $i = 1 ; $i -lt 10 ; $i++)
{
    # testで始まる連番の変数を作成する
    Set-Variable -Name ("test0" + $i) -Value ($i)
}

# 作成したtestが付く変数を全て取得する
Get-Variable -Name test*
上記内容をコピーし、PowerShell ISEに貼り付け後、実行するとコンソール部分に作成した変数が表示されるはずです。

続いて解説をしていきます。

2016-06-20

PowerShellでマウスポインタの座標を取得する

PowerShellでユーザーフォームを作っていると、ふと、マウスポインタの座標を取得したくなることがあります。

例えば、「コンテキストメニューを表示させるために座標を取得する」といった場合が当てはまります。

よって今回のテーマは「PowerShellでマウスポインタの座標を取得する」です。

<今回の完成品>


今回の完成品は、ボタンのみで構成されたフォームを使用します。
ボタンをクリックすると1秒ごとにマウスポインタの現在座標を取得し、コンソールに出力します。
10回取得を繰り返したところで終了します。

以下がスクリプトとなります。

2016-06-11

PowerShellでxmlファイルを操作する - 書き込み(保存)編 -

PowerShellでは、ユーザーの好みに合わせて、独自にフォームを作成することができます。

今回は「PowerShellでユーザーフォームを作る - 設定ファイル 書き込み(保存)編 -」です。

以前の記事で設定ファイルを読み込む方法をご紹介致しました。
PowerShellでユーザーフォームを作る - 設定ファイル 読み込み編 -

しかし、設定ファイルの内容は読み込むばかりではなく、書き込んでナンボですね。

よって、今回は「読み込み編」で使用したものを流用し、新しい内容を書き込み(保存)まで行う方法をご紹介していきます。

使用するxmlファイルの内容は前回と同じく下記の通りです。

 [ setting.xml ]
<?xml version="1.0" encoding="utf-8"?>
<root>
    <name>山田太郎</name>
    <userid>t_yamada</userid>
    <path>C:\Users\t_yamada\Desktop</path>
    <color>lightblue</color>
</root>
 続いてスクリプトを記述していきます。

2016-05-11

PowerShellでxmlファイルを操作する - 読み込み編 -

PowerShellでは、ユーザーの好みに合わせて、独自にフォームを作成することができます。

今回は「PowerShellでユーザーフォームを作る - 設定ファイル 読み込み編 -」です。

あなたが作成したユーザーフォームを、例えば同じ社内の人が複数人で使用していたりしませんか?

そして、使用する人(パソコン)によってフォルダのパスが違ったり、ファイル名が違ったり、文字色が違ったりと、十人十色の状況になっていませんか?

使う人が2~3人と少ないような場合は、「スクリプト内でユーザーIDなどから処理を分岐させる」「一人ずつスクリプトを作る」などの方法でも問題ないかもしれませんが、それが10人、20人となってくると大変です。

そういった場合に使用するのが「設定ファイル」です。

設定ファイル内には個別の情報を予め入力しておく必要があります。
その設定ファイルとスクリプトファイルを同じフォルダ内に格納しておき、スクリプトを実行したときに設定ファイル内を読み込むことで、それぞれの設定が反映されます。

<今回の完成品>


設定ファイルではiniファイルやxmlファイルがよく使われますが、今回はxmlファイルを使ってご紹介していきます。

まず先にxmlファイルを準備します。

今回使用するxmlファイルの内容は次のようになっています。

- - - [ setting.xml ] - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<?xml version="1.0" encoding="utf-8"?>
<root>
    <name>山田太郎</name>
    <userid>t_yamada</userid>
    <path>C:\Users\t_yamada\Desktop</path>
    <color>lightblue</color>
</root>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

続いて、スクリプトを記述していきます。

2016-03-25

PowerShell ドラッグ&ドロップでListViewの項目を移動させる

PowerShellでは、ユーザーの好みに合わせて、独自にフォームを作成することができます。

今回は以前ご紹介したリストビューを少し発展させて、ドラッグ&ドロップで項目を移動できるようにしたいと思います。

リストビューについて詳しく知りたい方はPowerShellでユーザーフォームを作る - リストビュー編 -をご参照ください。

<今回の完成品>


早速スクリプトを記述していきます。
少々長いですが、ご了承ください。

2016-03-24

PowerShellでユーザーフォームを作る - ツリービュー編 -

PowerShellでは、ユーザーの好みに合わせて、独自にフォームを作成することができます。

今回は「PowerShellでユーザーフォームを作る - ツリービュー編 -」です。

ツリービューはリストボックスやリストビューなどと同じ「リスト系コントロール」のひとつです。


ツリービューの代表的な使用例といえば、上記のようなフォルダの階層表示が有名です。

<今回の完成品>

展開時と折り畳み時

それではスクリプトを記述していきます。