Imprimindo com opções avançadas (seleção de bandeja, duplex, grampo)

Temos um projeto de gerenciamento de documentos de impressão. No começo eu me pergunto por que as opções de impressão não puderam ser configuradas em um único lugar. Por exemploseleção de bandeja de impressora para a primeira página e para outras páginas pode ser feito usandoAutomação 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);

No código acima, a bandeja da impressora é especificada como inteiro, pois algumas impressoras não têm valores padrão para as bandejas (tivemos esse problema com a HP - os códigos de bandeja estão descritosAqui). Então, primeiro recuperamos o que a impressora possui, usando código:

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

E esse código funciona sem problemas.

Mas não há como especificar as opções de duplex e de grampos aqui.Duplex pode ser feito, usandofunções de driver OpenPrinter e SetPrintercomo descritoAqui e recomendado pela Microsoft, bem como emeste tópico do fórum. Grampo é completamenteobscuro e se alguém souber como implementar isso, por favor me avise. Usando grampeamento enum, como emeste artigo do MSDN é inútil, pois requer processamento personalizado do documento para impressão.

Eu descrevi a situação e como as partes foram implementadas.Isso funciona bem em nosso ambiente: Windows Server 2008 R2, MS Office 2010 x32, Impressoras HP LaserJet P2055 e Ricoh Nashuatec DSm635. Testado com drivers PCL6 / PCL5e nativos e universais: a seleção duplex e de bandeja funciona conforme o esperado.

Mas após a implantação do aplicativo para o cliente, impressoras (HP LaserJet 4250 e Ricoh Aficio MP C7501)fazer impressão sempre da bandeja padrão e sem duplex. Tentei alguns drivers diferentes com exatamente o mesmo resultado.

Em ambos os ambientes, as impressoras são impressoras de rede. Então, para fazer com que eles aplicassem a configuração duplex, usando o driver da impressora, precisávamos instalar o driver local no servidor e fazer uma impressora local, como recomendado minha Microsoft emeste tópico do fórum de suporte.

Embora os ambientes e impressoras utilizados sejam muito semelhantes, um funciona enquanto outros não. Qualquer ajuda será muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion