Stampa a livello di codice di un file XPS su una stampante fisica

Ho un’applicazione C # WinForms. Un utente carica un file .XPS e specifica alcune impostazioni della stampante (numero di copie, vassoio della carta, ecc.). Il programma deve stampare a livello di codice il documento con queste impostazioni. Cioè, non ci può essere interazione con l’utente da stampare.

Posso avvicinarmi con il metodo System.Stamping AddJob. ( https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/how-to-programmatically-print-xps-files ). Tuttavia, qui non posso definire impostazioni specifiche, come l’origine della carta, il numero di copie, ecc.

Preferirei usare il metodo PrintDocument ma non riesco a capire come ottenere PrintDocument per il rendering / stampa di un documento XPS.

Ho esaminato questa risorsa, https://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage(v=vs.110).aspx , ma non riesco a vedere come può ottenere PrintPageEventHandler per il rendering del documento XPS.

Qualche idea su come potrei procedere? L’aiuto sarebbe molto apprezzato!

C # .NET 4.5

AGGIORNARE:

In base alla risposta che segue, posso inviare un PrintTicket quando aggiungo il lavoro, in questo modo:

PrintTicket pt = printQueue.DefaultPrintTicket; pt.CopyCount = 2; // pt.InputBin = [ InputBin enum option ] printQueue.AddJob("name", "file", false, pt); 

Non riesco a vedere alcun modo semplice per impostare l’InputBin per PrintTicket. InputBin è un enum e non ha un’opzione per l’impostazione come il nome di uno dei bin disponibili.

Sei sulla strada giusta con AddJob , tuttavia hai bisogno della versione che accetta un PrintTicket . Dovrai creare un nuovo PrintTicket usando le impostazioni dell’utente – qualsiasi valore impostato su null finirà per utilizzare i valori di default impostati per quel PrintQueue.