Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 41
  1. #1

    FPDF - Testo normale + Testo Grassetto - HELP!!!

    Allora,


    sempre questo maledetto FPDF

    io ho questo testo:

    codice:
    testo="questo è un testo con il < b>grassetto< /b>"

    questo testo deve essere stampato da FPDF.

    il mio problema è che il testo compreso tra deve essere formattato in GRASSETTO. ho pensato: facile, stampo prima una multicella con il testo normale e poi un'altra multicella con il testo in grassetto.

    ecco la fregatura: MultiCell quando finisce setta a 0 (o cmq riazzera) l'ascissa X, e quindi il metodo GetX() mi posiziona al margine sinistro del foglio.

    Poichè due multicell affianco non si possono stampare, ditemi voi come faccio a far stampare sulla stessa riga due testi, uno in grassetto e l'altro no.

    Vi prego!!!!!!!!! chi lo risolve è un mito

    sperando che baol ci dia uno sguardo a questo post

    volevo provare a capire la funzione multicell nel sorgente fpdf.asp, però non è chiarissima e non vorrei fare casini....

    A domani se nessuno risponde stanotte

    Giorgio

  2. #2
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Ho tradotto un'estensione da fpdf.org che implemente il metodo WriteHTML. http://www.fpdf.org/en/script/script42.php

    Putroppo però l'estensione è per la nuova versione di fpdf e non compatibile con la 1.01

    Per cui io te la do. Provala e fammi sapere gli errori che ti restituisce così la mettiamo a posto

    codice:
    //variables of html parser
    this.B=0;
    this.I=0;
    this.U=0;
    this.HREF='';
    this.fontlist=new Array("arial","times","courier","helvetica","symbol");
    this.issetfont=false;
    this.issetcolor=false;
    
    
    
    //////////////////////////////////////
    //html parser
    
    
    function isset(o){return (o?true:false)}
    
    // funzioni da sviluppare : ereg
    
    	this.strip_tags=function(html,noStripList){
    		if (noStripList)noStripList = noStripList.toLowerCase()
    		var test = /<(.*?)>/ig;
    		html = html.replace(
    			test,
    			function($0){
    				if (noStripList){
    					var s=$0.toLowerCase();
    					if(s.substr(1,1)=="/"){
    						var st="<" + s.substr(2)
    						if (noStripList.indexOf(st)>-1)return s
    					}
    					else
    					{
    						var p = s.indexOf(" ")
    						if (p>0){
    							st=s.substring(0,p) + ">"
    							if(noStripList.indexOf(st)>-1)return s;
    						}
    						else if(noStripList.indexOf(s)>-1)return s;
    					}
    				}
    			}
    		)
    		return html;
    	}
    
    this.stripslashes=function(s){
    	return this.str_replace("\\'","\'",s)
    }
    
    this.GetAttrArray=function(value){
    	var i,strCh,ch
    	var key="";
    	var tmpValue="";
    	var valueKey="";
    	var inString = false
    	var ar=[];
    	for(i=0;i<value.length;i++){
    		ch = value.charAt(i);
    		if (inString&&(ch==strCh||i==value.length-1)){
    			valueKey = tmpValue;
    			if(ch!=strCh&&i==value.length-1)valueKey+=ch
    			tmpValue = ""
    			inString=false;
    			ar[key]=valueKey
    			}
    		else if (ch=="="){
    			key = this.trim(tmpValue).toUpperCase()
    			tmpValue = ""
    			while(value.charAt(i+1)==" ")i++
    			strCh = value.charAt(i+1)
    			inString=true;
    			if (strCh!="'"&&strCh!="\"")strCh=" "
    			else i++
    			}
    		else tmpValue+=ch;
    	}
    	return ar;
    }
    
    function preg_split(src){
    	var Res;
    	var arRes=[];
    	var re = /[<>]/g;
    	while ((Res = re.exec(src)) != null){
    		arRes.push(src.substr(0,Res.index))
    		src = src.substr(Res.lastIndex)
    		re = /[<>]/g;
    	}
    	arRes.push(src)
    	return arRes
    }
    
    this.WriteHTML=function(html)
    {
    	var a,i,e,a2,tag;
    	html=this.strip_tags(html,"[b]<u>[i]<a><img>
    
    
    [b][i]<font><tr><blockquote><dir>"); //remove all unsupported tags
    	html=this.str_replace("\n",' ',html); //replace carriage returns by spaces
    	a=preg_split(html); //explodes the string
    	for(i in a)
    	{
    		e=a[i];
    		if(i%2==0)
    		{
    			//Text
    			if(this.HREF)
    				this.PutLink(this.HREF,e);
    			else
    				this.Write(this.stripslashes(this.txtentities(e)));
    		}
    		else
    		{
    			//Tag
    			if(e.charAt(0)=='/')
    				this.CloseTag(e.substr(1).toUpperCase());
    			else
    			{
    				//Extract attributes
    				var attr;
    				var p = e.indexOf(" ")
    				if(p>-1){
    					tag = e.substring(0,p)		
    					var attr=this.GetAttrArray(e.substr(p+1))
    				}else tag = e
    				this.OpenTag(tag.toUpperCase()	,attr);
    			}
    		}
    	}
    }
    
    function px2mm(px){
    	if(!px)return 0;
    	return px*25.4/72;
    }
    
    this.OpenTag=function(tag,attr)
    {
    	//Opening tag
    	switch(tag){
    		case 'STRONG':
    			this.SetStyle('B',true);
    			break;
    		case 'EM':
    			this.SetStyle('I',true);
    			break;
    		case 'B':
    		case 'I':
    		case 'U':
    			this.SetStyle(tag,true);
    			break;
    		case 'A':
    			this.HREF=attr['HREF'];
    			break;
    		case 'IMG':
    			if(attr['SRC'])this.Image(attr['SRC'], px2mm(attr['WIDTH']), px2mm(attr['HEIGHT']),this.HREF);
    			break;
    		case 'TR':
    		case 'BLOCKQUOTE':
    		case 'BR':
    			this.Ln(5);
    			break;
    		case 'P':
    			this.Ln(10);
    			break;
    		case 'FONT':
    			if (isset(attr['COLOR']) && attr['COLOR']!='') {
    				var coul=this.HexToRgb(attr['COLOR']);
    				this.SetTextColor(coul['R'],coul['G'],coul['B']);
    				this.issetcolor=true;
    			}
    			if (isset(attr['FACE']) && this.InArray(attr['FACE'].toLowerCase(), this.fontlist)) {
    				this.SetFont(attr['FACE'].toLowerCase());
    				this.issetfont=true;
    			}
    			break;
    	}
    }
    
    this.CloseTag=function(tag)
    {
    	//Closing tag
    	if(tag=='STRONG')
    		tag='B';
    	if(tag=='EM')
    		tag='I';
    	if(tag=='B'||tag=='I'||tag=='U')
    		this.SetStyle(tag,false);
    	if(tag=='A')
    		this.HREF='';
    	if(tag=='FONT'){
    		if (this.issetcolor==true) {
    			this.SetTextColor(0);
    		}
    		if (this.issetfont) {
    			this.SetFont('arial');
    			this.issetfont=false;
    		}
    	}
    	if(tag=='DIR')
    		this.margin.left -= 5
    }
    
    this.arStyle = {'B':0,'U':0,'I':0}
    
    this.SetStyle=function(tag,enable)
    {
    	//Modify style and select corresponding font
    	this.arStyle[tag] += (enable ? 1 : -1);
    	var style = (this.arStyle['I']>0?"I":"")  + (this.arStyle['B']>0?"B":"") + (this.arStyle['U']>0?"U":"")
    	this.SetFont("",style);
    }
    
    this.PutLink=function(URL,txt)
    {
    	//Put a hyperlink
    	this.SetTextColor(0,0,255);
    	this.SetStyle('U',true);
    	this.Write(txt,0,URL);
    	this.SetStyle('U',false);
    	this.SetTextColor(0);
    }

  3. #3
    Allora,

    probabilmente non ho capito come si usa. Io ho fatto questo:

    - ho salvato lo script che mi hai dato in un file chiamato htmlParser.ext

    - ho messo questo codice:

    codice:
    <%
    Dim i,pdf
     
    Set pdf=CreateJsObject("FPDF")
    pdf.CreatePDF "P","pt"
    pdf.SetPath("fpdf/")
    pdf.SetFont "Arial","",16
    pdf.loadExtension("htmlParser")
    pdf.Open()
    pdf.AddPage()
    pdf.SetFont "Times","",12
    pdf.SetRightMargin(30)
    pdf.SetLeftMargin(30)
    
    pdf.WriteHTML "questa è una prova"
    
    
    pdf.Close()
    pdf.Output()
    %>
    però mi da un generico errore di proprieta non supportata dall'oggetto...però non indica nessuna riga :master:

    fammi sapere qualcosa

  4. #4
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    In questa fase ti conviene inserirla direttamente all'interno della classe fpdf.

    L'errore non ti viene segnalato perchè il caricamento è dinamico ed eseguito con eval().

    Percui per vedere gli errori devi inserire il codica direttamente.

  5. #5
    ho provato

    da errore qui:

    codice:
    	html=this.str_replace("\n",' ',html); //replace carriage returns by spaces
    all'interno della function writeHtml. ma str_replace è di asp?

  6. #6
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    No, adesso te la do.

  7. #7
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    No, adesso te la do. Mettila sempre all'interno della classe

    codice:
    	this.str_replace=function(psearchText,preplaceText,poriginalString){
    		var searchText=new String(psearchText)
    		var replaceText=new String(preplaceText)
    		var originalString=new String(poriginalString)
    		var i;
    		var strLength = originalString.length;
    		var txtLength = searchText.length;
    		if ((strLength == 0) || (txtLength == 0))
    		{ return originalString; }
    		var i = originalString.indexOf(searchText);
    		if ((!i) && (searchText != originalString.substring(0,txtLength)))
    		{ return originalString; }
    		if (i == -1)
    		{ return originalString; }
    		var newstr = originalString.substring(0,i) + replaceText;
    		if (i+txtLength < strLength) { newstr += this.str_replace(searchText,replaceText,originalString.substring(i+txtLength,strLength)); }
    		return newstr;
    	}

  8. #8
    da errore ad ogni str_replace

  9. #9

  10. #10
    Ok, adesso altro errore.

    mi sa che manca la funzione this.txtentities(e) perchè da errore qui:
    codice:
    //in writeHtml
    this.Write(this.stripslashes(this.txtentities(e)));
    infatti non mi sembra di averla vista in giro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.