ok ho un altro problema:
ho creato la tabella tramite l\'estensione e tutto funziona correttamente...
i dati li prendo da un db per creare il contenuto delle tabelle ma il punto quando un campo ha molti caratteri e deve essere diviso su più pagine
la prima pagina sce sempre vuota e incomincia a funzionare correttamente dalla seconda in poi!!!!!
se invece è un repeat di campi \"con nn troppi caratteri al loro interno (l\'importante che nn superi il singolo campo la lunghezza della pagina)\" anche la prima pagina fuziona correttamente!
grazie
ecco l'estensione table.ext
codice:
var widths;
this.Table = {Border:{Width:0.1,Color:''},Fill:{Color:''},TextAlign:"J"}
this.SetColumns=function(){this.widths=arguments;}
this.HexToRGB=function(value){
var ar=new Array()
s= new String(value.toUpperCase());
ar["R"] = parseInt(s.substring(0,2),16);
ar["G"] = parseInt(s.substring(2,4),16);
ar["B"] = parseInt(s.substring(4,6),16);
return ar;
}
this.Row=function()
{
var xdata = arguments
var xi;var xh;var xnb;
var xw;
xnb=0;
for(xi=0;xi<xdata.length;xi++){xnb=Math.max(xnb,this.NbLines(this.widths[xi],xdata[xi]))};
xh=(xnb)*5;
this.CheckPageBreak(xh);
for(xi=0;xi<xdata.length;xi++)
{
xw=this.widths[xi];
xx=this.GetX();
xy=this.GetY();
if (this.Table.Border.Width>0||this.Table.Fill.Color!=''){
var xstyle='';
this.SetLineWidth(this.Table.Border.Width);
if(this.Table.Border.Color!=''){
var RGB = this.HexToRGB(this.Table.Border.Color);
this.SetDrawColor(RGB["R"],RGB["G"],RGB["B"]);
xstyle+='D';
}
if(this.Table.Fill.Color!=''){
var RGB = this.HexToRGB(this.Table.Fill.Color);
this.SetFillColor(RGB["R"],RGB["G"],RGB["B"]);
xstyle+="F"
}
this.Rect(xx,xy,xw,xh,xstyle);
}
this.MultiCell(xw,5,xdata[xi],0,this.Table.TextAlign);
this.SetXY(xx+xw,xy);
}
this.Ln(xh);
}
this.CheckPageBreak=function(xh)
{
if(this.GetY()+xh>this.PageBreakTrigger)this.AddPage(this.CurOrientation);
}
this.NbLines=function(xw , xtxt)
{
var xnb;
xcw=this.CurrentFont["cw"];
if(xw==0)xw=this.w-(this.rMargin)-this.x;
xwmax=((xw)-2*(this.cMargin))*1000/(this.FontSize);
xs=lib.str_replace("\r","",xtxt);
xnb=xs.length;
if(xnb>0 && xs.charAt(xnb-1)=="\n")xnb--;
xsep=-1;
xi=0;
xj=0;
xl=0;
xnl=1;
while(xi<xnb)
{
xc=xs.charAt(xi);
if(xc=="\n")
{
xi++;
xsep=-1;
xj=xi;
xl=0;
xnl++;
continue;
}
if(xc==" ")xsep=xi;
xl+=(xcw[xc]);
if(xl>xwmax)
{
if(xsep==-1)
{
if(xi==xj)xi++;
}
else xi=xsep+1;
xsep=-1;
xj=xi;
xl=0;
xnl++;
}
else {xi++;}
}
return xnl;
}
˙
mentre questa è la pagina.asp
codice:
<%
Dim i,pdf
Set pdf=CreateJsObject("FPDF")
pdf.CreatePDF()
pdf.SetPath("fpdf/") ' richiamo alla cartella
pdf.LoadExtension("table")
pdf.Open()
pdf.LoadModels("modello1") ' richiamo al modello
pdf.AddPage()
'pdf.SetFont "Arial","",9 ' setto il carattere per la cella oggetto
'pdf.Cell(80)
'pdf.Cell 0,10,"Lo lascio per prova",0,1
'pdf.Cell(1)
'pdf.Cell 16,5,"Riscontro*",1,1,"C"
'pdf.Ln(1)
'pdf.SetFont "Arial","B",10
'pdf.Cell(25) 'faccio partire la cella da una certa distanza
'pdf.Cell 0,5,ogget,0,1
'pdf.Ln(4) ' creo uno spazio di stacco
pdf.SetFont "Arial","",10 ' setto il carattere per la cella azione
pdf.Table.Border.Width = 0.1
'pdf.Table.Border.Color="000000" ' se voglio o non voglio il bordo
pdf.Table.Fill.Color="FFFFFF"
pdf.Table.TextAlign = "L"
pdf.SetColumns 22,168',30,40
'for i=0 to 10
While ((Repeat1__numRows <> 0) AND (NOT Rs_ogg.EOF))
pdf.Row "[_______]","- " + Rs_ogg("Azione")',"3","4"
pdf.Ln(4)
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Rs_ogg.MoveNext()
Wend
'next
' inizio ripetizione azioni
'While ((Repeat1__numRows <> 0) AND (NOT Rs_ogg.EOF))
'pdf.MultiCell 0,5,"- " + Rs_ogg("Azione"),0,1
'Repeat1__index=Repeat1__index+1
'Repeat1__numRows=Repeat1__numRows-1
'Rs_ogg.MoveNext()
'Wend
'fine ripetizioni azioni
'for i=0 to 40
' pdf.MultiCell 0,10,"Printing line number " & i,0,1
'Next
pdf.Close()
pdf.Output()
%>
Allora vi ho dato la pagina originale per farvi vedere che ho fatto numerose prove al fine di avere un risultato
metto gli apici quando alcune cose nn le voglio far uscire
Aiutatemi vi prego