Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] stampare un file da una OpenDialog
Forum - C# / VB.NET - [VB.NET] stampare un file da una OpenDialog

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
wuolfit (Normal User)
Pro


Messaggi: 100
Iscritto: 19/07/2011

Segnala al moderatore
Postato alle 11:18
Venerdì, 02/09/2011
Salve a tutti,
è da un pò che mi arrovello il cervello con le stampe, ma quello che stò cercando di fare è trovare una soluzione funzionale e comoda....e mi è venuto in mente perché non usare le opendialog? l'idea mi parve buona e facile da realizzare ma con l'inconveniente che non fa ciò che vorrei, cioé è vero che stampa, ma la pagina è bianca, qui sotto riporto il codice :

Codice sorgente - presumibilmente VB.NET

  1. Private Sub btnSfogliaStampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfogliaStampa.Click
  2.  
  3.         OpenFileDialog1.Title = "Sfoglia e Stampa"
  4.         If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
  5.             PrintDocument1.PrinterSettings.PrinterName = "nomestampante"
  6.             PrintDocument1.Print()
  7.             Else
  8.                 Exit Sub
  9.         End If
  10.     End Sub



Potreste aiutarmi a capire dov'è l'errore per favore???? Grazie mille

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:56
Venerdì, 02/09/2011
Se ti fossi documentato prima di postare 20 post uguali, sapresti che Print() non fa altro che invocare una serie di eventi PrintPage che devono essere gestiti dal programmatore:
http://totemslair.org/guide/viewchapter.php?guida=vb&id=98

PM Quote
Avatar
wuolfit (Normal User)
Pro


Messaggi: 100
Iscritto: 19/07/2011

Segnala al moderatore
Postato alle 12:08
Venerdì, 02/09/2011
avevo trovato qualcosa di simile a questo :

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim P As New Process
  2.  
  3. P.StartInfo.FileName = "file da stampare"
  4.  
  5. P.StartInfo.Verb = "Print"
  6.  
  7. P.Start()


Sempre in questo forum e sempre scritto da te ma mancava tutta l'altra roba :-)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:16
Domenica, 04/09/2011
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.

PM Quote
Avatar
wuolfit (Normal User)
Pro


Messaggi: 100
Iscritto: 19/07/2011

Segnala al moderatore
Postato alle 16:33
Martedì, 06/09/2011
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 :

Codice sorgente - presumibilmente VB.NET

  1. Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click
  2.         Dim printp As New Process
  3.         Dim file As String
  4.         OpenFileDialog1.Title = "Sfoglia e Stampa"
  5.         If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
  6.             file = OpenFileDialog1.FileName()
  7.             PrintDocument1.PrinterSettings.PrinterName = "nomestampante"
  8.             printp.StartInfo.FileName = file
  9.             printp.StartInfo.Verb = "Print"
  10.             printp.Start()
  11.             PrintDocument1.Print()
  12.  
  13.         Else
  14.             Exit Sub
  15.         End If
  16.     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 il 06/09/2011 alle 16:48
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 12:54
Mercoledì, 07/09/2011
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.

PM Quote
Avatar
wuolfit (Normal User)
Pro


Messaggi: 100
Iscritto: 19/07/2011

Segnala al moderatore
Postato alle 10:08
Giovedì, 08/09/2011
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

Codice sorgente - presumibilmente VB.NET

  1. Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click
  2.         Dim printp As New Process
  3.         Dim file As String
  4.         OpenFileDialog1.Title = "Sfoglia e Stampa"
  5.         If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
  6.         file = OpenFileDialog1.FileName()
  7.         printp.StartInfo.FileName = file
  8.         printp.StartInfo.Verb = "Print"
  9.         printp.Start()



mi apre sempre il file il programma preposto ma non avvia il processo di stampa. Come mai????

Ultima modifica effettuata da wuolfit il 08/09/2011 alle 10:36
PM Quote
Avatar
wuolfit (Normal User)
Pro


Messaggi: 100
Iscritto: 19/07/2011

Segnala al moderatore
Postato alle 12:06
Giovedì, 08/09/2011
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????

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:37
Giovedì, 08/09/2011
Come ti ho già ribadito più volte, se non esiste un programma adatto alla stampa associato a quel tipo di file, non puoi stamparla. Se nel registro di sistema non esiste la voce print allora anche se il programma c'è, comunque il file non verrà stampato.
D'altro canto, è molto semplice stampare le immagini con l'altro metodo.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo