Печать PDF-файлов с помощью 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 Settingsmike.smithDesktopAdobe Reader 9.0.exe";
      // -or-
        //PdfPrinter.AdobeReaderPath = @"C:Program FilesAdobe[...]AcroRd32.exe";

      //// Ony my computer (running a German version of Windows XP) it is here:
        //PdfFilePrinter.AdobeReaderPath = @"C:Documents and Settingsmike.smithDesktopAdobe 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 Settingsmike.smithDesktopStuffReleaseNotesAndFolderList.pdf", " ny-dc-03IT-01");

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

для жизни меня я не могу заставить это работать и распечатать один PDF. Каждый раз, когда я иду на печать, я получаю сообщение об ошибке "не удается найти указанный файл". Кто-нибудь знает, что-то не так с моим кодом?? Я использую PDFSharp здесь...

3 ответов


одно наблюдение, в следующей строке:

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

вы используете"@", чтобы избежать строки, а также избежать обратных косых черт. Либо удалите"@", либо используйте одну обратную косую черту.

также убедитесь, что это правильный путь к вашему EXE.

обновление: если вы подтвердили, что у вас есть правильный путь к вашему Acrobat Reader EXE, следующее, что нужно посмотреть, это параметр "имя принтера", который вы передаете PdfFilePrinter конструктор.

вы передаете " \ny-dc-03\IT-01" в качестве имени принтера. Это должно соответствовать имени принтера точно так же, как он отображается в списке принтеров в Windows, а не только произвольный IP-принтер.

Если это правильно, обязательно нужно удалять пробелы: "\ny-dc-03\IT-01".


Это может быть констатация очевидного, но является acrobat на:

C:\Documents и \Настройки Майк.smith \ Desktop\Adobe Ридер 9.0.exe

Это просто ваше имя пользователя подразумевает, что ваше имя не Майк Смит.


вы передаете " \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 начинаются с двойной обратной косой черты.