none
C#でEMFのどこがおかしいか調査する方法 RRS feed

  • 質問

  • ジャガビーと申します。

    以下の環境で開発しています。

    OS:Windows7 x64

    開発ツール:Visual Studio 2008  Professional Edition

    プリンタ:FX DocuCentre-IV C3375

    あるEMFファイルをPlayEnhMetaFileを使用して、プリンタに印刷しようとしていますが、

    Windowsのエラーコード:1003が発生してしまい、印刷できません。

    EMFの内容に問題があるか調査したいのですが、どのようにして調査すればよいでしょうか。

    ご存知の方がおりましたら、ご教授ください。

    よろしくお願いいたします。

    2012年11月1日 8:53

すべての返信

  • おはようございます。

    検討違いかもしれないのですが、
    EMFの内容に問題があることを疑われていますが、
    なぜそのように考えられていますか?

    印刷の方法に問題がある可能性もありそうですが、
    その可能性は低そうなのでしょうか?
    どのように考えられたかを教えて頂けると参考になるかもしれません。

    また、EMFの内容に問題があるのであれば、
    ファイルとして開くこともできないような気がします。
    ペイントソフトなどでEMFファイルは開くことができますか?
    また、そのようなソフトで印刷することはできませんか?

    これを調べることで、
    ファイルに問題があるのか、印刷方法に問題があるのかを
    問題の切り分けになるかもしれません。
    2012年11月2日 0:36
  • コンドルさん、ご指摘ありがとうございます。

    確かにEMFがおかしいと疑うのは早合点でした。

    ペインソフトでは正しく表示できています。

    EMFを疑ったのはWindowsエラーコードの1003が起こるのが、

    EMFレコード内にあるEndPathやFillPathに起因するとあったためです。

    http://msdn.microsoft.com/ja-jp/library/cc428495.aspx

    http://msdn.microsoft.com/ja-jp/library/cc428628.aspx


    問題のEMF内ではEndPathやFillPathの命令が含まれています。

     

    なお、印刷の方法ですが、

    OpenPrinter

    StartDoc

    StartPage

    PlayEnhMetaFile

    EndDoc

    の流れで行っています。

    2012年11月3日 15:09