Impresión con opciones avanzadas (selección de bandeja, dúplex, grapado)

Tenemos un proyecto de gestión de impresión de documentos. Al principio me pregunto por qué las opciones de impresión no se pueden configurar en un solo lugar. Por ejemploselección de bandeja de impresora Para la primera página y para otras páginas se puede hacer usandoAutomatización de MS Word:

var doc = _applicationObject.Documents.OpenNoRepairDialog(FileName: ref sourceFile, ReadOnly: ref readOnly,
                                                                 AddToRecentFiles: ref addToRecentFiles,
                                                                 Visible: ref visible);
doc.PageSetup.FirstPageTray = (WdPaperTray) firstPageTrayCode;
doc.PageSetup.OtherPagesTray = (WdPaperTray) otherPagesTrayCode;
_applicationObject.ActivePrinter = printerPath;
doc.Activate();
_applicationObject.PrintOut(Background: ref backgroundPrint, FileName: sourceFile);
doc.Close(ref saveChanges, ref _missing, ref _missing);

En el código anterior, la bandeja de la impresora se especifica como un entero porque algunas impresoras no tienen valores estándar para las bandejas (tuvimos este problema con HP: se describen los códigos de las bandejasaquí). Así que primero recuperamos lo que tienen las impresoras de la bandeja, usando el código:

var setting = new PrinterSettings();
setting.PrinterName = myPrinterName;
foreach (PaperSource tray in setting.PaperSources)
{
    Console.WriteLine("\t{0}: #{1}", tray.SourceName, tray.RawKind);
}

Y este código funciona sin problemas.

Pero no hay manera de especificar las opciones de dúplex y grapa aquí.Dúplex se puede hacer, usandoFunciones de controlador OpenPrinter y SetPrintercomo se describeaquí y recomendado por Microsoft también eneste hilo del foro. Grapa es completamentepoco claro y si alguien sabe cómo implementar esto, hágamelo saber. Usando engrapado enum, como eneste artículo de MSDN es inútil ya que requiere una representación personalizada del documento para imprimir.

Describí la situación y cómo se implementaron las partes.Eso funciona bien en nuestro entorno.: Windows Server 2008 R2, MS Office 2010 x32, impresoras HP LaserJet P2055 y Ricoh Nashuatec DSm635. Probado con controladores PCL6 / PCL5e nativos y universales: la selección de dúplex y bandeja funciona como se esperaba.

Pero después de desplegar la aplicación al cliente., impresoras (HP LaserJet 4250 y Ricoh Aficio MP C7501)Imprima siempre desde la bandeja por defecto y sin dúplex.. Probé algunos controladores diferentes con exactamente el mismo resultado.

En ambos entornos las impresoras son impresoras de red. Entonces, para hacer que apliquen la configuración dúplex, usando el controlador de impresora, necesitamos instalar el controlador local en el servidor y hacer una impresora local, como se recomienda mi Microsoft eneste hilo del foro de soporte.

Si bien los entornos y las impresoras utilizadas se ven muy similares, una funciona y la otra no. Cualquier ayuda será muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta