PDF到XPS通过Microsoft XPS Document Writer进行转换

时间:2010-02-18 08:20:43

标签: c# xps

使用Microsoft XPS Document Writer打印pdf文档:

string filename = "C:\\1.pdf";

Process process = new Process();
process.StartInfo.Verb = "PrintTo";

process.StartInfo.FileName = @"C:\Program Files\Adobe\Reader 9.0\Reader\acrord32.exe";

process.StartInfo.Arguments = 
    "/t \"C:\\1.pdf\" \"Microsoft XPS Document Writer\" \"xps\"  XPSPort:";

process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;

process.StartInfo.UseShellExecute = false;

process.Start();
process.StandardOutput.ReadToEnd();

process.WaitForExit();

唯一的问题是保存对话框,它请求文件名(* .xps)保存结果的位置。 Everbody建议DOCINFO来解决这个问题,但我没有找到任何使用的例子。 我需要以编程方式通过Microsoft XPS Document Writer以默认输出文件名打印PDF文件。在这种情况下我应该如何使用DOCINFO?

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

除非生成桌面会话,否则无法通过生成Acrobat Reader可靠地进行打印,因为那里会有用户,因为有时会弹出需要用户注意的对话框。

如果在无人看管的情况下使用,它也会违反Adobe的许可证。

但是,您可以使用Ghostscript打印。

Ghostscript有一个名为Ghostscript.Net的C#接口,我已经在一些大型项目中成功使用了该接口。 Ghostscript和Ghostcript.Net都是免费和开源的。

答案 1 :(得分:-1)

DOCINFO struct管理打印后台处理程序中的文件名,但未与xps驱动程序保存对话框实现链接。但您可能会找到“保存”对话框窗口,输入文件名并以编程方式关闭它。例如,请阅读此article