PowerShellでPDFのサイズを取得する。

| 2009年3月4日水曜日
PDFの扱うために、iTextSharpからitextsharp-4.1.2-dll.zipを落としてくる。
itextsharp.dllが入っているので適当な場所に配置する。

PowerShellからitextsharp.dllのあるフォルダでDLLを読み込む。

> [System.Reflection.Assembly]::LoadFrom(( Join-Path $pwd itextsharp.dll))

GAC    Version        Location
---    -------        --------
False  v1.1.4322      C:\itextsharp-4.1.2-dll\itextsharp.dll

これで準備ができたので、PdfReaderを使ってサイズを取得したいPDFファイルを読み込む。

> $pdfReader = New-Object iTextSharp.text.pdf.PdfReader(( Join-Path $pwd foo.pdf))

1ページめのサイズを取得する。

> $pdfReader.GetPageSize(1)

Type               : 30
Chunks             : {}
Top                : 841.875
Border             : -1
GrayFill           : 0
Left               : 0
Right              : 595.275
Bottom             : 0
BorderColorBottom  :
BorderColorTop     :
BorderColorLeft    :
BorderColorRight   :
Width              : 595.275
Height             : 841.875
BorderWidth        : -1
BorderColor        :
BackgroundColor    :
Rotation           : 0
BorderWidthLeft    : -1
BorderWidthRight   : -1
BorderWidthTop     : -1
BorderWidthBottom  : -1
UseVariableBorders : False

このファイルのページサイズは、

>$pdfReader.GetPageSize(1).Height #高さ
841.875
>$pdfReader.GetPageSize(1).Width #幅
595.275

このファイルはA4縦なわけだけど、数字だけみてもわからないのでiTextSharpで定義されているA4縦と比較する。
定義されているA4縦はこれでわかる。

> [ITextSharp.text.PageSize]::A4

Top                :
Border             :
GrayFill           :
Left               :
Right              :
Bottom             :
BorderColorBottom  :
BorderColorTop     :
BorderColorLeft    :
BorderColorRight   :
BorderWidth        :
BorderColor        :
BackgroundColor    :
BorderWidthLeft    :
BorderWidthRight   :
BorderWidthTop     :
BorderWidthBottom  :
UseVariableBorders :
Type               : 30
Chunks             : {}
Width              : 595
Height             : 842
Rotation           : 0

上記の値を使って、ファイルのページサイズをint型にキャストして比較する。

> [iTextSharp.text.PageSize]::A4.Height -eq [int]$pdfReader.GetPageSize(1).Height
True

ちなみに、A4横の高さと幅を得るには、

> [iTextSharp.text.PageSize]::A4.Rotate().Height #高さ
595

> [iTextSharp.text.PageSize]::A4.Rotate().Width #幅
842

で、取得できる。

0 コメント: