Печать PDF с PDFSharp - PullRequest
       22

Печать PDF с PDFSharp

6 голосов
/ 19 мая 2009

У меня есть следующий код:

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 ]

8 голосов
/ 19 мая 2009

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

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".

1 голос
/ 25 августа 2009

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

1 голос
/ 19 мая 2009

Это может указывать на очевидное, но акробат по адресу:

C: \ Documents and Настройки \ mike.smith \ Desktop \ Adobe Reader 9.0.exe

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

...