-
2013-05-26 (日) 17:50 Windows 7
-
iTextSharpはiTextをC#に移植したオープンソースのライブラリです。
.netアプリケーションでPDF操作が必要な場合、iTextSharpを利用する事で簡単にPDF操作が出来るようになります。
iTextSharpを利用して複数ページで構成されたPDFファイルを複数の単一ページに分解してPDFファイルとして保存するアプリケーションを作ってみました。
ダウンロード:SplitPDF ver:1.0
登録日:2013-05-24 (ダウンロード回数:149)
itextsharpを利用して作成したPDF分割コンソールアプリケーションです。
PDFを引数として指定するか、ドラッグ&ドロップで指定してください。
.netframework3.5で作成しているので、Windows7環境ならそのまま解凍して動作するはずです。
iTextSharpを日本語で利用する上で、以下のリファレンスを参照すると非常に勉強になります。
iTextSharp クラスライブラリリファレンス
以下、vb.netのソースコードです。
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Module Module1
Sub Main()
'コマンドラインを配列で取得する
Dim cmds As String() = System.Environment.GetCommandLineArgs()
If cmds.Length > 1 Then
For i = 1 To cmds.Length - 1
Dim Path As String = cmds(i)
'ファイルが存在する場合、処理を実行する。
If File.Exists(Path) Then
Dim sParentName As String = System.IO.Path.GetDirectoryName(Path)
Dim sFileName As String = System.IO.Path.GetFileNameWithoutExtension(Path)
Dim sExtension As String = System.IO.Path.GetExtension(Path)
Call SplitPDF(sParentName, sFileName, sExtension)
End If
Next
Else
Console.WriteLine("引数にPDFファイルを指定するか、ファイルをドラッグ&ドロップしてください。")
End If
End Sub
''' <summary>
''' PDFファイルを単一ページPDFに分割する
''' </summary>
''' <param name="sParentName">親ディレクトリ名</param>
''' <param name="sFileName">ファイル名</param>
''' <param name="sExtension">拡張子</param>
Sub SplitPDF(ByVal sParentName As String, ByVal sFileName As String, ByVal sExtension As String)
Try
' リーダー作成
Dim reader As PdfReader = New PdfReader(sParentName & "\" & sFileName & sExtension)
'ページ数の取得
Dim iStartPageNumber As Integer = 1
Dim iEndPageNumber As Integer = reader.NumberOfPages()
Console.WriteLine("指定されたPDFファイルから{0}ページ見つかりました。", iEndPageNumber)
For i As Integer = iStartPageNumber To iEndPageNumber
'ドキュメントを作成
Dim doc As Document = New Document()
'分割後のPDFを保存するディレクトリ名
Dim sSaveFolerName As String = sParentName & "\" & sFileName
'フォルダが存在しなかった場合、新規作成する
If Not File.Exists(sSaveFolerName) Then
System.IO.Directory.CreateDirectory(sSaveFolerName)
End If
' 出力ファイルを開く
Console.WriteLine("{0}を書き出しています。", sFileName & "_" & i & sExtension)
Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream(sSaveFolerName & "\" & sFileName & "_" & i & sExtension, FileMode.Create))
' ドキュメントオープン
doc.Open()
' ContentByte作成
Dim cb As PdfContentByte = writer.DirectContent
doc.SetPageSize(reader.GetPageSizeWithRotation(1))
doc.NewPage()
' ページサイズ設定
doc.SetPageSize(reader.GetPageSizeWithRotation(i))
' ページ作成
doc.NewPage()
' ページ取得
Dim page As PdfImportedPage = writer.GetImportedPage(reader, i)
' ページ向きに合わせてページ追加
Dim iRotation As Integer = reader.GetPageRotation(i)
If iRotation = 90 OrElse iRotation = 270 Then
cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(i).Height)
Else
cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0)
End If
' コミットする
doc.Close()
Next
Catch ex As Exception
Console.WriteLine(ex.Source)
Console.WriteLine(ex.Message)
End Try
End Sub
End Module
- Newer : Mini-ITXケースを使って録画パソコンを組み立てました。
- Older : BitLocker ドライブ暗号化についてのメモ
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://pnpk.net/cms/wp-trackback.php?p=4215
- Listed below are links to weblogs that reference
- iTextSharpを使ってPDF分割アプリケーションを作成する from http://pnpk.net