【问题标题】:PDF is not printing from Windows XP, but works on Windows 7PDF 不能从 Windows XP 打印,但可以在 Windows 7 上运行
【发布时间】:2013-07-19 00:42:10
【问题描述】:

以下代码在 Windows 7 上成功打印,但在 Windows XP 上无法运行。如果我进入记事本并手动打印文档,两台计算机的默认打印机设置都可以正常工作。在 Windows XP 机器上,它就在那里,没有错误,什么都没有。

如何调试它以获取错误消息或以其他方式找出为什么不打印?

try
{
    if (File.Exists(pdfPath))
    {
        Process process = new Process();
        process.StartInfo.FileName = pdfPath;
        process.StartInfo.Verb = "print";
        process.StartInfo.CreateNoWindow = true;
        process.Start();
        process.WaitForInputIdle();
        process.Kill();
    }
    else
    {
        MessageBox.Show("The file \"" + pdfPath + "\" does not exist", "File not found", MessageBoxButtons.OK, MessageBoxIcon.Error);
        statusLabel.Text = "";
        return;
    }
}
catch (Exception e)
{
    MessageBox.Show(e.Message, "Unable to print packing slip", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return false;
}

【问题讨论】:

  • 输出窗口中是否显示任何内容?
  • 我对 C# 很陌生,但我在目标计算机上的应用程序没有我知道的输出窗口。我有一个名为statusLabel 的状态栏,我手动更新它...
  • 输出窗口是 Visual Studio 中的诊断窗口; @Bob 表示在调试器中运行你的应用程序。
  • 尝试添加process.StartInfo.UseShellExecute = true

标签: c#


【解决方案1】:

我认为您在两个系统中的 pdf 打印设置不同。
在 winXP 和 win7 中检查 .pdf 文件类型的“打印”动词。你得到相同的结果?

您可以使用此软件进行检查和比较:nirsoft-file_types_manager
也许你会得到这样的链接:

print
"C:\Program Files (x86)\Foxit Software\Foxit Reader\Foxit Reader.exe" /p "%1"

作为解决方案,我建议执行以下步骤:

  1. 检查系统中 PDF 的“打印”动词。如果缺少此动词,则重新安装 PDF 软件。

  2. 如果您得到不同的命令,请尝试在两个系统中使用相同的软件。使用 nirsoft 的软件,您可以尝试编辑 XP 命令来修复它(如果您“错误地”卸载 PDF 软件,这可能在系统中 ..如果您知道带参数的路径,那么您可以尝试编辑此命令

  3. 如果用于打开(和打印)PDF 文件的软件安装正确,请尝试使用“打开”动词。如果这个工作并且打印不,然后尝试重新安装 PDF 软件。

如果所有这些步骤都没有帮助,命令相同并且打开文件正常工作,那么你可以尝试使用命令直接打印PDF,检查命令是否工作。

  1. 在 winXP 中,将 %1 替换为您的文件名并在“运行”窗口中运行此命令(以快捷键 WIN + R 开始)警告:如果文件有效,将打印您的文件

如果还是不行,请重新安装 PDF 软件。如果它可以从命令行运行,但不能从您的软件运行,那么我不知道如何帮助您。

【讨论】:

  • 好建议...当我按照您的建议运行命令时,它工作正常,但是当我按照建议运行 Print 动词时,它显示 myfile.pdf is printing... 并就在那里。关于为什么会这样的任何想法?
  • 你能用Openwebr打开的那个软件打印pdf文件吗?所需的打印机是否设置为默认值? “只是坐在那里”意味着您看到“打印”消息不会关闭或在没有任何打印过程的情况下打开和关闭? .. 好的,我们可以尝试检查打印日志: 打开 windows 运行(WIN + R 或单击开始>运行)并输入:eventvwr 查找系统日志(对不起,我没有 WinXP-in Win7: WindowsLogs -系统)并检查文件是否已打印。
  • 如何启用 PrintService 日志? 我不知道如何在 WinXP 中执行此操作,也许这有帮助:How to audit user access to printers 在 Win7 中您可以打开事件查看器 - 应用程序和服务日志 - Microsoft - Windows - PrintService - 操作 - 操作:启用日志 然后您将在此日志中看到任何打印。您的打印文件是否可见?在右边的打印机下面? ..但仍然没有打印? ..您可以直接从该软件打印文件吗? ..那对我来说太神秘了:)
  • 感谢您的跟进。我们执行的命令永远不会出现在那里。在这一点上,我接受 PC 有问题,并等待他们将其更新到 Windows 7,希望能解决问题。
最近更新 更多