Für Windows XP/Windows Server 2003Print EMF (WMF) von der Befehlszeile mit shimgvw.dll
Ich versuche, eine EMF (oder WMF) Dateiformat auf den virtuellen Drucker „Microsoft XPS Document Writer drucken "Verwenden von Windows-Bild- und Fax-Viewer (shimgvw.dll) über die Befehlszeile. Ich möchte, dass das resultierende XPS im Vektorformat ist, wie das WMF/EMF ist.
Es funktioniert mit allen Bildformaten außer WMF und EMF. Der Dialog zum Speichern des XPS-Druckers wird angezeigt, aber die gespeicherte XPS-Datei ist leer.
Ich kann es tun, wenn ich die WMF laden und klicken Sie auf Datei> Drucken von der Windows Picture und FaxViewer GUI, aber nicht von der Befehlszeile. Auch wenn ich mit der rechten Maustaste auf die WMF-Datei im Windows Explorer klicke und auf Drucken klicke, wird die ausgewählte WMF-Datei nicht zum Drucken freigegeben (WMF- und EMF-Dateien werden aus der Liste gefiltert).
Code:
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);
Ich habe viel über die WMF las eine Weile nutzen und kann nur annehmen, dass die direkte Drucken dieser Dateien entfernt worden ist? Aber wenn ich diese WMF-Dateien von der GUI aus drucken kann, sehe ich nicht, wie der Exploit vermieden wurde.
Ich möchte eine XPS-Vektordatei aus einer WMF/EMF-Datei programmatisch ohne Benutzerinteraktion erstellen. Ich könnte mir vorstellen, dass ich das tun könnte, weil alle beteiligten Formate zu Microsoft gehören.