2009年2月7日土曜日

VBAでPDF

だいぶ時間がたってしまったな。
エクセルのVBEを開いて「libharu\if\vb6」のフォルダにある「*.bas」をインポート。標準モジュールを追加して下記コードを貼り付け&実行する。
Sub test1()
Dim pdf As Long
Dim font As Long
Dim page As Long
Dim fname As String * 256

fname = ThisWorkbook.Path & "\練習.pdf"

pdf = HPDF_New(AddressOf Error_Handler, ByVal vbNullString)

If pdf = 0 Then
Exit Sub
End If

Call HPDF_SetCompressionMode(pdf, HPDF_COMP_ALL)

Call HPDF_SetPageMode(pdf, HPDF_PAGE_MODE_USE_NONE) 'アウトラインやサムネイルを表示しません。

Call HPDF_SetPageLayout(pdf, HPDF_PAGE_LAYOUT_SINGLE) 'シングル表示

'Call HPDF_SetPassword(pdf, "owner", "user")

page = HPDF_AddPage(pdf)

'Call HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE) '横
Call HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT) '縦

Call print_grid(pdf, page)

Call HPDF_UseJPEncodings(pdf)
Call HPDF_UseJPFonts(pdf)

'font = HPDF_GetFont(pdf, ByVal "Helvetica", ByVal vbNullString)
font = HPDF_GetFont(pdf, ByVal "MS-Gothic", ByVal "90ms-RKSJ-H")

'Call HPDF_Page_SetTextRenderingMode(page, HPDF_STROKE)
Call HPDF_Page_SetRGBFill(page, 0#, 0#, 1)
Call HPDF_Page_SetFontAndSize(page, font, 24)

Call HPDF_Page_BeginText(page)

Call HPDF_Page_TextOut(page, 10, HPDF_Page_GetHeight(page) - 50, "ハローワールド hello world")

Call HPDF_Page_EndText(page)

Call HPDF_SaveToFile(pdf, fname)

Call HPDF_Free(pdf)

End Sub

すばらしい!