Je reçois une étrange exception du code suivant:PrintDocument.Print() jette un Win32Exception
var printDialog = new PrintDialog();
printDialog.ShowDialog();
var printDocument = new PrintDocument { DefaultPageSettings = { Landscape = true, PrinterSettings = new PrinterSettings { PrinterName = printDialog.PrintQueue.Name } } };
var updateResult = new UpdateResult<Image>(UpdateType.Print) { Success = true };
foreach (string location in fileLocation)
{
try
{
_printImage = Image.FromFile(location);
printDocument.PrintPage += PrintRequest;
}
catch (Exception exception)
{
//various error handling code here
}
}
printDocument.Print();
La dernière ligne est de lancer un Win32Exception avec le détail « La poignée est invalide », selon le msdn documentation la seule exception qui devrait être levée est l'imprimante introuvable. L'exception semble être une sorte d'exception de pilote/non-cadre. Lorsque je sélectionne mon imprimante (Lexmark T640, configuration pour imprimer directement sur le port de l'imprimante), le code s'imprime bien, mais en sélectionnant l'une des deux autres imprimantes auxquelles j'accède (une autre T640, ou une couleur Dell) le code échoue. Les deux autres imprimantes sont configurées pour imprimer via notre serveur d'impression central, mais je ne pense pas que cela puisse faire la moindre différence. Quelqu'un peut-il me donner des pointeurs? Editer: Je l'ai essayé avec printDialog.PrintQueue.Fullname et le comportement n'est pas différent. La substitution dans un nom d'imprimante de rebut jette une exception InvalidPrinterException comme prévu, suggérant qu'il a trouvé l'imprimante, mais semble échouer.
avez-vous résolu ce problème? –
@Matt Voir ma réponse ci-dessous – ChrisFletcher