[VB.net] Stampare un file senza aprire il programma corrispondente

martedì 23 marzo 2010 - 14.14

ManInBluff Profilo | Newbie

Salve,
è possibile stampare files pdf senza dover aprire acrobat reader (o un qualsiasi altro programma)?
Questo è il codice che sto utilizzando attualmente:

prc = New Process() With prc .StartInfo.FileName = pdfFilePath .StartInfo.Verb = "printto" .StartInfo.Arguments = Chr(34) + printer + Chr(34) .StartInfo.WindowStyle = ProcessWindowStyle.Hidden .StartInfo.UseShellExecute = True .StartInfo.CreateNoWindow = True .Start() End With

Questo codice è all'interno di un ciclo e ad ogni stampa apre una nuova istanza di acrobat reader (anche se non dovrebbe?!)...

AntCiar Profilo | Expert

ciao.

si aprono tante interfacce di Acrobat perchè avvii tanti processi ma non ne chiudi nessuno.

Aggiungi questo codice dopo il tuo .Start()

.WaitForExit()
.Close()

Ciao




Cristian Barca

ManInBluff Profilo | Newbie

In questo modo il programma si ferma. Solo se chiudo la finestra principale manualmente, riparte.

ManInBluff Profilo | Newbie

Nessuna soluzione? Perdonate l'insistenza ma è urgente...

ManInBluff Profilo | Newbie

Ritorno sull'argomento... nessuno ha una soluzione da propormi?

Cimperiali Profilo | Newbie

mah, qui http://aspalliance.com/514_CodeSnip_Printing_PDF_from_NET.all c'è uno che dice che l'ha fatto usando uno switch non documentato che funziona da adobe reader 4...

ManInBluff Profilo | Newbie

Il problema è che con questo codice acrobat si apre comunque...

Cimperiali Profilo | Newbie

lo immaginavo. in effetti, se cerchi in giro, scopri che in molti hanno il problema, ma nessuno una vera soluzione. però pare che dal web sia possibile (vedi http://www.sanjbee.com/content/?p=96) quindi ci si dovrebbe riuscire anche da winform. Appena trovo un po' di tempo ci provo.

AntCiar Profilo | Expert

Ciao.

Il codice e il progetto che ti hanno inviato deve per forza aprire una istanza del programma specifico per stampare il tipo di file in questione.
Se non vuoi fare ciò, allora devi costruire una applicazione capace di leggere il file in questione (quindi direttamente dipendente al formato di file), interpretarlo e stamparlo. In pratica dovresti ricostruire un piccolo Word, Excel, Paint etc.

Altra soluzione è quella di utilizzare i controlli Microsoft relativi al Word e Excell presenti in VS.

La soluzione più comoda e giusta è quella di far gestire al sistema operativo il tutto come detto nelle precedenti risposte.

Ciao.

Cristian Barca

Cimperiali Profilo | Newbie

Ma nel senso che non voleva aprire adobe come finestra ui o non voleva proprio che fosse chiamato il motore di adobe? Credevo fosse la prima
(tra l'altro ->http://www.verydoc.com/documents/acrojsguide/pg_0079.htm)....

ManInBluff Profilo | Newbie

La prima... Adobe non deve aprire la finestra (e quindi il file da stampare...)

ManInBluff Profilo | Newbie

Ci sono novità? qualcuno ha un'idea?

skizz87 Profilo | Newbie

Sono capitato in questo post per caso, non so se ti possa tornare utile ma magari tornerà utile a qualcuno che cerca una possibile soluzione...
Io ho risolto incorporando nelle risorse il .exe di Foxit Reader, con quest'ultimo puoi passare dei parametri al programma e stampare senza aprire il processo come fa Acrobat poi da codice ho fatto esattamente così:

Dim pdfApp As String = Application.StartupPath & "\Resources\FoxitReader.exe -p mioPDF.pdf" Shell(pdfApp, AppWinStyle.Hide)

Se non trova il file PDF specificato ti mostra una messagebox che ti avvisa del file mancante.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5