2009-05-19 2 views
5

У меня есть следующий код:печать 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 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 здесь ...

+0

где находится пространство имен PDFSharp.PDF.Printing ??? – nuander

+0

ahhh в текущей версии PDFSharp весь класс печати закомментирован – nuander

ответ

7

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

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

Вы используете «@», чтобы избежать строки, а также избежать обратный слэш. Либо удалите «@», либо используйте одну обратную косую черту.

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

UPDATE: Если вы подтвердили, что у вас есть правильный путь к Acrobat Reader EXE, следующая вещь, чтобы посмотреть на это параметр «Имя принтера», который вы передаете конструктору PdfFilePrinter.

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

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

+0

Хорошее место ... там. –

+0

уже пробовал это сделать - все еще не работает – yeahumok

1

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

C: \ Documents и Settings \ mike.smith \ Desktop \ Adobe Считыватель 9.0.exe

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

+0

oh no lol я просто положил имя фиктивного имени, так как я не хотел публиковать свое настоящее имя здесь ... но да, это то, где он находится на мой компьютер – yeahumok

+0

Registry.ClassesRoot.OpenSubKey (@ "Software \ Adobe \ Acrobat \ Exe"), значение по умолчанию - это то, что содержит путь к текущей установленной версии Acrobat, будь то читатель или профессионал. – Ricky

0

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

Смежные вопросы