04/09/11 12:16
Il Totem
Non mancava niente in quel codice. Sono due modi totalmente diversi di stampare. Quello che stai usando tu è il più lungo ma anche quello meno dipendente dalla macchina su cui gira. Le mie quattro righe di codice sono un metodo molto veloce e sbrigativo per stampare un singolo file, posto che l'estensione di tale file sia associata a un programma in grado di stamparla. Stampare un file con la classe Process non ha bisogno di PrintDialog né altra roba perché la stampa viene delegata interamente a un programma esterno su cui non hai controllo.
aaa
06/09/11 14:33
wuolfit
mmmmm Totem fammi vedere se ho capito bene quindi per favore correggimi se sbaglio, in altre parole tu mi stai dicendo che usando le tue 4 righe di codice, se volessi stampare il file esempio.doc, il programma mi aprirebbe word e poi io da word dovrei lanciare la stampa giusto???? Anche perché se io le vado ad utilizzare nel mio programma è questo l'effetto che ottengo, ma quello che io voglio è, che il processo di stampa parta da solo, allora ho pensato se con le righe di codice scritte da Totem riesco ad aprire il file aggiungendo qualcosa dovrei anche stamparlo in automatico e quindi ho pensato di scrivere questo :
Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click
Dim printp As New Process
Dim file As String
OpenFileDialog1.Title = "Sfoglia e Stampa"
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
file = OpenFileDialog1.FileName()
PrintDocument1.PrinterSettings.PrinterName = "nomestampante"
printp.StartInfo.FileName = file
printp.StartInfo.Verb = "Print"
printp.Start()
PrintDocument1.Print()
Else
Exit Sub
End If
End Sub
Il problema è che dalla stampante esce il foglio interamente bianco, ma in teoria a PrintDocumet1 non viene detto qual'è il file da stampare dal comando printp.StartInfo.FileName = file???? Se così non fosse come faccio a dire a PrintDocument1 qual'è il file che deve mandare in stampa???? Grazie per l'aiuto
Ultima modifica effettuata da wuolfit 06/09/11 14:48
aaa
07/09/11 10:54
Il Totem
No, non fare di testa tua. Se ti dico che usando Process non puoi e non devi usare niente altro, allora perché lo fai? E' evidente che stai andando alla cieca. Ti ho già postato una risposta in cui spiego cosa fa il metodo PrintDocument.Print(), ti ho postato un link alla mia guida che mostra dettagliatamente come stampare usando la classe Graphics, ti ho ribadito che la classe Process delega la stampa a un altro programma e nonostante tutto ciò continui a perseverare in una via che è palesemente sbagliata. Infatti, come farebbe printp a dire a PrintDocument1 qual è il file da stampare? Per magia? C'è qualche punto del codice in cui compaiano nella stessa istruzione sia PrintDocument1 che printp? No. E allora come fanno a comunicare? Ovvio che non possono. E non possono perché sono due tecniche diverse che ti ho già abbondantemente illustrato. Scegliene una e usa quella.
aaa
08/09/11 8:08
wuolfit
Ho capito grazie Totem, comunque ho una perplessità, se uso solo le tue 4 righe di codice come da te descritto, cioè ad esempio gli dico da codice qual'è il file da aprire, mi apre il programma preposto alla lettura del file e poi mi fa la stampa con la stampante predefinita, ma se provo a dargli il file in questa maniera
Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click
Dim printp As New Process
Dim file As String
OpenFileDialog1.Title = "Sfoglia e Stampa"
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
file = OpenFileDialog1.FileName()
printp.StartInfo.FileName = file
printp.StartInfo.Verb = "Print"
printp.Start()
mi apre sempre il file il programma preposto ma non avvia il processo di stampa. Come mai????
Ultima modifica effettuata da wuolfit 08/09/11 8:36
aaa
08/09/11 10:06
wuolfit
Scusa Totem correggo ciò che ho detto prima, mi stampa in ogni caso, cioè sia che indico il file scrivendolo da sorgente che selezionandolo grazie ad un OpenFileDialog, però c'è una cosa che non fà cioé stampare le immagini, ne conosci il motivo????
aaa