4

我有一个用 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() 方法中使用“打印”动词?

先感谢您

4

3 回答 3

1

strInputFilePath 发送什么?文档说只发送文件名,所以如果您发送可能导致问题的整个路径。

于 2009-12-04T18:37:01.870 回答
1

不,发送不带扩展名的文件名将失败。

最终使用 System.Diagnostics.Process 打印任意文件充其量是不可预测的。这完全取决于您的操作系统如何处理每种类型的文件,以及您的注册表是否正确配置为处理该文件。

我猜想以这种方式打印 .doc 文件可能工作正常,而其他文件类型可能效果不佳。

在我看来,你应该找到一些关于你将允许“自动”打印的文件类型的限制,并为每种类型的文件构建工作解决方案。否则,你会发现很多不可预知的行为。

于 2009-12-04T18:52:26.347 回答
1

您是否尝试过研究是否可以使用完成相同任务的命令行参数执行 Adob​​e Reader?有时依赖外壳是不确定的。

于 2009-12-04T18:54:50.873 回答