Newsgroup: it.comp.lang.visual-basic
Titolo: problemi di stampa

Salve a tutti.
Volevo esporvi il mio problema, magari c'e' qualcuno che puo' aiutarmi ....
Il mio prg provvede a stampare delle tessere, in ogni foglio ci sono tre
tessere, il formato del foglio e' di 270x305. Imposto questo formato sulla
mia hp 920 e lancio una stampa : le prime tre tessere (primo foglio) sono
perfette, quando tira il secondo foglio, pero', incomincia a stampare la
prima tessera molto piu' giu', ( = lascia dei righi in bianco in testa).
Questo problema, pero', se stampo su una stampante ad aghi, con modulo
continuo, non si riscontra.
Penso, quindi, che al cambio foglio succeda qualcosa, ma non so proprio come
gestire questo evento.
Non c'e' modo di far partire la stampa del secondo, terzo ecc, foglio da
ZERO, come se stampassi sempre il primo ?
Spero di essermi spiegato e grazie a chi vuol essere cosi' cortese da
aiutarmi.
p.s. utilizzo le istruzioni printer.print per stampare.

 ha scritto nel messaggio
news:7xzG8.2680$e5.5...@twister1.libero.it...

Ti sei spiegato e scommetto 100 lire (ho detto lire):
se il formato del foglio è esattamente quello che tu hai dichiarato, può
essere solo un problema di driver della stampante. Non so dirti se è perchè
è troppo vecchio o troppo recente. Non sarebbe la prima volta (provato per
esperienza, per esempio su Epson 2180) che un driver recentissimo abbia dei
problemi. Prova, per toglierti il dubbio e se puoi con un'altra stampante.
Se va, cerca un driver diverso per la stampate che devi usare, magari un
"compatibile". Che stampante è?

 "compatibile". Che stampante č?
e' una HP 920c (comprata da poco : neppure due mesi) : puo' essere che non
abbia driver aggiornati ?
Ciao e grazie

 prima tessera molto piu' giu', ( = lascia dei righi in bianco in testa).
Mmmmm......
probabile che dica un'altra mia stupidaggine ma almeno ci provo....
Ma hai messo Printer.NewPage ad ogni inizio pagina? Ossia..... quando stampi
le 3 tessere è si verifica Printer.EndDoc oltre a Printer.NewDoc metti anche
Printer.NewPage?
Almeno dovresti fare questo se il tuo programma è un loop che ti stampa 3
tessere a volte e si ripete un ciclo di n volte (dove n=pagine da
stampare)....

 abbia driver aggiornati ?
Puň essere. Ma puň anche essere che siano "troppo" aggiornati, cioč
sbagliati. O che, naturalmente, ci sia qualche parametro nel pannello di
controllo della stampante (software e/o hardware) dichiarato in modo errato.
Leggi bene il manuate con particolare attenzione a tutti i riferimenti
all'uso della stampante in Windows.
Un'ultima cosa che parrebbe scontata: Non č che ci siano problemi meccanici
di trascinamento del foglio? Vedi bene le caratteristriche della stampante e
gli spessori minimi/massimo dei fogli che puň gestire.

 Printer.NewPage?
Ottimo suggerimento ... Zombie.  ;-)

 ha scritto nel messaggio
news:7xzG8.2680$e5.5...@twister1.libero.it...

Printer.NewPage
Printer.CurrentY = 0
Ma non ho capito bene il cambio pagina.

 gli spessori minimi/massimo dei fogli che può gestire.
No, tutto a posto li.
Grazie per avermi risposto e fatto distrarre un po'  e buon lavoro.


Allora mettiamo che tu hai:
Printer.NewDoc
.....
.....
.....
routine che ti stampa le tre tessere
.....
....
....
Printer.EndDoc
Dovresti cercare di trasformarlo in:
Printer.NewPage
.....
.....
.....
routine che ti stampa le tre tessere
.....
....
....
Printer.EndDoc
oppure se la routine si ripete n volte impostare un semplice contatore che
se è maggiore-uguale a 1 invece di Printer.NewDoc invii alla stampante
printer.NewPage
ad esempio:
Dim contatore as integer
contatore=0
Printer.NewDoc
    Do while not paginedastampare=quantepaginevuoitu
        If contatore<>0 then
            Printer.NewPage
        End If
    ....
    ....
    routine che stampa la pagina con le 3 tessere
    ....
    ....
    Printer.EndDoc
    contatore=1
    Loop

 (Scusa lo sfogo amarcord..iano)
