CodeCharge Studio
search Register Login  

Web Reporting

Visually create Web Reports in PHP, ASP, .NET, Java, Perl and ColdFusion.
CodeCharge.com

YesSoftware Forums -> CodeCharge Studio -> PHP

 PDF [TIP]

Print topic Send  topic

Author Message
imroza

Posts: 21
Posted: 11/02/2008, 10:49 AM

A simple way to create a PDF:

1. in your php.ini qualifies extension=php_curl.dll
2. in your ccs_page beforeShow Event

global $pdf;
global $contapagine;
global $h;

$pdf = cpdf_open(0);
$contapagine=1;
$h=735;

//BEGIN -----Inizio Pagina
cpdf_page_init($pdf, $contapagine, 0, 843,597, 1.0);

cpdf_begin_text($pdf);
cpdf_set_font($pdf, "Times", 14, "WinAnsiEncoding");
cpdf_text($pdf, "New PDF Page", 200,800);
cpdf_end_text($pdf);

//END -----Inizio Pagina

//-------BEGIN corpo pagina

//-------END corpo pagina

//-----BEGIN Fine Pagina
$hei=55;
$bgtxt=35;
$mid=300;
cpdf_setlinewidth($pdf,0.8);
cpdf_moveto($pdf, 25, $hei);
cpdf_lineto($pdf, 555, $hei);
cpdf_stroke($pdf);
cpdf_begin_text($pdf);
$hei=$hei-7;
cpdf_set_font($pdf, "Arial", 6, "WinAnsiEncoding");
cpdf_text($pdf, "END Page", $bgtxt,$hei);
cpdf_text($pdf, "END PAge Dx", $mid,$hei);
$hei=$hei-7;
cpdf_set_font($pdf, "Arial", 8, "WinAnsiEncoding");
cpdf_text($pdf, "Pagina ".$contapagine, 520,15);
cpdf_end_text($pdf);

cpdf_finalize_page($pdf, $contapagine);
cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
//-----END Fine Pagina
View profile  Send private message
jjrjr1


Posts: 942
Posted: 11/02/2008, 1:26 PM

Hi Imrosa

Great Tip.

BTW if someone is implementing on shared servers and does not have access to the php.ini file to load the curl extention, Take a look at this item

http://ccselite.com/online_store.php?pid=4

This not only will allow you to protect your code if you implelement PHPShield, but with some modification will allow dynamic loading of php extentions on the fly.

Have fun. Can't wait to try your code.

Incidentally, here is some CCS code that will do exactly what you want.

http://ccselite.com/online_store.php?pid=24


_________________
John Real - More CodeCharge Studio Support at - http://CCSElite.com
View profile  Send private message
imroza

Posts: 21
Posted: 11/02/2008, 9:53 PM

This is a function to justify text:

function stringa_giustif($pdf,$h,$begtxt,$str,$tipocar, $dimecar,$endline,$delta) {
//$h: altezza riga (coordinata y)
//$begtxt: inizio scritta (coordinata x)
//$delta=13; interlinea
//$str: stinga da giustificare
//$endline=550; larghezza riga
//$tipocar="Times"; carattere da utilizzare
//$dimecar=10; Dimensione carattere

global $pdf;
global $h;
global $contapagine;

$endline1=$endline-7;

$totcar[]=0;
$line[]='';
$words = preg_split("/[\s]+/", $str, -1);
$r=0;
$larghezza=0;
cpdf_begin_text($pdf);
cpdf_set_font($pdf, $tipocar, $dimecar, "WinAnsiEncoding");

//Scrivo le righe con la seguente funzione (1. Conto le parole, 2. definisco lo spazio della riga)
for($i=0; $i < count($words); $i++) {
cpdf_set_char_spacing($pdf,0);
if (cpdf_stringwidth($pdf,$line[$r] . $words[$i] . ' ') < $endline1) {
$line[$r] .= $words[$i] . ' ';
}
else{
$h=$h-$delta;

//------BEGIN Salto Pagine
salto_pag($pdf,$h,$contapagine,$tipocar, $dimecar);
//------END Salto Pagine

$sp=0;
$as=0;
$numcar=strlen($line[$r]);
for($c=0; $c < $numcar; $c++) {
$stringa=substr($line[$r],$c ,1);
$as=$as+cpdf_stringwidth($pdf,$stringa);
$totcar[$r] = $as;
}
$larghezza=$endline1 - $totcar[$r];
$sp=$larghezza/$numcar;
cpdf_set_char_spacing($pdf,$sp);
cpdf_text($pdf, $line[$r], $begtxt,$h);
$r++;
$line[$r] = '';
$line[$r] .= $words[$i] . ' ';
}
}

//------BEGIN Salto Pagine
salto_pag($pdf,$h,$contapagine,$tipocar, $dimecar);
//------END Salto Pagine
if ($line[$r]<>' '){
$h=$h-$delta;
cpdf_text($pdf, $line[$r], $begtxt,$h);
cpdf_end_text($pdf);
//$h=$h-$delta;
}
}
View profile  Send private message
imroza

