none
印刷データの変更 RRS feed

  • 質問

  • お世話になります。

    アプリケーション(wordやexcel、PDFなど)から印刷を行う際、印刷ダイアログの「印刷」ボタンを押した後に画面を表示(印刷濃度などを設定)し、印刷データ(ビットマップ)を変更して印刷処理を行いたいと思っています。

    フックを仕掛けておくのだろうと予測はしているのですが、どのプロセスを監視すればいいのかが分かりません。
    なお、プリンタは、PC直結・プリンタサーバ上にある場合など、条件問わず実現したいと思ってます。

    ご教示のほど宜しくお願いします。
    2009年7月31日 0:27

回答

  • そういう処理をするなら、DDKで仮想プリンタを作って、印刷データを受け取り、 編集した後に、改めてホントのプリンタに送るべきではないでしょうか。 たとえばFinePrintなどがそういう系統のソフトですよね。
    jzkey
    • 回答としてマーク 菊地俊介 2009年9月14日 9:41
    2009年7月31日 10:17

すべての返信

  • OS によって多少違いはあるはずなのですが、Print Spooler ですかね。
    Windows 2000 までですと、PrintMon.exe というサンプルが公開されているのですが。

     PrintMon.exe、Win32 スプーラー API を例します。
     http://support.microsoft.com/kb/196805/ja
    2009年7月31日 1:03
  • totojoさん 回答ありがとうございます。

    KB196805については、先日みつけて調査してみたのですが、ジョブが発生したタイミングをフックできるのですが、プリンタサーバ上のプリンタに対しては印刷の中断であったりの操作ができませんでした。印刷データの取得もできておりません。

    printspoolerに行く前のEndDoc( ) かなと思いEndDoc( ) をフックしてみましたが、印刷データの取得ができておりません。

    すみませんが、サンプルや技術的なアドバイスなどあれば、宜しくお願いします。
    2009年7月31日 2:42
  • そういう処理をするなら、DDKで仮想プリンタを作って、印刷データを受け取り、 編集した後に、改めてホントのプリンタに送るべきではないでしょうか。 たとえばFinePrintなどがそういう系統のソフトですよね。
    jzkey
    • 回答としてマーク 菊地俊介 2009年9月14日 9:41
    2009年7月31日 10:17
  • 皆様、こんにちは。

    totojoさん、jzkeyさん、回答ありがとうございます。

    たけし59さん、はじめまして。フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?印刷データの加工を行いたいとなると、やはり仮想プリンタの仕組みを使わないと難しそうですね。
    これといった情報は見つからなかったのですが、オープンソースのPDFライター等が少しは参考になるかもしれません。

    また、有用な情報と思われたため、jzkeyさんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    2009年9月14日 9:50