我正在尝试使用其默认应用程序在我的Windows窗体应用程序中创建将任何文件打印到XPS的方法。这工作正常,但我无法将目标XPS路径传递给打印机,并且打开文件对话框总是弹出。
任何不使用FindWindow interrop的建议都会有所帮助。
谢谢!
private void PrintXps(string printFilePath, string destinationXps){
var printJob = new Process();
printJob.StartInfo.FileName = filePath;
printJob.StartInfo.UseShellExecute = true;
printJob.StartInfo.Verb = "printto";
printJob.StartInfo.CreateNoWindow = true;
printJob.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
var xps = PrinterSettings.InstalledPrinters.Cast<string>().First(p => p.ToLower().Contains("xps"));
printJob.StartInfo.Arguments = string.Format("\"{0}\"", xps);
printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(filePath);
try
{
printJob.Start();
printJob.WaitForExit();
}
catch (Win32Exception ex)
{
MessageBox.Show("File is not supported. ");
}
}
答案 0 :(得分:1)
我发现商业解决方案有效。它安装自己的驱动程序并提供.NET api来设置文件名。它直接转换为PDF,但随后可以导出到XPS。点击此处:Amyuni PDF Converter