Posts: 21
Posted: 11/02/2008, 9:55 PM

And this is a function to create a table

function tab($SQL,$pdf,$h,$delta,$endline,$begtxt,$spessore,$lv1,$t1,$ct1v,$lv2,$t2,$ct2v,$lv3,$t3,$ct3v,$lv4,$t4,$ct4v,$lv5,$t5,$ct5v,$lv6,$t6,$ct6v,$lv7,$t7,$ct7v,$lv8,$t8,$ct8v,$lv9,$t9,$ct9v,$lv10,$t10,$ct10v,$contapagine,$tipocar, $dimecar,$BOX_Start,$BOX_End,$tipocarINT, $dimecarINT,$BOXINT_Start,$BOXINT_End,$diff,$nmt) {
global $h;
global $contapagine;
//Parametri di posizionamento
//$begtxt: start scrittura (generalmente $begtxt=10)
//$spessore: spessore linea (generalmente $spessore=0.5)
//$lv1/$t1: posizione box1 e relativa intestazione (es: $lv1=172; $t1="Test";)
//$lv2/$t2: posizione box2 e relativa intestazione
//$lv3/$t3: posizione box3 e relativa intestazione
//$lv4/$t4: posizione box4 e relativa intestazione
//$lv5/$t5: posizione box5 e relativa intestazione
//$lv6/$t6: posizione box6 e relativa intestazione
//$lv7/$t7: posizione box7 e relativa intestazione
//$lv8/$t8: posizione box8 e relativa intestazione
//$lv9/$t9: posizione box9 e relativa intestazione
//$lv10/$t10: posizione box10 e relativa intestazione


//Parametri della query
//$SQL: query (es: $SQL="select * FROM test WHERE id_esame=7506";)
//$ct1v: risultato 1 che va in prima posizione ($lv1) (es: $ct1v='id';)
//$ct2v: risultato 2 che va in II posizione ($lv2) (es: $ct2v="risultato";)
//$ct3v: risultato 3 che va in III posizione ($lv3)
//$ct4v: risultato 4 che va in IV posizione ($lv4)
//$ct5v: risultato 5 che va in V posizione ($lv5)
//$ct6v: risultato 6 che va in VI posizione ($lv6)
//$ct7v: risultato 7 che va in VII posizione ($lv7)
//$ct8v: risultato 8 che va in VIII posizione ($lv8)
//$ct9v: risultato 9 che va in IX posizione ($lv9)
//$ct10v: risultato 10 che va in X posizione ($lv10)
$dba = new clsDBInternetDB();
$dba->query($SQL);
$countrec=0;
while($dba->Next_Record()){
$countrec++;
}
$num_cifre=strlen($countrec);
$dbb = new clsDBInternetDB();
$dbb->query($SQL);
if ($dbb->Next_Record()){

//-----BEGIN Salto Pagine se siamo a fine pagine
$dimpedice=80; //Dimennsione Pedice (pie pagina circa 80)

if ($h<$dimpedice ){
//------BEGIN pedice
pedice($pdf,$contapagine);
//------END pedice
cpdf_finalize_page($pdf, $contapagine);
$contapagine++;
cpdf_page_init($pdf, $contapagine, 0, 843,597, 1.0);
//------BEGIN Intestazione
Intestazione($pdf);
//------END Intestazione
$h=735;
cpdf_set_font($pdf, $tipocarINT, $dimecarINT, "WinAnsiEncoding");
//-----END Salto Pagine se siamo a fine pagine
}

cpdf_begin_text($pdf);
cpdf_set_font($pdf, $tipocarINT, $dimecarINT, "WinAnsiEncoding");
$nmt1=0;
if ($nmt==1){
cpdf_text($pdf, "N.", $begtxt,$h-0.7);
$nmt1=10;
}
cpdf_text($pdf, $t1, $begtxt+$nmt1+$num_cifre*2*$nmt+2*$nmt,$h-0.7);
cpdf_text($pdf, $t2, $lv1,$h-0.7);
cpdf_text($pdf, $t3, $lv2,$h-0.7);
cpdf_text($pdf, $t4, $lv3,$h-0.7);
cpdf_text($pdf, $t5, $lv4,$h-0.7);
cpdf_text($pdf, $t6, $lv5,$h-0.7);
cpdf_text($pdf, $t7, $lv6,$h-0.7);
cpdf_text($pdf, $t8, $lv7,$h-0.7);
cpdf_text($pdf, $t9, $lv8,$h-0.7);
cpdf_text($pdf, $t10, $lv9,$h-0.7);
cpdf_end_text($pdf);
//linea orizzontale sopra
linea_orizzontale($pdf,$spessore,$h+$BOXINT_Start,$begtxt-2,$endline);
//linea orizzontale sotto
linea_orizzontale($pdf,$spessore,$h-$BOXINT_End,$begtxt-2,$endline);
//linee verticale
linea_verticale($pdf,$spessore,$begtxt-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
$nmt1=0;
if ($nmt==1){
$nmt1=10;
linea_verticale($pdf,$spessore,$begtxt+$nmt1+$num_cifre*2*$nmt,$h-$BOXINT_End-4,$h+$BOXINT_Start);
}
linea_verticale($pdf,$spessore,$lv1-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv2-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv3-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv4-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv5-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv6-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv4-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv8-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv9-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv10-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$endline,$h-$BOXINT_End-4,$h+$BOXINT_Start);
$h=$h-$BOXINT_End-$BOXINT_Start;
}
$dbc = new clsDBInternetDB();
$dbc->query($SQL);
//$cont_te=0;
while($dbc->Next_Record()){
$cont_te++;
$ct1 = $dbc->f($ct1v);
$ct2 = $dbc->f($ct2v);
$ct3 = $dbc->f($ct3v);
$ct4 = $dbc->f($ct4v);
$ct5 = $dbc->f($ct5v);
$ct6 = $dbc->f($ct6v);
$ct7 = $dbc->f($ct7v);
$ct8 = $dbc->f($ct8v);
$ct9 = $dbc->f($ct9v);
$ct10 = $dbc->f($ct10v);

cpdf_begin_text($pdf);
cpdf_set_font($pdf, $tipocar, $dimecar, "WinAnsiEncoding");
$nmt1=0;
if ($nmt==1){
cpdf_text($pdf, $cont_te, $begtxt,$h-$diff);
$nmt1=10;
}
cpdf_text($pdf, $ct1, $begtxt+$nmt1+$num_cifre*2*$nmt+2*$nmt,$h-$diff);
cpdf_text($pdf, $ct2, $lv1,$h-$diff);
cpdf_text($pdf, $ct3, $lv2,$h-$diff);
cpdf_text($pdf, $ct4, $lv3,$h-$diff);
cpdf_text($pdf, $ct5, $lv4,$h-$diff);
cpdf_text($pdf, $ct6, $lv5,$h-$diff);
cpdf_text($pdf, $ct7, $lv6,$h-$diff);
cpdf_text($pdf, $ct8, $lv7,$h-$diff);
cpdf_text($pdf, $ct9, $lv8,$h-$diff);
cpdf_text($pdf, $ct10, $lv9,$h-$diff);

cpdf_end_text($pdf);

//linea orizzontale chiusura
linea_orizzontale($pdf,$spessore,$h-$BOX_End,$begtxt-2,$endline);
//linee verticale
linea_verticale($pdf,$spessore,$begtxt-2,$h-$BOX_End,$h+$BOX_Start);
if ($nmt==1){
linea_verticale($pdf,$spessore,$begtxt+$nmt1+$num_cifre*2*$nmt,$h-$BOX_End,$h+$BOX_Start);
}
linea_verticale($pdf,$spessore,$lv1-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv2-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv3-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv4-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv5-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv6-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv7-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv8-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv9-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$lv10-2,$h-$BOX_End,$h+$BOX_Start);
linea_verticale($pdf,$spessore,$endline,$h-$BOX_End,$h+$BOX_Start);
$h=$h-$BOX_End-$BOX_Start;

//-----BEGIN Salto Pagina
//$dimpedice=80; //Dimennsione Pedice (pie pagina circa 80)
if ($h<$dimpedice ){
//------BEGIN pedice
pedice($pdf,$contapagine);
//------END pedice
cpdf_finalize_page($pdf, $contapagine);
$contapagine++;
cpdf_page_init($pdf, $contapagine, 0, 843,597, 1.0);
//------BEGIN Intestazione
Intestazione($pdf);
//------END Intestazione
$h=735;
//cpdf_set_font($pdf, $tipocar, $dimecar, "WinAnsiEncoding");
//Riscrivo intestazione tabella
if ($dbc->has_next_record()){
cpdf_begin_text($pdf);
cpdf_set_font($pdf, $tipocarINT, $dimecarINT, "WinAnsiEncoding");

$nmt1=0;
if ($nmt==1){
$nmt1=10;
cpdf_text($pdf, "N.", $begtxt,$h-0.7);
}
cpdf_text($pdf, $t1, $begtxt+$nmt1+$num_cifre*2*$nmt+2*$nmt,$h-0.7);
cpdf_text($pdf, $t2, $lv1,$h-0.7);
cpdf_text($pdf, $t3, $lv2,$h-0.7);
cpdf_text($pdf, $t4, $lv3,$h-0.7);
cpdf_text($pdf, $t5, $lv4,$h-0.7);
cpdf_text($pdf, $t6, $lv5,$h-0.7);
cpdf_text($pdf, $t7, $lv6,$h-0.7);
cpdf_text($pdf, $t8, $lv7,$h-0.7);
cpdf_text($pdf, $t9, $lv8,$h-0.7);
cpdf_text($pdf, $t10, $lv9,$h-0.7);
cpdf_end_text($pdf);
//linea orizzontale sopra
linea_orizzontale($pdf,$spessore,$h+$BOXINT_Start,$begtxt-2,$endline);
//linea orizzontale sotto
linea_orizzontale($pdf,$spessore,$h-$BOXINT_End,$begtxt-2,$endline);
//linee verticale

if ($nmt==1){
$nmt1=10;
linea_verticale($pdf,$spessore,$begtxt+$nmt1+$num_cifre*2*$nmt,$h-$BOXINT_End-4,$h+$BOXINT_Start);
}
linea_verticale($pdf,$spessore,$begtxt-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv1-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv2-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv3-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv4-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv5-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv6-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv4-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv8-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv9-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$lv10-2,$h-$BOXINT_End-4,$h+$BOXINT_Start);
linea_verticale($pdf,$spessore,$endline,$h-$BOXINT_End-4,$h+$BOXINT_Start);
$h=$h-$BOXINT_End-$BOXINT_Start;
}
//-----BEGIN Salto Pagina

}
}
//$db->close();
}
View profile  Send private message
mamboBROWN


Posts: 1713
Posted: 11/03/2008, 2:53 PM

imroza,
Could you please add [TIP] to the title of this thread. You might want to also post this tip in the Tips & Solutions forum for others to find as well. Thanks
View profile  Send private message
dellamir


Posts: 6
Posted: 11/03/2008, 11:43 PM

dear imroza,

plz help me on how to make the php out put in pdf file,

i use html2pdf open source.
View profile  Send private message

Add new topic Subscribe to topic   


These are Community Forums for users to exchange information.
If you would like to obtain technical product help please visit http://support.yessoftware.com.

Internet Database

Visually create Web enabled database applications in minutes.
CodeCharge.com

Home   |    Search   |    Members   |    Register   |    Login


Powered by UltraApps Forum created with CodeCharge Studio
Copyright © 2003-2004 by UltraApps.com  and YesSoftware, Inc.