Imprimir PDF utilizando GhostScript

Necesito su apoyo en el siguiente tema, ya que me está molestando por un tiempo. Tenemos una pequeñac# utilidad que imprimePDF utilizandoGhostScript. Se imprime como se esperaba pero no se conserva el formato de la página. Sin embargo, las páginas se imprimen como se esperaba cuando cambioAdobe Acrobat en lugar deGhostScript. Así que supongo que estoy cometiendo un error obvio en los argumentos de la línea de comando de GhostScript.

Fondo

A continuación se encuentra la lógica c # básica, que imprime un archivo PDF determinado con un estilo variable en cada página. El archivo PDF dado tiene páginas;

con estilo de letra y color inconsistentealgunas de las páginas tienen un tamaño de fuente normal donde otras se imprimen en tamaño extra pequeñoAlgunas de las páginas han recomendado un margen, pero otras tienen un margen muy pequeño.Algunas de las páginas están en color y el resto en gris.Algunas de las páginas son de estilo paisajístico, mientras que otras son retratos.

En resumen, el PDF que estoy tratando de imprimir no es más que una consolidación (unir pdfs individuales en un pdf grande) de numerosos documentos PDF de pequeño tamaño con diferentes tipos de letra, tamaño y márgenes.

Problema

Siguiendo la lógica de usoGhostScript(v9.02) para imprimir archivo PDF. Aunque la siguiente lógica imprime cualquier PDF dado, no puede conservar el formato de página, incluidoencabezado, pie de página, tamaño de fuente, margen, orientación (Mi archivo pdf tiene páginas tanto de paisaje como de retrato).

Curiosamente, si utilizo Acrobat Reader para imprimir el mismo PDF, se imprimirá como se esperaba junto con todos los formatos de nivel de página.

Espécimen de PDF:Primera sección, Segunda seccion

  void PrintDocument()
    {
         var psInfo = new ProcessStartInfo();
                psInfo.Arguments =
                    String.Format(
                        " -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\{0}\" \"{1}\"",
                        GetDefaultPrinter(), @"C:\PDFOutput\test.pdf");
                psInfo.FileName = @"C:\Program Files\gs\gs9.10\bin\gswin64c.exe";
                psInfo.UseShellExecute = false;

        using (var process= Process.Start(psInfo))
        {
            process.WaitForExit();
        }
    }

Respuestas a la pregunta(3)

Su respuesta a la pregunta