2009-05-19 50 views
5

Tengo el siguiente código:archivos PDF de impresión con 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); 
     } 
    } 
    } 
} 

Para la vida de mí no puedo conseguir que esto funcione y que imprima un solo PDF. Cada vez que voy a imprimir, aparece el error "No se puede encontrar el archivo especificado". ¿Alguien tiene alguna idea si algo está mal con mi código? Estoy usando PDFsharp aquí ...

+0

¿dónde está el espacio de nombres PDFSharp.PDF.Printing ??? – nuander

+0

ahhh en la versión actual de PDFSharp toda la clase de impresión está comentada – nuander

Respuesta

7

Una observación, en la siguiente línea:

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

Está utilizando el "@" para escapar de la cuerda y también escapar de las barras invertidas. Elimine la "@" o use una sola barra invertida.

También asegúrese de que sea la ruta correcta a su EXE.

ACTUALIZACIÓN: Si ha confirmado que tiene la ruta correcta a su Acrobat Reader EXE, la siguiente cosa que mirar es el parámetro "Nombre de impresora" que está pasando al constructor PdfFilePrinter.

Usted está pasando " \\ny-dc-03\\IT-01" como el nombre de la impresora. Esto debe coincidir con el nombre de la impresora exactamente como aparece en la lista de Impresoras en Windows, no solo una impresora IP arbitraria.

Si esto es correcto, asegúrese de eliminar, el espacio final: "\\ny-dc-03\\IT-01".

+0

Buen lugar ... allí. –

+0

ya intenté hacer eso - todavía no funciona – yeahumok

1

Esto se puede afirmar lo obvio, pero es acróbata en:

C: \ Documents and Settings \ mike.smith \ Desktop \ Adobe lector 9.0.exe

Es solo su nombre de usuario implica que su nombre no es Mike Smith.

+0

oh no lol acabo de poner un nombre falso ya que no quería publicar mi nombre real aquí ... pero sí, ahí es donde reside mi computadora – yeahumok

+0

Registry.ClassesRoot.OpenSubKey (@ "Software \ Adobe \ Acrobat \ Exe"), el valor predeterminado es lo que mantiene la ruta a la versión actualmente instalada de Acrobat, ya sea lector o profesional. – Ricky

0

Usted está de paso " \\ny-dc-03\\IT-01"

creo que esto debería ser "\\\\ny-dc-03\\IT-01" o @"\\ny-dc-03\IT-01"

No estoy seguro si @"\\ny-dc-03\\IT-01" va a funcionar, pero "\\ny-dc-03\\IT-01" no puede trabajar como nombres UNC comienzan con una doble barra invertida.