PDA

Visualizza versione completa : [Vb6] Stampa File txt


gkcuvb
17-08-2004, 11.22.15
E' possibile stampare da Vb un file di testo in modo che venga impaginato correttamente? Per esmpio come posso stampare correttamente il file che ho allegato?

Larthal
17-08-2004, 15.06.44
Tempo fa ho usato l'oggetto Printer. Prova a vedere la guida perché è sicuramente più esaustiva di quanto non potrei essere io con la ruggine che ho addosso...

gkcuvb
18-08-2004, 09.14.55
Non volevo utilizzare la stampa del Vb, forse mi sono spiegata male....dato che ho un file già pronto dal quale basterebbe fare Stampa, volevo capire se esiste qualche API (come per esempio la shellexecute) con qualche opzione particolare per fare in modo che il file venga stampato impaginato correttamente. L'unico problema per cui non posso stampare direttamente dal file è che mi si impagina male, come potrete vedere stampando il file, è per questo che volevo utilizzare Vb, per togliere all'utente l'incombenza di qualsiasi impostazione.
Forse però ora invece di chiarire le idee le ho confuse ancora di più....

Larthal
18-08-2004, 10.07.08
Io non saprei come fare. :(
Prova a guardare qui:
http://www.vbitalia.it/discussioni.asp?area=Stampa

LoryOne
19-08-2004, 12.33.11
Il file è già impaginato correttamente, il problema sono le dimensioni del foglio.

Ad una prima occhiata direi che deve essere stampato in orizzontale e non su un A4, bensì su un A3.
Se lo volessi stampare su un A4 non lo potresti fare a meno di:
- usare 2 fogli
- ridurre al minimo la dimensione del carattere da stampare o il tipo di carattere
- ridurre al massimo i margini e le intestazioni e piè pagina

Questo nel caso in cui volessi stampare su un formato predefinito, altrimenti dovresti anche impostare manualmente le dimensioni del foglio, caratteristica strettamente legata alla tipologia di supporto della stampante stessa.

Quanto sopra è fattibile attraverso l'utilizzo di numerose API (non certo una sola) che sono già richiamate attraverso metodi e proprietà nella classe Printer di VB.

gkcuvb
19-08-2004, 14.12.40
Grazie....ma qualche informazione più precisa? Quello che è certo è che il file deve rimanere così come è e io non vorrei mettermi lì a leggere dal file le informazioni e a ristamparle dal vb con l'oggetto printer.....

Larthal
19-08-2004, 15.20.17
Obbliga i clienti o comunque gli utenti ad installare Word, quindi dal tuo programma puoi creare un'istanza ad un oggetto Word.Application, fargli caricare il documento e lavorando sulle proprità della pagina stamparlo correttamente.



Dubito che esista un'API tipo PrintTextFileJustLikeIWant(...)



http://msdn.microsoft.com

gkcuvb
19-08-2004, 16.24.14
Ti ringrazio per i consigli....lo so, a volte pretendo troppo dal povero Vb! E' che mi ha abituata male...ti permette di fare sempre un sacco di cose!

Larthal
19-08-2004, 16.54.29
E' vero, ma la la comunità di programmatori è vasta.
Oggi internet da noia quindi non posso gironzolare per la rete ma davvero, prova a vedere su MSDN o a cercare tramite google sui forum di visual basic. Magari trovi un modulo o una classe che fanno al caso tuo!

LoryOne
19-08-2004, 18.03.30
Originariamente inviato da gkcuvb
Grazie....ma qualche informazione più precisa? Quello che è certo è che il file deve rimanere così come è e io non vorrei mettermi lì a leggere dal file le informazioni e a ristamparle dal vb con l'oggetto printer.....

Sinceramente non capisco una cosa e cioè: Cos'è che vuoi che faccia il programma ? :eek:

Il file rimane così com'è, ci mancherebbe.

io non vorrei mettermi lì a leggere dal file le informazioni e a ristamparle dal vb con l'oggetto printer.....


...mi sa che non hai scelta.
Oddio, puoi anche vercare qualche OCX che faccia la caso tuo ma dovrai sempre e comunque:
1) Scegliere la stampante
2) Impostare la dimensione del foglio
3) Mandare in stampa il file.

E' ovvio he all'interno del fantomatico OCX ci sia una procedura che permetta di impostare le prime due operazioni ed effettui la terza attraverso l'operazione seguente:
finchè non sono arrivato al fondo del file
leggo riga
la mando in stampa...
fine finchè

