Top / TIPS / Acrobat Distiller による PDF の出力

Distiller の機能は、次のように、2つに分かれています。

1.印刷された情報を、いったん PostScript ファイルに変換(Distiller プリンタドライバの機能です。)
2.PostScript ファイルを PDF ファイルに変換(Distiller 本来の機能です。)


PDF ファイルを作成するには、次のようにします。

1. DOCINFO 構造体の lpszOutput メンバに、PostScript ファイルのファイル名をセットして、StartDoc API を呼び出す。(注)
2. 印刷処理を行う。
3. 印刷処理を終了。
4. Acrobat Distiller Automation の、FileToPDF メソッドで、PostScript ファイルを PDF に変換する。

(注)Printer オブジェクトでは、設定することができないので、API を使います。
Crystal Reports の場合は、PESetPrintOptions で、ファイル名をセットしてください。

<サンプルプログラム> ※ Acrobat Distiller を参照設定してください。

Option Explicit

Private Type typDOCINFO
       cbSize As Long
       lpszDocName As String
       lpszOutput As String
End Type

Private Declare Function StartDoc _
           Lib "gdi32" _
           Alias "StartDocA" _
           (ByVal hdc As Long, lpdi As typDOCINFO) As Long
Private Declare Function StartPage _
           Lib "gdi32" _
           (ByVal hdc As Long) As Long
Private Declare Function EndPage _
           Lib "gdi32" _
           (ByVal hdc As Long) As Long
Private Declare Function EndDocAPI _
           Lib "gdi32" _
           Alias "EndDoc" (ByVal hdc As Long) As Long
Private Declare Function LineTo _
           Lib "gdi32" _
           (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Sub Main()

   Dim udtDocInfo As typDOCINFO
   Dim objPdfDistiller As New ACRODISTXLib.PdfDistiller
   Dim lngHDC As Long

   Const strFilePS = "C:\temp\test.ps"
   Const strFilePDF = "C:\temp\test.pdf"
 
  ' 印刷処理
   With udtDocInfo
       .cbSize = Len(udtDocInfo)
       .lpszDocName = "ジョブタイトル"
       .lpszOutput = strFilePS
   End With
   lngHDC = Printer.hdc
   StartDoc lngHDC, udtDocInfo
   StartPage lngHDC
   LineTo lngHDC, 1000, 100
   EndPage lngHDC
   EndDocAPI lngHDC

   ' PostScript を PDF に変換
   objPdfDistiller.FileToPDF strFilePS, strFilePDF, vbNullString

End Sub
最近の Crystal Reportsは、PDF にエクスポートする機能が
ついてるのでそっちを使ったほうが楽です。
レガシーAPI は今後サポート無しの方向に向かってるようですし、
ActiveReport などの他の帳票出力ツールもPDFをサポートしてますから
必要ないテクニックになっちゃいましたね。(^_^;)



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-25 (日) 23:56:05 (2852d)