VB.net : iText(PDF) で、MSGOTHIC.TTC を使って4つのレイヤーを使うサンプル (要 itextsharp.dll)

  コードサンプル



▼ Java でテストした内容をそのまま VB.net に移植しました。
Java バッチビルド : iText(PDF) で、MSGOTHIC.TTC を使って4つのレイヤーを使うサンプル

iTextSharp | Get iTextSharp at SourceForge.net より dll をダウンロードして参照するだけです
大きな違いは無く、出ストリームがこちら用になったのと、getter が プロパティになったぐらいでしょうか

  
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.io

Module Module1

	Sub Main()

		Dim pdf As String = My.Application.Info.DirectoryPath & "\pdftest.pdf"

		Dim doc As Document = New Document()

		' 出力先を指定し、文書をPDFとして出力
		Dim pw As PdfWriter = _
		PdfWriter.GetInstance( _
		 doc, _
		 New FileStream(pdf, FileMode.Create) _
		)

		' 出力開始
		doc.Open()

		Dim windir As String = System.Environment.GetEnvironmentVariable("windir")


		' 日本語フォントの設定
		Dim font As Font = New Font( _
		  BaseFont.CreateFont( _
		  windir & "\Fonts\MSGOTHIC.TTC,0", _
		  BaseFont.IDENTITY_H, _
		  BaseFont.EMBEDDED))

		Dim font2 As Font = New Font( _
		  BaseFont.CreateFont( _
		  windir & "\Fonts\MSGOTHIC.TTC,1", _
		  BaseFont.IDENTITY_H, _
		  BaseFont.EMBEDDED))


		' *******************************************
		' 座標指定する為のオブジェクト
		' *******************************************
		' 一番上のレイヤー
		Dim pcb As PdfContentByte = pw.DirectContent

		' 一番上のレイヤーに直線を引く
		pcb.moveTo(250, 10)
		pcb.lineTo(250, 800)
		pcb.stroke()

		Dim ct As ColumnText = New ColumnText(pcb)

		Dim myText As Phrase = Nothing

		' MS GOTHIC
		myText = New Phrase("ABCDEFGHIJKLMN", font)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, 820, _
		 0, _
		 Element.ALIGN_LEFT _
		)
		ct.go()

		myText = New Phrase("漢字表示", font)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, 810, _
		 0, _
		 Element.ALIGN_LEFT _
		)
		ct.go()

		' MS P GOTHIC
		myText = New Phrase("ABCDEFGHIJKLMN", font2)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, 800, _
		 0, _
		 Element.ALIGN_LEFT _
		)
		ct.go()

		myText = New Phrase("漢字表示", font2)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, 790, _
		 0, _
		Element.ALIGN_LEFT _
		)
		ct.go()

		Dim top As Integer = 750
		myText = New Phrase("left:" & doc.PageSize.Left.ToString(), font2)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, top, _
		 0, _
		 Element.ALIGN_LEFT _
		)
		ct.go()

		top -= 10
		myText = New Phrase("right:" & doc.PageSize.Right.ToString(), font2)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, top, _
		 0, _
		 Element.ALIGN_LEFT _
		)
		ct.go()

		top -= 10
		myText = New Phrase("top:" & doc.PageSize.Top.ToString(), font2)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, top, _
		 0, _
		 Element.ALIGN_LEFT _
		)
		ct.go()

		top -= 10
		myText = New Phrase("bottom:" & doc.PageSize.Bottom.ToString(), font2)
		ct.setSimpleColumn( _
		 myText, _
		 100, 0, _
		 300, top, _
		 0, _
		 Element.ALIGN_LEFT _
		)
		ct.go()

		' 真ん中のレイヤー( 画像レイヤーの上 )
		Dim pg As Paragraph = New Paragraph("標準", font)
		doc.add(pg)
		doc.add(pg)
		doc.add(pg)
		doc.add(pg)
		doc.add(pg)
		' 空文字は無視されるので " "
		pg = New Paragraph(" ")
		doc.add(pg)
		doc.add(pg)

		Dim p As Paragraph = New Paragraph()
		Dim i
		For i = 0 To 24
			p.add( _
			 New Chunk( _
			  "一般テキスト   一般テキスト   一般テキスト" _
			  , font _
			 ) _
			)
		Next
		doc.add(p)

		' 真ん中のレイヤー( 画像レイヤー )
		Dim img As Image = _
		 Image.GetInstance(My.Application.Info.DirectoryPath & "\sample.png")
		img.setAbsolutePosition(120, 500)
		doc.add(img)

		' 一番上のレイヤー( 灰色の小さな円 )
		pcb.setRGBColorFill(&HAA, &HAA, &HAA)
		pcb.circle(250.0, 500.0, 50.0)
		pcb.fill()
		'		pcb..sanityCheck()

		' 一番下のレイヤー( 赤いおおきな円 )
		Dim cbu As PdfContentByte = pw.DirectContentUnder
		cbu.setRGBColorFill(&HFF, &H0, &H0)
		cbu.circle(250.0, 500.0, 100.0)
		cbu.fill()
		'		cbu.sanityCheck()

		' 一番上のレイヤーに直線を引く
		pcb.moveTo(255, 10)
		pcb.lineTo(255, 800)
		pcb.stroke()

		' 出力終了
		doc.Close()

		System.Diagnostics.Process.Start(pdf)

	End Sub

End Module
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