Proviamo una cosa alla volta, ora è importante che tu riesca a stampare l'intestazione su ogni foglio, fatto questo pensiamo anche agli importi.
Per avere un buon risultato, è necessario che i margini di stampa siano sempre gli stessi, altrimenti non ti entrerebbero più 17 righe, ma 19 o 16.
Prima di stampare, magari con un'alert avverti all'amministratore di controllare dal menu File -> Imposta pagina di IE, che l'orientamento del foglio A4 sia verticale, che intestazione e piè di pagina siano vuoti, e che i margini siano tutti di 10 mm, tranne quello inferiore impostato a 20 mm.
Così messi i margini, l'area di stampa dovrebbe rientrare nello "stampabile" di ogni stampante. (quante volte ho ripetuto la parola stampa??)
A questo punto disponi di un'area di stampa che corrisponde ad un A4 meno i margini citati, e cioè, in dimensioni: 190mm x 267 mm.
Quello che devi fare è costruire da frontpage o qualsiasi altro editor html, una tabella che comprenda intestazione e spazio per scrivere il testo della fattura delle dimensioni esatte dell'area di stampa. Si ma a quanti pixel corrisponde? Internet explorer stampa il contenuto di una pagina web a 96dpi. Quindi, una tabella che occupa 190x267 mm è grande 718 x 1009 pixel. Ricordati bene 1009 pixel perchè è l'intervallo che intercorre tra una pagina e l'altra, con i margini settati a quel modo (10mm il superiore, 20 l'inferiore).
Per arrotondare un po' le misure, tu costruisci una tabella 700x1000 pixel, all'interno della quale ci sarà l'intestazione ed il testo da inserire.
Ci saranno tante tabelle quante pagine da stampare, ed ognuna avrà posizioni assolute con l'intervallo di 1009 pixel. (Lo so che è lunghetto come procedimento, però io non ce l'ho crystal reports, bisogna arrangiarsi come si può, qualche volta).
Per prima cosa, nella pagina asp devi rilevare di quante pagine sarà composta la stampa finale. Taglierò le frasi a 1000 caratteri. Per cui, se tutto il testo è lungo 3750 caratteri, le pagine da stampare saranno 4:
<%
Dim testo, contatore
Dim pagine()
testo = Request.form("testo")
contatore = 0
while Len(testo) > 1000
Redim preserve pagine(contatore)
pagine(contatore) = Left(testo,1000)
testo = Mid(testo, 1001)
contatore = contatore + 1
wend
%>
in questo modo si crea un'array ("pagine") che ha per ogni elemento, tutto il testo di massimo 1000 caratteri, da scrivere in una pagina.
Passiamo a generare le pagine con quelle benedette tabelle:
<%
for i = 0 to Ubound(pagine)
distacco = i*1009
%>
<table width="700" height="1000" style="position:absolute; left:0, top:<%=distacco%>">
<tr><td>Intestazione</td><tr>
<tr><td><%=pagine(i)%></td></tr>
</table>
<%
next
%>
Questo creerà tante tabelle quanti sono gli elementi dell'array "pagine".
Le tabelle si ripetono con un'intervallo di 1009 pixel, infatti guarda la proprietà top: all'inizio vale 0, poi 1009, poi 2018 ecc.. e in ogni pagina avrai l'intestazione con la porzione di testo.
Io ho tagliato a 1000 caratteri esatti, le parole risulteranno troncate, ti puoi rifinire meglio il sistema di "taglio", mettendolo al punto, o all'"a capo".
Per inserire gli importi, nel ciclo for metti questa condizione:
if i = Ubound(pagine) then
'aggiungi gli importi
end if
vedi se ti piace tutto questo metodo, lo so che è faticoso, io l'ho fatto non potendo usare Crystal Reports... vedi tu! In bocca al lupo...
Modificato da BrightSoul il 06 ottobre 2002 15.57 -
Enjoy learning and just keep making