• ベストアンサー

VB2005からページ指定してPDFの印刷の方法

Windows XP上で、VB2005からページ指定してPDFファイルを印刷したいと思っています。 ProcessStartInfo.Verb = "Print"を使えば、PDFファイル全体を印刷させることが出来るのはわかっているのですが、ページ指定の方法が分かりません。 DOSプロンプトを使って、AdobeReader(Acrobat)の印刷ダイアログを表示させて印刷する方法があるのは知っているのですが、独自の印刷ダイアログから印刷をさせたいと思っています。 方法はどんなものでも良いので(できれば無料の)何か良い方法があればぜひ教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

私の PC には Adobe Reader 7.0 をインストールしてあるのですが、 参照設定で Adobe Acrobat 7.0 Type Library を設定してやると Dim aa As Acrobat.AcroApp Dim av As Acrobat.AcroAVDoc dim ap As Acrobat.AcroPDDoc と言った宣言ができるようになりました。 おそらく、この辺りのオブジェクトを使用すればできるのだろうと思うのですが、私には使用方法がよくわかりませんでした。 http://www.adobe.com/devnet/acrobat/?tab:downloads=1/http://www.est.co.jp/pdfl/ と言ったものを見れば、使用方法がわかるのではないかと推測しています。

sazusa
質問者

お礼

tsukasa-12r様、回答ありがとうございます。 まだきちんと調べていないのですが、Adobe Acrobat 7.0 Type Library(私のマシンにはReader8.0が入っているのでAdobe Acrobat 8.0 Type Library)を使っていろいろ試してみたいと思います。 後ほど、どうなったか改めて報告させていただきます。

sazusa
質問者

補足

下記のようにして、ページを指定して印刷する方法を実現することが出来ました。 参考にさせて頂いたURLは http://homepage3.nifty.com/belie/vba/vba016.htm です。 参考URLのほぼそのままなのですが、コードを一応書いておきます。 ----------------------------------- Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Const FName As String = "C:\sample.pdf" Dim AVDoc As Acrobat.CAcroAVDoc Dim PDDoc As Acrobat.CAcroPDDoc Dim wkPage As Integer ' PDFファイルを開く AVDoc = CreateObject("AcroExch.AVDoc") R1 = AVDoc.Open(FName, "") If Not CBool(R1) Then MsgBox("Openに失敗したため処理を中止します。") Exit Sub End If PDDoc = AVDoc.GetPDDoc() ' ページ数を取得する wkPage = PDDoc.GetNumPages() ' 印刷する R1 = AVDoc.PrintPagesSilent(0, wkPage - 1, 1, CLng(True), CLng(True)) If Not CBool(R1) Then MsgBox("印刷に失敗しました。") End If ' PDFファイルを閉じる AVDoc.Close(CLng(False)) End Sub End Class -----------------------------------

関連するQ&A