[VB.NET]Lanciare stampa di più copie di file pdf

venerdì 12 febbraio 2016 - 11.14
Tag Elenco Tags  VB.NET  |  Visual Studio 2008

Impakto91 Profilo | Newbie

Salve ragazzi sto realizzando un piccolo tool che mi lancia in stampa determinati files pdf presenti sul pc.

Ad esempio mi deve mandare in stampa 20 copie di "pippo.pdf" e 20 copie di "pluto.pdf"

Queste pagine devono essere mandate in stampa in ordine (ovvero prima 20 copie di uno e poi 20 delle altre).

Per eseguire il lavoro ho usato questo codice:

Public Function StampaFilePDF(ByVal articolo As String, ByVal copies As Integer) As Boolean frmMain.lblStato.Text = "Stampa di " & copies & " '" & articolo & "' in corso" For a = 1 To copies Dim p As New Process p.StartInfo.FileName = articolo p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden p.StartInfo.Verb = "Print" p.Start() Next frmMain.lblStato.Text = "Stampa completata" End Function

Per mandare le diverse copie uso un ciclo for che ha la pecca di crearmi un processo nella stampante per ogni copia ed essendo una stampante di rete quando mando in stampa anche il secondo file i processi si mischiano tra di loro e capita una stampa molto disordinata. Secondo voi è possibile mandare una shell che faccia partire un unico processo con N pagine? Inoltre già che ci siamo mi servirebbe poter scegliere:

- Possibilità fronte/retro
- Possibilità scelta stampante

Mi andrebbe bene utilizzare anche un applicazione o una dll esterna basta che sia freeware.

Vi ringrazio molto per la collaborazione!

Davide1986 Profilo | Junior Member

Ti posso consigliare di utilizzare il comando "lpr" di windows , cosi ti eviti il ciclo for di processi .

Trovi info qui : http://campus.mst.edu/cis/desktop/documentation/pc/win7_x64/lpr_printer/install.htm
oppure qui http://www.linksys.com/us/support-article?articleNum=136832
oppure qui http://nuanceimaging.custhelp.com/app/answers/detail/a_id/13036/~/lpr-print%3A-troubleshooting-guide

Sintassi del comando qui : https://technet.microsoft.com/en-us/library/bb490928.aspx

Per sapere la coda di stampa usa il comando "lpq".

Sintassi del comando qui : https://technet.microsoft.com/en-us/library/bb490927.aspx

Altre info della rete :

http://support.ricoh.com/bb_v1oi/pub_e/oi_view/0001042/0001042969/view/netsys/int/0207.htm
https://technet.microsoft.com/it-it/library/cc731926(v=ws.10).aspx

Saluti Davide


Blog ImaginSystems
http://blogs.dotnethell.it/imaginsystems
http://www.imaginsystems.it
http://www.alpacasrl.it

stefano1856 Profilo | Junior Member

Dovrebbe andarti bene un oggetto PrintDialog che ti permette di selezionare la stampante, il documento da stampare, il numero di copie, e altre opzioni
https://msdn.microsoft.com/it-it/library/system.windows.controls.printdialog(v=vs.110).aspx

se la procedura richiede molto tempo puoi inserirla in un oggetto BackgroudWorker per non interrompere l'uso del programma

Impakto91 Profilo | Newbie

Grazie per le risposte.

Allora col comando LPR quando faccio:

lpr -S 192.168.100.100 -P1 "c:\sample.pdf"

mi stampa un foglio con caratteri strani (penso che sia lo stesso di quando lo apri con blocco note).

Forse sbaglio il comando?

Invece col PrintDialog1 non riesco a capire come farlo funzionare, avete qualche esempio?

Davide1986 Profilo | Junior Member

Ti posso consigliare di vederti "Ghostscript print to Windows printer"

http://www.ghostscript.com/doc/current/Use.htm - How to use Ghostscript
http://pages.cs.wisc.edu/~ghost/gsview/gsprint.htm - GSPRINT - Ghostscript print to Windows printer
http://stackoverflow.com/questions/20524323/print-pdf-using-ghostscript
http://superuser.com/questions/807027/how-to-print-with-ghostscript-in-silent-mode
http://stackoverflow.com/questions/2599925/how-to-print-pdf-on-default-network-printer-using-ghostscript-gswin32c-exe-she

Alternativa puoi vedere PrintDialog :

http://www.tutorialspoint.com/vb.net/pdf/vb.net_print_dialog.pdf

Printdialog1.PrinterSettings.PrintFileName = "C:\Test.PDF" PrintDialog1.ShowDialog()

Se ci sono problemi scrivi e provo ad aiutarti.

Blog ImaginSystems
http://blogs.dotnethell.it/imaginsystems
http://www.imaginsystems.it
http://www.alpacasrl.it
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5