Для Windows XP / Windows Server 2003
Я пытаюсь распечатать формат файла EMF (или WMF) на виртуальном принтере «Microsoft XPS Document Writer» с помощью средства просмотра изображений и факсов Windows (shimgvw.dll) из командной строки. Я хочу, чтобы результирующий XPS был в векторном формате, как WMF / EMF.
Работает со всеми форматами изображений, кроме WMF и EMF. Откроется диалоговое окно сохранения принтера XPS, но сохраненный файл XPS пуст.
Я могу сделать это, если я загружаю WMF и нажимаю Файл> Печать в графическом интерфейсе Windows Picture and FaxViewer, но не в командной строке. Также, если я щелкну правой кнопкой мыши по файлу WMF в проводнике Windows и нажму «Печать», он не разрешит печатать выбранный файл WMF (он фильтрует файлы WMF и EMF из списка).
Код:
ProcessStartInfo info = new ProcessStartInfo();<br>
info.FileName = @"C:\WINDOWS\System32\rundll32.exe";<br>
info.Arguments = @"C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt ""c:\vectorImage.emf"" ""Microsoft XPS Document Writer""";<br>
Process.Start(info);
Я много читал об эксплойте WMF некоторое время назад и могу только предположить, что прямая печать этих файлов была удалена? Но если я могу распечатать эти файлы WMF из графического интерфейса, то я не вижу, как избежать этого эксплойта.
То, что я хочу сделать, - это создать векторный файл XPS из файла WMF / EMF программным способом, не требуя взаимодействия с пользователем. Я мог бы представить, что я должен быть в состоянии сделать это, потому что все задействованные форматы принадлежат Microsoft.