...allora mi chiedo: Perchè non usare la classe Printer ?

Oddio, è anche possibile passare a notepad il file come riga di comando e dirgli di stampare ma chi lo imposta il formato del foglio sul quale stampare ?
I margini ?
Le dimensioni dei caratteri ?

La stampa avverrebbe secondo le impostazioni di default di Windows ma tu devi agire preventivamente su queste impostazioni.

Usa Printer che ti conviene ;)

gkcuvb
20-08-2004, 09.51.20
e va bene...mi arrendo!!! Userò la classe Printer! Ma una linea del mio file non ci sta tutta su una pagina, dovrò spezzarla in due,tre o chissà quanti pezzi. Se guardi il file che ho allegato, questo deve essere stampato così come è , ma se lo stampi(anche se metti la pagina in orizzontale) la riga di intestazione(quella compresa fra le due righe di =) per esempio mi viene stampata su due righe dello stesso foglio e invece io la vorrei su una riga di due fogli diversi. e come faccio a sapere quando sono in fondo alla pagina (Vorrei metterci un numero di pagina)? Non mi sono spiegata tanto bene vero?
Beh ,insomma proverò a inventare qualcosa visto che la mia speranza di trovare un OCX ad hoc me l'avete uccisa.:(

Larthal
20-08-2004, 10.20.36
Domanda: e tentare con Crystal Reports?


...la butto lì...

gkcuvb
20-08-2004, 10.46.29
Ma mi serve la licenza.....

LoryOne
20-08-2004, 11.14.06
Originariamente inviato da gkcuvb
e va bene...mi arrendo!!! Userò la classe Printer! Ma una linea del mio file non ci sta tutta su una pagina, dovrò spezzarla in due,tre o chissà quanti pezzi. Se guardi il file che ho allegato, questo deve essere stampato così come è , ma se lo stampi(anche se metti la pagina in orizzontale) la riga di intestazione(quella compresa fra le due righe di =) per esempio mi viene stampata su due righe dello stesso foglio e invece io la vorrei su una riga di due fogli diversi. e come faccio a sapere quando sono in fondo alla pagina (Vorrei metterci un numero di pagina)? Non mi sono spiegata tanto bene vero?
Beh ,insomma proverò a inventare qualcosa visto che la mia speranza di trovare un OCX ad hoc me l'avete uccisa.:(

Esatto, devi inventarti qualcosa.
Pensa a left$ e mid$.
Pensa ad una cosa del genere:

riga1)Questa mattina mi sono svegliata ed ho pensato di suicidarmi
riga2)Poi c'ho ripensato ed ho chiesto aiuto a LoryOne
riga3)...
riga4)...
rigax)...

Ora supponi che la lunghezza del foglio ti consenta solo di stampare 33 colonne per x righe.
La prima volta che stamperai, manderai in stampa Left$(riga,33) per x volte
La seconda volta stamperai Mid$(riga,34) per altre x volte e via di seguito fino alla fine del file.

Se vuoi forzare l'intero contenuto del file in un unico foglio beh...potresti anche farlo ma ciò che ci sarebbe scritto potrebbe essere talmente piccolo da non risultare leggibile.

Larthal
20-08-2004, 11.14.51
Prova a vedere se questo codice ti può essere di aiuto.

Larthal
20-08-2004, 11.23.04
Originariamente inviato da LoryOne


Se vuoi forzare l'intero contenuto del file in un unico foglio beh...potresti anche farlo ma ciò che ci sarebbe scritto potrebbe essere talmente piccolo da non risultare leggibile.

Beh ma era quello il punto... no, non di renderlo illeggibile, ma di stamparlo incolonnato correttamente così com'è.

E' uno smarronamento lo so... :wall:

Larthal
20-08-2004, 11.29.06
Ho trovato anche questi due articoli:
http://www.devx.com/getHelpOn/10%20Minute%20Solution/18219/0
http://www.devx.com/getHelpOn/10%20Minute%20Solution/20103/0

Larthal
20-08-2004, 11.31.23
Originariamente inviato da LoryOne


riga1)Questa mattina mi sono svegliata ed ho pensato di suicidarmi
riga2)Poi c'ho ripensato ed ho chiesto aiuto a LoryOne


riga30)Poi è intervenuto LarthaL che non ha capito un tubo :p
riga31)ed il pensiero del suicidio è tornato vivace e colorato :wall:

gkcuvb
20-08-2004, 12.03.22
Grazie a tutti, inizio a provare con qualcuna delle numero idee che mi avete dato.