Saltar al contenido

Cómo imprimir PDF en una impresora de red predeterminada usando el comando de shell GhostScript (gswin32c.exe)

Posterior a de una prolongada recopilación de datos hemos podido resolver este atasco que suelen tener ciertos los usuarios. Te regalamos la respuesta y deseamos que sea de mucha apoyo.

Solución:

Finalmente lo hice funcionar y fácil de depurar.
Mi código de método final para aquellos interesados:

    /// 
    /// Prints the PDF.
    /// 
    /// The ghost script path. Eg "C:Program Filesgsgs8.71bingswin32c.exe"
    /// The number of copies.
    /// Name of the printer. Eg \server_nameprinter_name
    /// Name of the PDF file.
    /// 
    public bool PrintPDF (string ghostScriptPath, int numberOfCopies, string printerName, string pdfFileName) 
        ProcessStartInfo startInfo  = new ProcessStartInfo();
        startInfo.Arguments         = " -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=" + Convert.ToString(numberOfCopies) + " -sDEVICE=ljet4 -sOutputFile="\\spool\" + printerName + "" "" + pdfFileName + "" ";
        startInfo.FileName          = ghostScriptPath; 
        startInfo.UseShellExecute = false;

        startInfo.RedirectStandardError = true;
        startInfo.RedirectStandardOutput = true;

        Process process = Process.Start(startInfo);

        Console.WriteLine( process.StandardError.ReadToEnd() + process.StandardOutput.ReadToEnd() );

        process.WaitForExit(30000);
        if (process.HasExited == false) process.Kill();


        return process.ExitCode == 0;
    

No estoy seguro de si ayuda a alguien, pero para agregar los documentos de impresión a una cola en lugar de imprimirlos inmediatamente, realice cambios en la sección anterior con

startInfo.Arguments = " -dPrinted -dNoCancel=true -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=" + Convert.ToString(numberOfCopies) + " -sDEVICE=mswinpr2 -sOutputFile=%printer%" + printerName + " "" + pdfFullFileName + """;

Requisitos previos: Configure el tipo de trabajo de su impresora en “Imprimir en espera”: En nuestro caso tenemos un Impresora Rico Aficio MP 4000 y nuestro uso es ejecutar un trabajo nocturno para imprimir un montón de archivos PDF generados a través de SSRS.

Primero debe probar sus opciones desde la línea de comando y luego traducir los éxitos a su código.

Un archivo PDF normalmente ya incluye márgenes de página. El contenido de la página “cortado a menudo” puede resultar de un PDF que está diseñado para tamaño de página A4 impreso en formato Carta.

PDF también utiliza algunos cuadros internos que organizan el contenido de la página (y del objeto): MediaBox, TrimBox, CropBox, Bleedbox.

Hay varias opciones para controlar para qué “tamaño de medios” Ghostscript representa una entrada determinada:

-dPDFFitPage  
-dUseTrimBox  
-dUseCropBox 

Con PDFFitPage Ghostscript representará el tamaño del dispositivo de página actual (generalmente el tamaño de página predeterminado).

Con UseTrimBox usará el TrimBox (y al mismo tiempo establecerá el PageSize a ese valor).

Con UseCropBox usará el CropBox (y al mismo tiempo establecerá el PageSize a ese valor).

De forma predeterminada (sin especificar ningún parámetro), Ghostscript renderizará utilizando el MediaBox.

Tenga en cuenta que también puede controlar el tamaño total de su salida usando -sPAPERSIZE (seleccione entre todos los valores predefinidos que conoce Ghostscript) o (para mayor flexibilidad) utilice -dDEVICEWIDTHPOINTS=NNN -dDEVICEHEIGHTPOINTS=NNN para configurar tamaños de página personalizados.

Aquí puedes ver las reseñas y valoraciones de los usuarios

Agradecemos que desees defender nuestro cometido dejando un comentario o dejando una valoración te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *