使用PDFSharp打印PDF

时间:2009-05-19 15:27:14

标签: c# pdf printing pdfsharp

我有以下代码:

using System;
using System.Diagnostics;
using System.IO;
using PdfSharp.Pdf.Printing;

namespace PrintPdfFile
{

  class Program
  {
    [STAThread]
    static void Main(string[] args)
    {
      // Set Acrobat Reader EXE, e.g.:
        PdfFilePrinter.AdobeReaderPath = @"C:\\Documents and Settings\\mike.smith\\Desktop\\Adobe Reader 9.0.exe";
      // -or-
        //PdfPrinter.AdobeReaderPath = @"C:\Program Files\Adobe\[...]\AcroRd32.exe";

      //// Ony my computer (running a German version of Windows XP) it is here:
        //PdfFilePrinter.AdobeReaderPath = @"C:\\Documents and Settings\\mike.smith\\Desktop\\Adobe Reader 9.0.exe";

      // Set the file to print and the Windows name of the printer.
      // At my home office I have an old Laserjet 6L under my desk.
      PdfFilePrinter printer = new PdfFilePrinter(@"C:\Documents and Settings\mike.smith\Desktop\Stuff\ReleaseNotesAndFolderList.pdf", " \\ny-dc-03\\IT-01");

      try
      {
        printer.Print();
      }
      catch (Exception ex)
      {
        Console.WriteLine("Error: " + ex.Message);
      }
    }
  }
}

对于我的生活,我无法让它工作并打印出单个PDF。任何时候我去打印,我收到错误“无法找到指定的文件”。有没有人知道我的代码是否有问题?我在这里使用PDFSharp ......

3 个答案:

答案 0 :(得分:8)

一个观察结果,如下:

PdfFilePrinter.AdobeReaderPath 
      = @"C:\\Documents and Settings\\mike.smith\\Desktop\\Adobe Reader 9.0.exe";

您正在使用“@”来转义字符串并转义反斜杠。删除“@”或使用单个反斜杠。

还要确保这是EXE的正确路径。

更新:如果您确认自己拥有Acrobat Reader EXE的正确路径,则接下来要查看的是要传递给PdfFilePrinter构造函数的“Printer Name”参数。

您正在传递" \\ny-dc-03\\IT-01"作为打印机名称。这需要完全按照Windows中打印机列表中显示的名称匹配打印机名称,而不仅仅是任意IP打印机。

如果这是正确的,请务必删除尾随空格:"\\ny-dc-03\\IT-01"

答案 1 :(得分:1)

这可能是明显的,但是acrobat在:

  

C:\ Documents and   设置\ mike.smith \桌面\的Adobe   Reader 9.0.exe

这只是你的用户名意味着你的名字不是迈克史密斯。

答案 2 :(得分:1)

  

您正在通过" \\ny-dc-03\\IT-01"

我认为这应该是"\\\\ny-dc-03\\IT-01"@"\\ny-dc-03\IT-01"

不确定@"\\ny-dc-03\\IT-01"是否有效,但"\\ny-dc-03\\IT-01"无效,因为UNC名称以双反斜杠开头。