posts - 463, comments - 1515, trackbacks - 139

Stampare un file su una stampante a scelta

Visto che la domanda è sempre più frequente ho pensato di metterla sul blog.

Per stampare un file arbitrario da un PC la soluzione è quella di usare i servizi della shell di Windows. La tipologia di file specificato è indifferente e dipende solo se sul PC in questione è stato installato un applicativo in grado di 'capire' il formato del file e i verb che la shell di Windows richiede.

I verb sono dei comandi che la shell impartisce agli applicativi tramite command line. Il modo in cui passare questi comandi è standard ed è scritto nel registry dalla stessa applicazione al momento della sua installazione.

In questo esempio il file pdf viene stampato sulla stampante di default:

   ProcessStartInfo si = new ProcessStartInfo(@"c:\temp\file.pdf");
   si.Verb = "print";
   Process.Start(si);

Per stampare invece su una specifica stampante, si può usare un verb meno conosciuto, printto:

   ProcessStartInfo si = new ProcessStartInfo(@"c:\temp\file.pdf");
   si.Verb = "printto";
   si.Arguments = "\"EPSON Stylus C80 Series\"";
   Process.Start(si);

Le doppie virgolette nel nome della stampante si rendono necessarie visto che ci sono degli spazi.

Print | posted on giovedì 27 gennaio 2005 11.16 | Filed Under [ .NET [Italiano] ]

Feedback

Gravatar

# re: Stampare un file su una stampante a scelta

Ciao Raffaele,
volevo chiederti se è possibile utilizzare il verb printto evitando l'apertura di Acrobat Reader...
Grazie!
04/12/2006 11.49 | Maurizio Magnani
Gravatar

# re: Stampare un file su una stampante a scelta

Maurizio, come potrebbe essere possibile fare a meno di acrobat (o di una applicazione equivalente)?
Ragioniamo... il formato PDF deve essere interpretato da una applicazione che lo conosce. E solo questa applicazione è in grado di trasformare le istruzioni grafiche del pdf in EMF che è il formato nativo di Windows.
Fai conto di avere un .DOC ... è la stessa cosa... devi avere una applicazione che sia in grado di comprendere il formato DOC per poterlo stampare.
Ciao!
04/12/2006 14.01 | Raffaele Rialdi
Gravatar

# re: Stampare un file su una stampante a scelta

Scusami Raffaele mi sono spiegato male...
Dunque ho una ConsoleApplication e all'interno ho inserito il tuo codice per stampare un pdf. Il mio problema è che questa procedura "gira" su un srver e rimane in ascolto su di una cartella e appena arriva un pdf lo stampa ma non posso aprire n sessioni di Acrobat Reader. Cercavo un modo per mandare in stampa un pdf e successivamente chiudere acrobat.
Ti posto il mio codice:

while(true){
ProcessStartInfo psi = new ProcessStartInfo(tmpFile);
psi.Verb = "printto";
psi.Arguments = "\"Nome stampante\"";
Process print = new Process();
print.StartInfo = psi;
print.Start();

File.Delete(tmpFile);
}

Se utilizzo questo codice non riesco ad inviare in stampa il documento perchè mentre si avvia il processo il documento viene cancellato...non mi sembra bello utilizzare uno sleep per attendere che il pdf sia mandato in stampa perchè la grandezza del pdf puoi variare quindi non saprei...



04/12/2006 15.02 | Maurizio Magnani
Gravatar

# re: Stampare un file su una stampante a scelta

Maurizio, il blog non è posto per domande.
Posta la tua domanda sui ng di microsoft o ugidotnet...
Grazie e ciao
04/12/2006 15.12 | Raffaele Rialdi
Gravatar

# re: Stampare un file su una stampante a scelta

"Maurizio, il blog non è posto per domande. "

e allora a cosa servirebbe il blog? solo come un giornale? è l'interattività dei blog che ha fatto la differenza...

ma poi non mi pare che le domande che faceva maurizio non fossero pertinenti, e non mi sembra neppure molto educato rispondere in quel modo...

cerchiamo di scendere dai castelli che ci siamo creati, dato che un po' di umiltà non guasta mai...

Demetrio Filocamo
(filocamo@demetrio.it)
26/12/2006 11.27 | Demetrio Filocamo
Gravatar

# re: Stampare un file su una stampante a scelta

Demetrio, proprio non capisco la tua risposta, nè capisco il tuo risentimento visto che rispondo quotidianamente sui forum di ugidotnet e sui newsgroup Microsoft e dopo che lui ha postato sul newsgroup C#, solo 4 ore dopo ho risposto alla sua domanda:
http://groups.google.com/group/microsoft.public.it.dotnet.csharp/browse_frm/thread/fb721f6ef6ebcb18/76be8cd0ba41c56a?lnk=st&q=&rnum=1#76be8cd0ba41c56a


Il fatto di aver chiesto a Maurizio di spostare la sua domanda altrove è perché così tutti ne possano beneficiare, lui compreso che potrebbe avere più risposte rispetto alla quella mia.
Inoltre è indubbio che google groups sia la maggiore fonte di informazioni tecniche e quindi una domanda su un blog è letteralmente buttata al vento rispetto all'archiviazione dei newsgroup.

Per quanto concerne il blog, ti invito a chiarirti le idee su wikipedia sul suo scopo: http://it.wikipedia.org/wiki/Blog
Il blog per sua natura è una sorta di diario personale in cui ciascun lettore può contribuire con commenti.
Fino a che i commenti servono a chiarire la domanda specifica hanno un senso. Se invece la domanda serve ad espandere il concetto a scenari più complessi (come nella domanda di Maurizio), il newsgroup è più indicato perché beneficia del contributo di tutti e non del solo autore del blog.

Se ci sono altri motivi per cui sei incavolato con me, allora metti in chiaro le carte sul tavolo e non prendere questo come pretesto.
26/12/2006 21.08 | Raffaele Rialdi
Gravatar

# re: Stampare un file su una stampante a scelta

no non c'è nessun motivo, non sono incavolato con te anche perché non ti conosco e sono capitato qui per caso, è solo che mi è sembrata una risposta arrogante la tua.

Le idee su cosa sia il blog mi sono chiare, a mio parere il commento non si discosta di molto rispetto al post quindi una risposta ci sarebbe stata (anche perché è la prima volta che vedo qualcuno che dice che "il blog non è posto per domande", testuali parole, ma sono contento che tu sia andato a leggere su cosa sia davvero su wikipedia).

Detto questo il mio era solo un appunto, senza risentimenti in quanto non ti conosco.

Demetrio Filocamo

27/12/2006 9.11 | Demetrio Filocamo
Gravatar

# re: Stampare un file su una stampante a scelta

Mi dispiace veramente che la mia risposta ti sia apparsa come arrogante. Non era proprio la mia intenzione. Se così fosse stato non mi sarei preoccupato di rispondergli sui newsgroup così velocemente. Quanto al blog il significato di commento mi sembra più che chiaro.

Spero che tu capisca anche che ricevo una grossa quantità di email con problemi di ogni genere e chiedo a tutti di postarle pubblicamente proprio perché le risposte (mie o di altri) possano essere di aiuto/spunto a tutti coloro che faranno uso di google groups.
27/12/2006 10.22 | Raffaele Rialdi

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 5 and 8 and type the answer here:

Powered by: