通过Microsoft XPS文档编写器将PDF转换为XPS文档

8

使用Microsoft XPS文档编写器打印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)以便于保存结果。大家都建议使用DOCINFO来解决这个问题,但我没有找到任何使用示例。 我需要通过Microsoft XPS文档编写器以默认输出文件名的方式自动打印PDF文件。在这种情况下,我应该如何使用DOCINFO? 你能帮助我吗?

解决方案并不那么简单(需要10多行代码)。无论如何,Adobe Reader存在一个经典问题 - 一个副本仍然保持打开状态,这对用户来说看起来很糟糕。最好使用像这样的pdf到xps转换工具:https://www.pdftron.com/pdf-sdk/conversion-library/ 还有2-3个替代方案。 - i486
1个回答

1
除非您给它桌面会话并且有用户在那里,否则无法可靠地通过生成Acrobat Reader来打印,因为它有时会弹出需要用户注意的对话框。此外,如果未经许可使用,则违反了Adobe的许可协议。
但是,您可以使用Ghostscript打印。有一个名为Ghostscript.Net的C#接口可用于Ghostscript,我已经在一些非常大的项目中成功使用过。Ghostscript和Ghostcript.Net都是免费且开源的。

1
在使用Ghostscript.Net之前,非常、非常重要的是阅读其许可条款。它使用的是“Affero GPL”许可证,如果您正在开发商业软件,则这是一种非常危险的许可证。 - Jamie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接