Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Trapping fine spooling stampa documento word da vb.net
venerdì 22 aprile 2011 - 12.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 2.0
|
Windows Server 2003
|
Windows XP
|
Visual Studio 2008
|
SQL Server 2005
|
Office 2000
fulvioavatar
Profilo
| Newbie
14
messaggi | Data Invio:
ven 22 apr 2011 - 12:12
Ciao a tutti, mi sono appena iscritto al foruma e spero risolviate questo mio problema.
Ho scritto una applicazione in vb.net installata su un server aziendale che deve gestire le code di stampa inviate dalla intranet.
Il programma legge le richieste da una tabella sqlserver dove viene specificato il percorso di un documento word 2000 e la stampante di rete sulla quale indirizzare la stampa.
Il problema è che da tale server il tempo di spooling delle pagine da word alla stampante è molto alto.
Io ho scritto un loop di attesa, in modo da non chiudere il documento prima che sia terminata la fase di spooling.
Preferirei però gestire la cosa riuscendo a capire quando è finito lo spooling delle pagine alla stampante: quando uno apre word e stampa un documento tale tempo è indicato dal succedersi delle pagine inviate alla stampante visualizzato nella barra inferiore.
Come faccio a testare tale operazione con vb.script?
Vi posto il codice dove inserire l'istruzione, se esiste.
Ciao e grazie per le risposte.
Dim objWordMaster As New Word.Application
objWordMaster.WordBasic.FilePrintSetup(Printer:=strStampante, _
DoNotSetAsSysDefault:=1)
Dim objDocMaster As New Word.Document
objDocMaster = objWordMaster.Documents.Open(strDoc)
Dim wait As Date = Now
With objWordMaster
'.Visible = True
.ActiveDocument.PrintOut()
Dim i As Integer = 0
While DateDiff(DateInterval.Second, wait, Now) < My.Settings.SecWaitSpooling
End While
End With
objDocMaster.Close(False)
objWordMaster.Quit(False)
objWordMaster = Nothing
AntCiar
Profilo
| Expert
935
messaggi | Data Invio:
ven 22 apr 2011 - 12:21
Ciao.
Io una volta ho dovuto fare una utilitì che stampava in successione dei file (potevano essere di qualsiasi tipo: excell,word,pdf...)
Per non "intasare" di code di stampa ho utilizzato un approccio che mi esulasse dal sapere che tipo di file dovevo stampare.
Ho usato il Process passando al parametro "verb" il valore "print".
ti posto il codice.
Process ps = new Process();
ps.StartInfo = new ProcessStartInfo();
ps.StartInfo.FileName = pathFile;
ps.StartInfo.CreateNoWindow = false;
ps.StartInfo.UseShellExecute = true;
ps.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
ps.StartInfo.Verb = "print";
ps.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
ps.Start();
ps.Close();
Cristian Barca
fulvioavatar
Profilo
| Newbie
14
messaggi | Data Invio:
ven 22 apr 2011 - 12:38
Grande!!!
Ho provato l'istruzione e lo spooling è istantaneo.
Per completare l'opera però manca una cosa fondamentale.
il servizio offerto dall'applicativo deve consentire una stampa non su una sola stampante predefinita, ma accetta in input il percorso di rete della stampante da utilizzare e che non dovrebbe essere utilizzata come nuova stampante di default.
E' possibile indicare al process la stampante da utilizzare senza modificare quella di default?
AntCiar
Profilo
| Expert
935
messaggi | Data Invio:
ven 22 apr 2011 - 12:51
>Grande!!!
>Ho provato l'istruzione e lo spooling è istantaneo.
>Per completare l'opera però manca una cosa fondamentale.
>il servizio offerto dall'applicativo deve consentire una stampa
>non su una sola stampante predefinita, ma accetta in input il
>percorso di rete della stampante da utilizzare e che non dovrebbe
>essere utilizzata come nuova stampante di default.
>E' possibile indicare al process la stampante da utilizzare senza
>modificare quella di default?
>
Ciao.
Non so se è possibile passare anche la stampante. Devo vedere un po su internet se porta qualcosa.
Ciao ciao
Cristian Barca
fulvioavatar
Profilo
| Newbie
14
messaggi | Data Invio:
ven 22 apr 2011 - 13:00
Al limite va bene anche la soluzione di settare la stampante di default cambiandola in base alla richiesta di stampa.
Con Imports System.Drawing.Printing riesco a vedere le stampanti installate:
Dim pkInstalledPrinters As String
For Each pkInstalledPrinters In _
PrinterSettings.InstalledPrinters
cmbStampanti.Items.Add(pkInstalledPrinters)
Next pkInstalledPrinters
Ma non trovo il metodo per settare quella di default.
Torna su
Stanze Forum
Elenco Threads
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 !