2009-04-15 13 views
1

を使用してコマンドラインからの印刷EMF(WMF)私はEMF(またはWMF)を印刷しようとしているファイル形式コマンドラインからWindowsピクチャとFAXビューア(shimgvw.dll)を使用します。結果のXPSをWMF/EMFのようにベクトル形式にしたい。のWindows XP/Windows Server 2003で</p> <p>についてSHIMGVW.DLL

これは、WMFとEMF以外のすべての画像フォーマットで使用できます。 XPSプリンタ保存ダイアログが表示されますが、保存されているXPSファイルは空です。

WMFを読み込んで、WindowsのPicture/FaxViewer GUIからFile> Printをクリックしますが、コマンドラインからは印刷できません。また、WindowsエクスプローラでWMFファイルを右クリックして[印刷]をクリックすると、選択したWMFファイルが選択できなくなります(WMFファイルとEMFファイルがリストから除外されます)。

コード:
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = @"C:\WINDOWS\System32\rundll32.exe";
info.Arguments = @"C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt ""c:\vectorImage.emf"" ""Microsoft XPS Document Writer""";
Process.Start(info);

私はWMFについて多くは、しばらく前に活用してのみ、これらのファイルのダイレクト印刷が削除されていることを前提とすることができます読みましたか?しかし、これらのWMFファイルをGUIから印刷できれば、その悪用がどのように回避されたかはわかりません。

私がしたいのは、WMF/EMFファイルから、ユーザーの操作を必要とせずにプログラムで作成することです。すべてのフォーマットがMicrosoftに属しているため、これを実行できるはずです。

答えて

0

GDIは、XPSドキュメントにコマンドを取得する方法のためのCで、次の例を見てみましょう:セットアップ、その後、スタートページを呼び出し、STARTDOCを呼び出し、プリンタDCを作成している、あなたが何をしたいのか http://blogs.msdn.com/fyuan/archive/2005/09/16/469076.aspx

をemfを配置するためのビューポートとウィンドウスケール、PlayEnhMetaFile()、EndPage、EndDocを呼び出します。

Feng Yuanが提示しているトリックは、出力XPSファイル名を指定するためにDocInfo引数をStartDocに使用していますが、メタファイルの内容をプリンタDCに再生することをお勧めします。

私は、EMFの悪用がMicrosoft Updateによって閉鎖されたと考えています。あなたが見ている問題は、GDIとXPSのプリントパスが別々であり、このコーナーケースでそれらを橋渡しする努力が不足しているためです。

-jason

関連する問題