PDF出力

解決


藤本  2008-02-25 13:21:22  No: 67671  IP: 192.*.*.*

Visual C++ 2005 MFC で、
印刷処理(CDCクラスのメンバ関数で描画)を実装済みの自作アプリに、
「Acrobatがインストールされていたら
事前に設定したフルパス名で即PDF出力する(設定画面も出さない)」
という機能を入れたいと思っています。

とりあえず、SetDefaultPrinter関数でプリンタ名を変更することによって
"Adobe PDF"のデバイスコンテキストを取得することは出来るのですが、
これに対して描画をすると、最初に保存ダイアログが出てきてしまいます。

もちろん、"Adobe PDF"の設定で保存先の設定をしておけばよいのですが、
このへんの設定に依存されずに無条件に吐き出したいと思っています。

印刷時のDEVMODEのなどの設定でいじれるものなのでしょうか?

編集 削除
通りすがり  2008-02-25 15:20:30  No: 67672  IP: 192.*.*.*

AcrobatのSDKでも使わないとムリっぽい気がします。
http://www.adobe.com/devnet/acrobat/

編集 削除
藤本  2008-02-26 11:47:34  No: 67673  IP: 192.*.*.*

情報ありがとうございます。
Acrobat SDKをダウンロードして調べてみました。
Distillerに外からPostScriptファイルを渡して
PDFファイルに変換させるサンプルがありましたが、
そのPostScriptファイル自体は独自に作らないといけないようです。

"Adobe PDF"プリンタドライバでPostScriptファイルだけを吐き出して、
Distillerに変換してもらうという方法なら可能かもしれません。

いったん解決マークを付けさせていただきますが、
このへんを経験されたことのあるかたがいらっしゃれば、
引き続き解説いただけると嬉しいです。

編集 削除
通りすがり  2008-02-26 15:57:39  No: 67674  IP: 192.*.*.*

全然違うアプローチと言うか、印刷処理の書き直しになりますが、Crystal Reportで直接PDFとして保存できないですかね?

編集 削除
藤本  2008-02-27 09:25:42  No: 67675  IP: 192.*.*.*

ご意見ありがとうございます。
「Crystal Report」というのは初めて知りました。
VBやC#やのプロジェクトには表示されているのですが、VCには出てきませんね。

印刷処理の書き直しというのもちょっと規模が大きくなりそうですが、
いろいろな方法を検討してみたいので、調べさせていただきます。
ありがとうございます。

編集 削除