Для Windows XP / Windows Server 2003
Я пытаюсь распечатать файл формата EMF (или WMF) на виртуальном принтере «Microsoft XPS Document Writer» с помощью Windows Picture and Fax Viewer (shimgvw.dll) из командной строки. Я хочу, чтобы полученный XPS был в векторном формате, например, WMF / EMF.
Он работает со всеми форматами изображений, кроме WMF и EMF. Появится диалоговое окно сохранения принтера XPS, но сохраненный файл XPS пуст.
Я могу это сделать, если загружу WMF и щелкну «Файл»> «Печать» из графического интерфейса Windows Picture и FaxViewer, но не из командной строки. Кроме того, если я щелкните правой кнопкой мыши файл WMF в проводнике Windows и нажмите кнопку «Печать», это не позволит распечатать выбранный файл 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 из графического интерфейса, я не понимаю, как удалось избежать эксплойта.
Я хочу создать векторный файл XPS из файла WMF / EMF программно, без необходимости взаимодействия с пользователем. Я полагаю, что смогу это сделать, потому что все задействованные форматы принадлежат Microsoft.