我有一个用C#VS 2008编写的Windows应用程序。此应用程序的目的是将任何文件转换为PDF文件。我找到了可以转换文件的代码,但是我遇到了一个小问题。
首先是代码:
private void PrintToAdobePDF(string strInputFilePath)
{
ProcessStartInfo pProcInfo = new ProcessStartInfo();
bool blResult;
blResult = SetDefaultPrinter(D2P_Adobe_Printer);
if (blResult)
{
pProcInfo.FileName = strInputFilePath;
pProcInfo.Verb = "Print";
pProcInfo.CreateNoWindow = true;
pProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process pProc = Process.Start(pProcInfo);
pProc.WaitForExit(1000);
pProc.CloseMainWindow();
pProc.Close();
}
我遇到的问题是,当调用Process.Start()方法时,它运行的是两个动词而不是我指定的一个动词(“打印”)。它正在运行“打开”和“PrintTo”,这使得原始文件的应用程序打开并挂起应用程序(即jpg打开Windows传真和图片查看器)。 我的问题是如何在Process.Start()方法中使用“Print”动词?
提前谢谢
答案 0 :(得分:1)
为strInputFilePath发送了什么?文档说只发送文件名,所以如果你发送可能导致问题的整个路径。
答案 1 :(得分:1)
不,发送没有扩展名的文件名将失败。
最终使用System.Diagnostics.Process打印任意文件最多是不可预测的。这完全取决于您的操作系统如何处理每种类型的文件,以及您的注册表是否已正确配置以处理该文件。
我猜测以这种方式打印.doc文件可能正常,而其他文件类型可能无法正常工作。
在我看来,你应该找到一些关于你可以“自动”打印的文件类型的限制,并为每种类型的文件构建工作解决方案。否则,你会发现很多不可预测的行为。
答案 2 :(得分:1)
您是否尝试过研究是否可以使用命令行参数执行Adobe Reader来完成相同的操作?有时依赖shell是不可能的。