Domanda

Qual è il modo migliore per mantenere / salvare le impostazioni della stampante in .Net? C'era un bug in .Net 1.1 nella serializzazione dell'oggetto PrinterSetting e c'erano alcuni soluzioni alternative ma mi chiedo se non esiste un modo migliore o più semplice per farlo nelle versioni più recenti del framework.

Il caso d'uso principale è consentire a un utente di definire, utilizzando le interfacce utente delle impostazioni standard della stampante, tutti i dettagli di stampa (comprese le opzioni specifiche della stampante) per una data stampante e di averli salvati in modo che vengano ripristinati la volta successiva dell'utente stampa su quella stampante.

È stato utile?

Soluzione

Ho fatto un metodo piuttosto ghetto di scarica l'attuale DEVMODE e sovrascrivendolo quando vogliono usarlo di nuovo per inviare alcune impostazioni della stampante proprietaria a una fotocopiatrice al lavoro. Non sono riuscito a trovare un modo migliore per accedere ad alcune delle proprietà che semplicemente non sono state esposte tramite l'API di stampa (come le opzioni di pinzatura e piegatura proprietarie su un vecchio controller Fiery ... Penso che il nuovo modello di stampante XPS abbia il supporto per questi, ma Lord sa solo quando inizieremo a vedere il supporto del settore per questo).

L'avvertenza principale è che non sarebbe portatile su più macchine o su diverse versioni dello stesso driver della stampante. Per me, non è un grosso problema poiché è un ambiente di ufficio controllato. Per te, immagino che dipenda dal contesto in cui i tuoi utenti utilizzano il programma.

Buona fortuna!

Altri suggerimenti

È necessario utilizzare la classe PrinterSettings .

la risposta non programmatica sarebbe: utilizzare la console di gestione della stampa dal server admin 2003 r2 per esportare la configurazione della stampante. Forse quella funzione ha un'API per essa, che può essere chiamata da .net.

I problemi con la serializzazione di un oggetto PrinterSetting riguardano la proprietà PrintFileName.

Questa proprietà deve avere un valore per evitare un'eccezione quando si tenta di annullare la serializzazione dell'oggetto.

Se si desidera salvare le impostazioni della stampante di un visualizzatore di report

Me.ReportViewer.PrinterSettings.PrintFileName = "abc"
My.Settings.PrinterSettings = Me.ReportViewer.PrinterSettings
My.Settings.Save()

E riaverli

If My.Settings.PrinterSettings IsNot Nothing Then Me.ReportViewer.PrinterSettings = My.Settings.PrinterSettings

In ogni caso, il salvataggio di PrinterSetting persisterà solo con lo "standard" valore. Devi usare DEVMODE se vuoi persistere nelle cose esotiche che ogni driver ha.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top