|
PDFファイルを分割するサンプル(VB.NET)

|
1つのPDFファイルを指定ページを境に2つのPDFファイルに分割するサンプルです。
PDF出力ライブラリとしてiText.NET(iText.NET.2005-dll-1.4.6-1.cab)を使用しています。
iText.NETのダウンロードサイト:http://sourceforge.net/projects/itextdotnet/
iText.NETはvjslib.dll(J#.NET)を参照設定して使用します。
iText.NETのiText.dllとJSharpLib.dllを参照設定して使用します。
PDF関係のプログラムを最初から作るより、こちらのPDFツールと連携した方が早いと思います。
PDF関係のサンプルソースは他にもあります。
PDFファイルを出力するサンプル(VB.NET)
PDFファイルを結合するサンプル(VB.NET)
★フォームモジュール(Form1.vb)
Imports System.io
Imports com.lowagie.text
Imports com.lowagie.text.pdf
Public Class Form1
' (注意1)vjslib.dll(J#.NET)を参照設定する必要があります。
' (注意2)iText.dllを参照設定する必要があります。
' (注意3)JSharpLib.dllを参照設定する必要があります。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 分割するページ番号
Const PAGESPLIT As Integer = 2
' 入力用PDFファイルのオープン
Dim rd As PdfReader = New PdfReader("test.pdf")
' 入力用PDFファイルのページ数取得
Dim pn As Integer = rd.getNumberOfPages()
' 入力用PDFのページ数チェック
If pn >= PAGESPLIT Then
' 出力用PDFオブジェクトの生成
Dim dc1 As Document = New Document(rd.getPageSizeWithRotation(1))
Dim dc2 As Document = New Document(rd.getPageSizeWithRotation(PAGESPLIT))
' 出力用PDFファイルのオープン
Dim fs1 As FileStream = New FileStream("test1.pdf", FileMode.Create, FileAccess.Write)
Dim fs2 As FileStream = New FileStream("test2.pdf", FileMode.Create, FileAccess.Write)
' 出力用PDFオブジェクトとPDFファイルの関連付け
Dim wr1 As PdfWriter = PdfWriter.getInstance(dc1, fs1)
Dim wr2 As PdfWriter = PdfWriter.getInstance(dc2, fs2)
' PDF出力開始
dc1.open()
dc2.open()
' PdfContentByte取得
Dim pcb1 As PdfContentByte = wr1.getDirectContent()
Dim pcb2 As PdfContentByte = wr2.getDirectContent()
' 分割する1つ目のPDF出力処理
For i As Integer = 1 To PAGESPLIT - 1
' ページサイズ設定
dc1.setPageSize(rd.getPageSizeWithRotation(i))
' 改ページ
dc1.newPage()
' ページ取得
Dim pip As PdfImportedPage = wr1.getImportedPage(rd, i)
' ページ出力
If rd.getPageRotation(i) = 0 Then
' 回転しない
pcb1.addTemplate(pip, 1.0F, 0, 0, 1.0F, 0, 0)
Else
' 回転する
pcb1.addTemplate(pip, 0, -1.0F, 1.0F, 0, 0, rd.getPageSizeWithRotation(i).height())
End If
Next
' 分割する2つ目のPDF出力処理
For i As Integer = PAGESPLIT To pn
' ページサイズ設定
dc2.setPageSize(rd.getPageSizeWithRotation(i))
' 改ページ
dc2.newPage()
' ページ取得
Dim pip As PdfImportedPage = wr2.getImportedPage(rd, i)
' ページ出力
If rd.getPageRotation(i) = 0 Then
' 回転しない
pcb2.addTemplate(pip, 1.0F, 0, 0, 1.0F, 0, 0)
Else
' 回転する
pcb2.addTemplate(pip, 0, -1.0F, 1.0F, 0, 0, rd.getPageSizeWithRotation(i).height())
End If
Next
' PDF出力終了
dc1.close()
dc2.close()
End If
End Sub
End Class