Per carità. A proposito di sfoghi e di "considerazioni" su Bill ti ho già
battuto in partenza... ormai qui mi conoscono come "quello che ce l'ha con
Bill".

 Volevi scrivere 270, non 207, vero???!!!
cm 20,7 x cm 30,5 (d'altro canto un A4 = cm 210 x 29,7)

 cm 20,7 x cm 30,5 (d'altro canto un A4 = cm 210 x 29,7)
Carmelo, qualunque sia la dimensione (nel tuo caso, particolarmente
l'altezza), deve essere ESATTAMENTE quella del foglio. Se non hai moduli già
previsti, usa l'impostazione personalizzata, in mm. E (non so se questa è
l'entità dell'errato posizionamento nella seconda pagina) 305 mm di altezza
sono ben diversi da 297!

 Bill".
Lupo, GIURO su quello che ti pare che ho mandato l'altro
post prima di leggere questo... :-)))
Bye, G.

 Printer.NewPage?
Fatto, ed in effetti e' tutto a posto. MA ..... ora, finito di stampare le
prime 3 etichette, la stampante mi chiama
un foglio bianco, e poi comincia a stampare le altre 3 in maniera esatta
 il margine superiore e' uguale al foglio n.1 ed e' quello che volevo).
Quindi il problema e' che ora mi stampa una pagina si e una no.
            If contatore = 3 Then
                Printer.NewPage
                contatore = 0
            End If
Praticamente newpage fa fare un salto pagina come enddoc ?


Dunque per correttezza e per informazione :
Il problema si e' risolto utilizzando l'istruzione
printer.CurrentY = 0 (soluzione fornita da Lanni Pietro)
Il printer.newpage causa un salto pagina al pari printer.enddoc che non sono
riuscito a risolvere.
Un grazie di cuore a tutti voi che partecipando e rispondendo al mio quesito
mi avete permesso
di risolvere il mio problema e di apprendere nuove nozioni.
Carmelo

 Praticamente newpage fa fare un salto pagina come enddoc ?
Ho letto che hai risolto (con Printer.CurrentY=0) e quindi non voglio
crearti altri dubbi, ma, semmai, chiarire i miei:
Il fatto che il Printer.NewPage salti una pagina, mi fa pensare che alla
fine della stampa della terza tessera, la posizione CurrentY sia oltre
l'altezza "utile" (non quella complessiva dichiarata) del foglio. Questo
dovrebbe provocare un NewPage automatico, al quale si aggiunge quello che
hai messo esplicitamente. Sarebbe bene fare una verifica. Prova a bloccare
il programma dopo la completa stampa della terza tessera e visualizza i
valori di Printer.CurrentY (indica la posizione corrente della "testina" di
stampa) e di Printer.ScaleHeight (indica l'altezza effettivamente
utilizzabile del foglio).

> Spero proprio che i tuoi 0,05 centesimi di euro li vinca, perche' cosi'
Si dice 0,05 Euro, e non 0,05 CENTESIMI di euro.
0,05 centesimi di euro sono 0,0005 euro. Il che è sbagliato, se intendi dire
100 lire.

 utilizzabile del foglio).
Ho seguito tutto il 3ad per sfizio e credo proprio che siamo giunti
all'inghippo ( come velatamente accennato prima ) :
L'ALTEZZA DEL FOGLIO E' SFALLATA !!!
Scommetto le 100Lire di LUPO e Rilancio di altre 100 che se stampi le prime
3 etichette ti stampa un foglio con 3 tessere e uno Bianco !!!
un Gigio al Casino' !

 di risolvere il mio problema e di apprendere nuove nozioni.
cacchio , mi stavo divertendo a leggere le scommesse ... , quindi Lupo HA
PERSO 100Lire ? gh gh
cmq il problema e' stato aggirato ma non risolto, infatti la currentY sfalla
quindi che si fa ? chiudiamo la sfida con una pezza o continuiamo a
combattere ? ;-]
( scherzo )

 combattere ? ;-]
Dipende da Carmelo (perchè capisca e risolva un problema ... per la prossima
volta), non certo per le 100 lire.
Chissà dove sta quel CurrentY... ;-)
PS: gh gh non è un "verso" da lupo... arf, arf.