From d95dc1fbf8c75304b018fb1bc2b1650969b4a59e Mon Sep 17 00:00:00 2001 From: root Date: Thu, 9 Nov 2017 17:45:14 +0100 Subject: [PATCH] =?UTF-8?q?versi=C3=B3n=20v1.2=20a=20falta=20de=20testeo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crear_pdf_o6h.php | 139 ++ fpdf/font/courier.php | 10 + fpdf/font/courierb.php | 10 + fpdf/font/courierbi.php | 10 + fpdf/font/courieri.php | 10 + fpdf/font/helvetica.php | 21 + fpdf/font/helveticab.php | 21 + fpdf/font/helveticabi.php | 21 + fpdf/font/helveticai.php | 21 + fpdf/font/symbol.php | 20 + fpdf/font/times.php | 21 + fpdf/font/timesb.php | 21 + fpdf/font/timesbi.php | 21 + fpdf/font/timesi.php | 21 + fpdf/font/zapfdingbats.php | 20 + fpdf/fpdf.css | 21 + fpdf/fpdf.php | 1899 ++++++++++++++++++++++++++++ fpdf/pdf_o6h.php | 119 ++ imagen/open6-logo.png | Bin 0 -> 13918 bytes lib/lang/en_new_service_webdns.lng | 1 + lib/lang/es_new_service_webdns.lng | 1 + new_service_webdns.php | 356 ++++-- new_service_webdnsOLD.php | 361 ------ pdf_o6h.php | 149 +++ 24 files changed, 2813 insertions(+), 481 deletions(-) create mode 100755 crear_pdf_o6h.php create mode 100755 fpdf/font/courier.php create mode 100755 fpdf/font/courierb.php create mode 100755 fpdf/font/courierbi.php create mode 100755 fpdf/font/courieri.php create mode 100755 fpdf/font/helvetica.php create mode 100755 fpdf/font/helveticab.php create mode 100755 fpdf/font/helveticabi.php create mode 100755 fpdf/font/helveticai.php create mode 100755 fpdf/font/symbol.php create mode 100755 fpdf/font/times.php create mode 100755 fpdf/font/timesb.php create mode 100755 fpdf/font/timesbi.php create mode 100755 fpdf/font/timesi.php create mode 100755 fpdf/font/zapfdingbats.php create mode 100755 fpdf/fpdf.css create mode 100755 fpdf/fpdf.php create mode 100755 fpdf/pdf_o6h.php create mode 100644 imagen/open6-logo.png delete mode 100755 new_service_webdnsOLD.php create mode 100755 pdf_o6h.php diff --git a/crear_pdf_o6h.php b/crear_pdf_o6h.php new file mode 100755 index 0000000..6f23f4e --- /dev/null +++ b/crear_pdf_o6h.php @@ -0,0 +1,139 @@ +/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); + foreach($a as $i=>$e) + { + if($i%2==0) + { + // Text + if($this->HREF) + $this->PutLink($this->HREF,$e); + else + $this->Write(5,$e); + } + else + { + // Etiqueta + if($e[0]=='/') + $this->CloseTag(strtoupper(substr($e,1))); + else + { + // Extraer atributos + $a2 = explode(' ',$e); + $tag = strtoupper(array_shift($a2)); + $attr = array(); + foreach($a2 as $v) + { + if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3)) + $attr[strtoupper($a3[1])] = $a3[2]; + } + $this->OpenTag($tag,$attr); + } + } + } +} + +function OpenTag($tag, $attr) +{ + // Etiqueta de apertura + if($tag=='B' || $tag=='I' || $tag=='U') + $this->SetStyle($tag,true); + if($tag=='A') + $this->HREF = $attr['HREF']; + if($tag=='BR') + $this->Ln(5); +} + +function CloseTag($tag) +{ + // Etiqueta de cierre + if($tag=='B' || $tag=='I' || $tag=='U') + $this->SetStyle($tag,false); + if($tag=='A') + $this->HREF = ''; +} + +function SetStyle($tag, $enable) +{ + // Modificar estilo y escoger la fuente correspondiente + $this->$tag += ($enable ? 1 : -1); + $style = ''; + foreach(array('B', 'I', 'U') as $s) + { + if($this->$s>0) + $style .= $s; + } + $this->SetFont('',$style); +} + +function PutLink($URL, $txt) +{ + // Escribir un hiper-enlace + $this->SetTextColor(0,0,255); + $this->SetStyle('U',true); + $this->Write(5,$txt,$URL); + $this->SetStyle('U',false); + $this->SetTextColor(0); +} +} + +/*if($_POST['id']){ + //$app->tform->errorMessage = 'DUMMY'; + //$app->tpl->setVar($this->dataRecord); + //$this->onShow(); + //return; + echo 'dentro de crear pdf'; + }*/ +/*$info=$_POST['crear_pdf']; +echo 'La info '.$info; +if($_POST['crear_pdf']) +{ + echo 'dentro'; + $info=$_POST['crear_pdf']; +}*/ + +$name = $_POST['name']; +$info = $_POST['pdf_power2']; +//$info=$_GET['datos_pdf']; +$enlace = '
www.open6hosting.com'; + +$pdf = new PDFO6H(); +// Primera página +$pdf->AddPage(); +$pdf->SetFont('Arial','',20); +//$pdf->Write(5,'Para saber qué hay de nuevo en este tutorial, pulse '); +$pdf->SetFont('','U'); +//$link = $pdf->AddLink(); +//$pdf->Write(5,'aquí',$link); +$pdf->SetFont(''); +// Segunda página +//$pdf->AddPage(); +$pdf->SetLink($link); +$pdf->Image('imagen/open6-logo.png',10,12,50,0,'','http://www.open6hosting.com'); +$pdf->SetLeftMargin(65); +$pdf->SetFontSize(12); +$pdf->WriteHTML($name); +$pdf->WriteHTML($info); +$pdf->WriteHTML($enlace); +$pdf->Output(); + +echo 'Aqui ando'; + +//header('Location: http://www.open6hosting.com'); +?> + diff --git a/fpdf/font/courier.php b/fpdf/font/courier.php new file mode 100755 index 0000000..67dbeda --- /dev/null +++ b/fpdf/font/courier.php @@ -0,0 +1,10 @@ +array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/courierb.php b/fpdf/font/courierb.php new file mode 100755 index 0000000..62550a4 --- /dev/null +++ b/fpdf/font/courierb.php @@ -0,0 +1,10 @@ +array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/courierbi.php b/fpdf/font/courierbi.php new file mode 100755 index 0000000..6a3ecc6 --- /dev/null +++ b/fpdf/font/courierbi.php @@ -0,0 +1,10 @@ +array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/courieri.php b/fpdf/font/courieri.php new file mode 100755 index 0000000..b88e098 --- /dev/null +++ b/fpdf/font/courieri.php @@ -0,0 +1,10 @@ +array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/helvetica.php b/fpdf/font/helvetica.php new file mode 100755 index 0000000..2be3eca --- /dev/null +++ b/fpdf/font/helvetica.php @@ -0,0 +1,21 @@ +278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, + chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, + ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, + 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, + 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, + 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, + chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, + chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, + chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, + chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, + chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/helveticab.php b/fpdf/font/helveticab.php new file mode 100755 index 0000000..c88394c --- /dev/null +++ b/fpdf/font/helveticab.php @@ -0,0 +1,21 @@ +278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, + chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, + ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, + 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, + 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, + 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, + chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, + chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, + chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, + chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, + chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/helveticabi.php b/fpdf/font/helveticabi.php new file mode 100755 index 0000000..bcea807 --- /dev/null +++ b/fpdf/font/helveticabi.php @@ -0,0 +1,21 @@ +278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, + chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, + ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, + 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, + 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, + 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, + chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, + chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, + chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, + chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, + chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/helveticai.php b/fpdf/font/helveticai.php new file mode 100755 index 0000000..a328b04 --- /dev/null +++ b/fpdf/font/helveticai.php @@ -0,0 +1,21 @@ +278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, + chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, + ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, + 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, + 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, + 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, + chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, + chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, + chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, + chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, + chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/symbol.php b/fpdf/font/symbol.php new file mode 100755 index 0000000..5b9147b --- /dev/null +++ b/fpdf/font/symbol.php @@ -0,0 +1,20 @@ +250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, + chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549, + ','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722, + 'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768, + 'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576, + 'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0, + chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, + chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603, + chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768, + chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042, + chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329, + chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0); +$uv = array(32=>160,33=>33,34=>8704,35=>35,36=>8707,37=>array(37,2),39=>8715,40=>array(40,2),42=>8727,43=>array(43,2),45=>8722,46=>array(46,18),64=>8773,65=>array(913,2),67=>935,68=>array(916,2),70=>934,71=>915,72=>919,73=>921,74=>977,75=>array(922,4),79=>array(927,2),81=>920,82=>929,83=>array(931,3),86=>962,87=>937,88=>926,89=>936,90=>918,91=>91,92=>8756,93=>93,94=>8869,95=>95,96=>63717,97=>array(945,2),99=>967,100=>array(948,2),102=>966,103=>947,104=>951,105=>953,106=>981,107=>array(954,4),111=>array(959,2),113=>952,114=>961,115=>array(963,3),118=>982,119=>969,120=>958,121=>968,122=>950,123=>array(123,3),126=>8764,160=>8364,161=>978,162=>8242,163=>8804,164=>8725,165=>8734,166=>402,167=>9827,168=>9830,169=>9829,170=>9824,171=>8596,172=>array(8592,4),176=>array(176,2),178=>8243,179=>8805,180=>215,181=>8733,182=>8706,183=>8226,184=>247,185=>array(8800,2),187=>8776,188=>8230,189=>array(63718,2),191=>8629,192=>8501,193=>8465,194=>8476,195=>8472,196=>8855,197=>8853,198=>8709,199=>array(8745,2),201=>8835,202=>8839,203=>8836,204=>8834,205=>8838,206=>array(8712,2),208=>8736,209=>8711,210=>63194,211=>63193,212=>63195,213=>8719,214=>8730,215=>8901,216=>172,217=>array(8743,2),219=>8660,220=>array(8656,4),224=>9674,225=>9001,226=>array(63720,3),229=>8721,230=>array(63723,10),241=>9002,242=>8747,243=>8992,244=>63733,245=>8993,246=>array(63734,9)); +?> diff --git a/fpdf/font/times.php b/fpdf/font/times.php new file mode 100755 index 0000000..f78850f --- /dev/null +++ b/fpdf/font/times.php @@ -0,0 +1,21 @@ +250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, + chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564, + ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722, + 'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944, + 'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, + 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, + chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980, + chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333, + chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, + chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, + chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/timesb.php b/fpdf/font/timesb.php new file mode 100755 index 0000000..0516750 --- /dev/null +++ b/fpdf/font/timesb.php @@ -0,0 +1,21 @@ +250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, + chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, + ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722, + 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000, + 'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833, + 'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, + chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, + chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333, + chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, + chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, + chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/timesbi.php b/fpdf/font/timesbi.php new file mode 100755 index 0000000..32fe25e --- /dev/null +++ b/fpdf/font/timesbi.php @@ -0,0 +1,21 @@ +250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, + chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, + ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667, + 'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889, + 'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, + 'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, + chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, + chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333, + chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, + chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, + chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/timesi.php b/fpdf/font/timesi.php new file mode 100755 index 0000000..b0e5a62 --- /dev/null +++ b/fpdf/font/timesi.php @@ -0,0 +1,21 @@ +250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, + chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675, + ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611, + 'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833, + 'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722, + 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, + chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980, + chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333, + chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611, + chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, + chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, + chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444); +$enc = 'cp1252'; +$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); +?> diff --git a/fpdf/font/zapfdingbats.php b/fpdf/font/zapfdingbats.php new file mode 100755 index 0000000..b9d0309 --- /dev/null +++ b/fpdf/font/zapfdingbats.php @@ -0,0 +1,20 @@ +0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0, + chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939, + ','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692, + 'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776, + 'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873, + 'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317, + chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, + chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788, + chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788, + chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918, + chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874, + chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0); +$uv = array(32=>32,33=>array(9985,4),37=>9742,38=>array(9990,4),42=>9755,43=>9758,44=>array(9996,28),72=>9733,73=>array(10025,35),108=>9679,109=>10061,110=>9632,111=>array(10063,4),115=>9650,116=>9660,117=>9670,118=>10070,119=>9687,120=>array(10072,7),128=>array(10088,14),161=>array(10081,7),168=>9827,169=>9830,170=>9829,171=>9824,172=>array(9312,10),182=>array(10102,31),213=>8594,214=>array(8596,2),216=>array(10136,24),241=>array(10161,14)); +?> diff --git a/fpdf/fpdf.css b/fpdf/fpdf.css new file mode 100755 index 0000000..dd2c540 --- /dev/null +++ b/fpdf/fpdf.css @@ -0,0 +1,21 @@ +body {font-family:"Times New Roman",serif} +h1 {font:bold 135% Arial,sans-serif; color:#4000A0; margin-bottom:0.9em} +h2 {font:bold 95% Arial,sans-serif; color:#900000; margin-top:1.5em; margin-bottom:1em} +dl.param dt {text-decoration:underline} +dl.param dd {margin-top:1em; margin-bottom:1em} +dl.param ul {margin-top:1em; margin-bottom:1em} +tt, code, kbd {font-family:"Courier New",Courier,monospace; font-size:82%} +div.source {margin-top:1.4em; margin-bottom:1.3em} +div.source pre {display:table; border:1px solid #24246A; width:100%; margin:0em; font-family:inherit; font-size:100%} +div.source code {display:block; border:1px solid #C5C5EC; background-color:#F0F5FF; padding:6px; color:#000000} +div.doc-source {margin-top:1.4em; margin-bottom:1.3em} +div.doc-source pre {display:table; width:100%; margin:0em; font-family:inherit; font-size:100%} +div.doc-source code {display:block; background-color:#E0E0E0; padding:4px} +.kw {color:#000080; font-weight:bold} +.str {color:#CC0000} +.cmt {color:#008000} +p.demo {text-align:center; margin-top:-0.9em} +a.demo {text-decoration:none; font-weight:bold; color:#0000CC} +a.demo:link {text-decoration:none; font-weight:bold; color:#0000CC} +a.demo:hover {text-decoration:none; font-weight:bold; color:#0000FF} +a.demo:active {text-decoration:none; font-weight:bold; color:#0000FF} diff --git a/fpdf/fpdf.php b/fpdf/fpdf.php new file mode 100755 index 0000000..92d7532 --- /dev/null +++ b/fpdf/fpdf.php @@ -0,0 +1,1899 @@ +_dochecks(); + // Initialization of properties + $this->state = 0; + $this->page = 0; + $this->n = 2; + $this->buffer = ''; + $this->pages = array(); + $this->PageInfo = array(); + $this->fonts = array(); + $this->FontFiles = array(); + $this->encodings = array(); + $this->cmaps = array(); + $this->images = array(); + $this->links = array(); + $this->InHeader = false; + $this->InFooter = false; + $this->lasth = 0; + $this->FontFamily = ''; + $this->FontStyle = ''; + $this->FontSizePt = 12; + $this->underline = false; + $this->DrawColor = '0 G'; + $this->FillColor = '0 g'; + $this->TextColor = '0 g'; + $this->ColorFlag = false; + $this->WithAlpha = false; + $this->ws = 0; + // Font path + if(defined('FPDF_FONTPATH')) + { + $this->fontpath = FPDF_FONTPATH; + if(substr($this->fontpath,-1)!='/' && substr($this->fontpath,-1)!='\\') + $this->fontpath .= '/'; + } + elseif(is_dir(dirname(__FILE__).'/font')) + $this->fontpath = dirname(__FILE__).'/font/'; + else + $this->fontpath = ''; + // Core fonts + $this->CoreFonts = array('courier', 'helvetica', 'times', 'symbol', 'zapfdingbats'); + // Scale factor + if($unit=='pt') + $this->k = 1; + elseif($unit=='mm') + $this->k = 72/25.4; + elseif($unit=='cm') + $this->k = 72/2.54; + elseif($unit=='in') + $this->k = 72; + else + $this->Error('Incorrect unit: '.$unit); + // Page sizes + $this->StdPageSizes = array('a3'=>array(841.89,1190.55), 'a4'=>array(595.28,841.89), 'a5'=>array(420.94,595.28), + 'letter'=>array(612,792), 'legal'=>array(612,1008)); + $size = $this->_getpagesize($size); + $this->DefPageSize = $size; + $this->CurPageSize = $size; + // Page orientation + $orientation = strtolower($orientation); + if($orientation=='p' || $orientation=='portrait') + { + $this->DefOrientation = 'P'; + $this->w = $size[0]; + $this->h = $size[1]; + } + elseif($orientation=='l' || $orientation=='landscape') + { + $this->DefOrientation = 'L'; + $this->w = $size[1]; + $this->h = $size[0]; + } + else + $this->Error('Incorrect orientation: '.$orientation); + $this->CurOrientation = $this->DefOrientation; + $this->wPt = $this->w*$this->k; + $this->hPt = $this->h*$this->k; + // Page rotation + $this->CurRotation = 0; + // Page margins (1 cm) + $margin = 28.35/$this->k; + $this->SetMargins($margin,$margin); + // Interior cell margin (1 mm) + $this->cMargin = $margin/10; + // Line width (0.2 mm) + $this->LineWidth = .567/$this->k; + // Automatic page break + $this->SetAutoPageBreak(true,2*$margin); + // Default display mode + $this->SetDisplayMode('default'); + // Enable compression + $this->SetCompression(true); + // Set default PDF version number + $this->PDFVersion = '1.3'; +} + +function SetMargins($left, $top, $right=null) +{ + // Set left, top and right margins + $this->lMargin = $left; + $this->tMargin = $top; + if($right===null) + $right = $left; + $this->rMargin = $right; +} + +function SetLeftMargin($margin) +{ + // Set left margin + $this->lMargin = $margin; + if($this->page>0 && $this->x<$margin) + $this->x = $margin; +} + +function SetTopMargin($margin) +{ + // Set top margin + $this->tMargin = $margin; +} + +function SetRightMargin($margin) +{ + // Set right margin + $this->rMargin = $margin; +} + +function SetAutoPageBreak($auto, $margin=0) +{ + // Set auto page break mode and triggering margin + $this->AutoPageBreak = $auto; + $this->bMargin = $margin; + $this->PageBreakTrigger = $this->h-$margin; +} + +function SetDisplayMode($zoom, $layout='default') +{ + // Set display mode in viewer + if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom)) + $this->ZoomMode = $zoom; + else + $this->Error('Incorrect zoom display mode: '.$zoom); + if($layout=='single' || $layout=='continuous' || $layout=='two' || $layout=='default') + $this->LayoutMode = $layout; + else + $this->Error('Incorrect layout display mode: '.$layout); +} + +function SetCompression($compress) +{ + // Set page compression + if(function_exists('gzcompress')) + $this->compress = $compress; + else + $this->compress = false; +} + +function SetTitle($title, $isUTF8=false) +{ + // Title of document + $this->metadata['Title'] = $isUTF8 ? $title : utf8_encode($title); +} + +function SetAuthor($author, $isUTF8=false) +{ + // Author of document + $this->metadata['Author'] = $isUTF8 ? $author : utf8_encode($author); +} + +function SetSubject($subject, $isUTF8=false) +{ + // Subject of document + $this->metadata['Subject'] = $isUTF8 ? $subject : utf8_encode($subject); +} + +function SetKeywords($keywords, $isUTF8=false) +{ + // Keywords of document + $this->metadata['Keywords'] = $isUTF8 ? $keywords : utf8_encode($keywords); +} + +function SetCreator($creator, $isUTF8=false) +{ + // Creator of document + $this->metadata['Creator'] = $isUTF8 ? $creator : utf8_encode($creator); +} + +function AliasNbPages($alias='{nb}') +{ + // Define an alias for total number of pages + $this->AliasNbPages = $alias; +} + +function Error($msg) +{ + // Fatal error + throw new Exception('FPDF error: '.$msg); +} + +function Close() +{ + // Terminate document + if($this->state==3) + return; + if($this->page==0) + $this->AddPage(); + // Page footer + $this->InFooter = true; + $this->Footer(); + $this->InFooter = false; + // Close page + $this->_endpage(); + // Close document + $this->_enddoc(); +} + +function AddPage($orientation='', $size='', $rotation=0) +{ + // Start a new page + if($this->state==3) + $this->Error('The document is closed'); + $family = $this->FontFamily; + $style = $this->FontStyle.($this->underline ? 'U' : ''); + $fontsize = $this->FontSizePt; + $lw = $this->LineWidth; + $dc = $this->DrawColor; + $fc = $this->FillColor; + $tc = $this->TextColor; + $cf = $this->ColorFlag; + if($this->page>0) + { + // Page footer + $this->InFooter = true; + $this->Footer(); + $this->InFooter = false; + // Close page + $this->_endpage(); + } + // Start new page + $this->_beginpage($orientation,$size,$rotation); + // Set line cap style to square + $this->_out('2 J'); + // Set line width + $this->LineWidth = $lw; + $this->_out(sprintf('%.2F w',$lw*$this->k)); + // Set font + if($family) + $this->SetFont($family,$style,$fontsize); + // Set colors + $this->DrawColor = $dc; + if($dc!='0 G') + $this->_out($dc); + $this->FillColor = $fc; + if($fc!='0 g') + $this->_out($fc); + $this->TextColor = $tc; + $this->ColorFlag = $cf; + // Page header + $this->InHeader = true; + $this->Header(); + $this->InHeader = false; + // Restore line width + if($this->LineWidth!=$lw) + { + $this->LineWidth = $lw; + $this->_out(sprintf('%.2F w',$lw*$this->k)); + } + // Restore font + if($family) + $this->SetFont($family,$style,$fontsize); + // Restore colors + if($this->DrawColor!=$dc) + { + $this->DrawColor = $dc; + $this->_out($dc); + } + if($this->FillColor!=$fc) + { + $this->FillColor = $fc; + $this->_out($fc); + } + $this->TextColor = $tc; + $this->ColorFlag = $cf; +} + +function Header() +{ + // To be implemented in your own inherited class +} + +function Footer() +{ + // To be implemented in your own inherited class +} + +function PageNo() +{ + // Get current page number + return $this->page; +} + +function SetDrawColor($r, $g=null, $b=null) +{ + // Set color for all stroking operations + if(($r==0 && $g==0 && $b==0) || $g===null) + $this->DrawColor = sprintf('%.3F G',$r/255); + else + $this->DrawColor = sprintf('%.3F %.3F %.3F RG',$r/255,$g/255,$b/255); + if($this->page>0) + $this->_out($this->DrawColor); +} + +function SetFillColor($r, $g=null, $b=null) +{ + // Set color for all filling operations + if(($r==0 && $g==0 && $b==0) || $g===null) + $this->FillColor = sprintf('%.3F g',$r/255); + else + $this->FillColor = sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255); + $this->ColorFlag = ($this->FillColor!=$this->TextColor); + if($this->page>0) + $this->_out($this->FillColor); +} + +function SetTextColor($r, $g=null, $b=null) +{ + // Set color for text + if(($r==0 && $g==0 && $b==0) || $g===null) + $this->TextColor = sprintf('%.3F g',$r/255); + else + $this->TextColor = sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255); + $this->ColorFlag = ($this->FillColor!=$this->TextColor); +} + +function GetStringWidth($s) +{ + // Get width of a string in the current font + $s = (string)$s; + $cw = &$this->CurrentFont['cw']; + $w = 0; + $l = strlen($s); + for($i=0;$i<$l;$i++) + $w += $cw[$s[$i]]; + return $w*$this->FontSize/1000; +} + +function SetLineWidth($width) +{ + // Set line width + $this->LineWidth = $width; + if($this->page>0) + $this->_out(sprintf('%.2F w',$width*$this->k)); +} + +function Line($x1, $y1, $x2, $y2) +{ + // Draw a line + $this->_out(sprintf('%.2F %.2F m %.2F %.2F l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k)); +} + +function Rect($x, $y, $w, $h, $style='') +{ + // Draw a rectangle + if($style=='F') + $op = 'f'; + elseif($style=='FD' || $style=='DF') + $op = 'B'; + else + $op = 'S'; + $this->_out(sprintf('%.2F %.2F %.2F %.2F re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op)); +} + +function AddFont($family, $style='', $file='') +{ + // Add a TrueType, OpenType or Type1 font + $family = strtolower($family); + if($file=='') + $file = str_replace(' ','',$family).strtolower($style).'.php'; + $style = strtoupper($style); + if($style=='IB') + $style = 'BI'; + $fontkey = $family.$style; + if(isset($this->fonts[$fontkey])) + return; + $info = $this->_loadfont($file); + $info['i'] = count($this->fonts)+1; + if(!empty($info['file'])) + { + // Embedded font + if($info['type']=='TrueType') + $this->FontFiles[$info['file']] = array('length1'=>$info['originalsize']); + else + $this->FontFiles[$info['file']] = array('length1'=>$info['size1'], 'length2'=>$info['size2']); + } + $this->fonts[$fontkey] = $info; +} + +function SetFont($family, $style='', $size=0) +{ + // Select a font; size given in points + if($family=='') + $family = $this->FontFamily; + else + $family = strtolower($family); + $style = strtoupper($style); + if(strpos($style,'U')!==false) + { + $this->underline = true; + $style = str_replace('U','',$style); + } + else + $this->underline = false; + if($style=='IB') + $style = 'BI'; + if($size==0) + $size = $this->FontSizePt; + // Test if font is already selected + if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size) + return; + // Test if font is already loaded + $fontkey = $family.$style; + if(!isset($this->fonts[$fontkey])) + { + // Test if one of the core fonts + if($family=='arial') + $family = 'helvetica'; + if(in_array($family,$this->CoreFonts)) + { + if($family=='symbol' || $family=='zapfdingbats') + $style = ''; + $fontkey = $family.$style; + if(!isset($this->fonts[$fontkey])) + $this->AddFont($family,$style); + } + else + $this->Error('Undefined font: '.$family.' '.$style); + } + // Select it + $this->FontFamily = $family; + $this->FontStyle = $style; + $this->FontSizePt = $size; + $this->FontSize = $size/$this->k; + $this->CurrentFont = &$this->fonts[$fontkey]; + if($this->page>0) + $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); +} + +function SetFontSize($size) +{ + // Set font size in points + if($this->FontSizePt==$size) + return; + $this->FontSizePt = $size; + $this->FontSize = $size/$this->k; + if($this->page>0) + $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); +} + +function AddLink() +{ + // Create a new internal link + $n = count($this->links)+1; + $this->links[$n] = array(0, 0); + return $n; +} + +function SetLink($link, $y=0, $page=-1) +{ + // Set destination of internal link + if($y==-1) + $y = $this->y; + if($page==-1) + $page = $this->page; + $this->links[$link] = array($page, $y); +} + +function Link($x, $y, $w, $h, $link) +{ + // Put a link on the page + $this->PageLinks[$this->page][] = array($x*$this->k, $this->hPt-$y*$this->k, $w*$this->k, $h*$this->k, $link); +} + +function Text($x, $y, $txt) +{ + // Output a string + if(!isset($this->CurrentFont)) + $this->Error('No font has been set'); + $s = sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); + if($this->underline && $txt!='') + $s .= ' '.$this->_dounderline($x,$y,$txt); + if($this->ColorFlag) + $s = 'q '.$this->TextColor.' '.$s.' Q'; + $this->_out($s); +} + +function AcceptPageBreak() +{ + // Accept automatic page break or not + return $this->AutoPageBreak; +} + +function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='') +{ + // Output a cell + $k = $this->k; + if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak()) + { + // Automatic page break + $x = $this->x; + $ws = $this->ws; + if($ws>0) + { + $this->ws = 0; + $this->_out('0 Tw'); + } + $this->AddPage($this->CurOrientation,$this->CurPageSize,$this->CurRotation); + $this->x = $x; + if($ws>0) + { + $this->ws = $ws; + $this->_out(sprintf('%.3F Tw',$ws*$k)); + } + } + if($w==0) + $w = $this->w-$this->rMargin-$this->x; + $s = ''; + if($fill || $border==1) + { + if($fill) + $op = ($border==1) ? 'B' : 'f'; + else + $op = 'S'; + $s = sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op); + } + if(is_string($border)) + { + $x = $this->x; + $y = $this->y; + if(strpos($border,'L')!==false) + $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k); + if(strpos($border,'T')!==false) + $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k); + if(strpos($border,'R')!==false) + $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k); + if(strpos($border,'B')!==false) + $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k); + } + if($txt!=='') + { + if(!isset($this->CurrentFont)) + $this->Error('No font has been set'); + if($align=='R') + $dx = $w-$this->cMargin-$this->GetStringWidth($txt); + elseif($align=='C') + $dx = ($w-$this->GetStringWidth($txt))/2; + else + $dx = $this->cMargin; + if($this->ColorFlag) + $s .= 'q '.$this->TextColor.' '; + $s .= sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$this->_escape($txt)); + if($this->underline) + $s .= ' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt); + if($this->ColorFlag) + $s .= ' Q'; + if($link) + $this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link); + } + if($s) + $this->_out($s); + $this->lasth = $h; + if($ln>0) + { + // Go to next line + $this->y += $h; + if($ln==1) + $this->x = $this->lMargin; + } + else + $this->x += $w; +} + +function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false) +{ + // Output text with automatic or explicit line breaks + if(!isset($this->CurrentFont)) + $this->Error('No font has been set'); + $cw = &$this->CurrentFont['cw']; + if($w==0) + $w = $this->w-$this->rMargin-$this->x; + $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; + $s = str_replace("\r",'',$txt); + $nb = strlen($s); + if($nb>0 && $s[$nb-1]=="\n") + $nb--; + $b = 0; + if($border) + { + if($border==1) + { + $border = 'LTRB'; + $b = 'LRT'; + $b2 = 'LR'; + } + else + { + $b2 = ''; + if(strpos($border,'L')!==false) + $b2 .= 'L'; + if(strpos($border,'R')!==false) + $b2 .= 'R'; + $b = (strpos($border,'T')!==false) ? $b2.'T' : $b2; + } + } + $sep = -1; + $i = 0; + $j = 0; + $l = 0; + $ns = 0; + $nl = 1; + while($i<$nb) + { + // Get next character + $c = $s[$i]; + if($c=="\n") + { + // Explicit line break + if($this->ws>0) + { + $this->ws = 0; + $this->_out('0 Tw'); + } + $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); + $i++; + $sep = -1; + $j = $i; + $l = 0; + $ns = 0; + $nl++; + if($border && $nl==2) + $b = $b2; + continue; + } + if($c==' ') + { + $sep = $i; + $ls = $l; + $ns++; + } + $l += $cw[$c]; + if($l>$wmax) + { + // Automatic line break + if($sep==-1) + { + if($i==$j) + $i++; + if($this->ws>0) + { + $this->ws = 0; + $this->_out('0 Tw'); + } + $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); + } + else + { + if($align=='J') + { + $this->ws = ($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0; + $this->_out(sprintf('%.3F Tw',$this->ws*$this->k)); + } + $this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill); + $i = $sep+1; + } + $sep = -1; + $j = $i; + $l = 0; + $ns = 0; + $nl++; + if($border && $nl==2) + $b = $b2; + } + else + $i++; + } + // Last chunk + if($this->ws>0) + { + $this->ws = 0; + $this->_out('0 Tw'); + } + if($border && strpos($border,'B')!==false) + $b .= 'B'; + $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); + $this->x = $this->lMargin; +} + +function Write($h, $txt, $link='') +{ + // Output text in flowing mode + if(!isset($this->CurrentFont)) + $this->Error('No font has been set'); + $cw = &$this->CurrentFont['cw']; + $w = $this->w-$this->rMargin-$this->x; + $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; + $s = str_replace("\r",'',$txt); + $nb = strlen($s); + $sep = -1; + $i = 0; + $j = 0; + $l = 0; + $nl = 1; + while($i<$nb) + { + // Get next character + $c = $s[$i]; + if($c=="\n") + { + // Explicit line break + $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',false,$link); + $i++; + $sep = -1; + $j = $i; + $l = 0; + if($nl==1) + { + $this->x = $this->lMargin; + $w = $this->w-$this->rMargin-$this->x; + $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; + } + $nl++; + continue; + } + if($c==' ') + $sep = $i; + $l += $cw[$c]; + if($l>$wmax) + { + // Automatic line break + if($sep==-1) + { + if($this->x>$this->lMargin) + { + // Move to next line + $this->x = $this->lMargin; + $this->y += $h; + $w = $this->w-$this->rMargin-$this->x; + $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; + $i++; + $nl++; + continue; + } + if($i==$j) + $i++; + $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',false,$link); + } + else + { + $this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',false,$link); + $i = $sep+1; + } + $sep = -1; + $j = $i; + $l = 0; + if($nl==1) + { + $this->x = $this->lMargin; + $w = $this->w-$this->rMargin-$this->x; + $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; + } + $nl++; + } + else + $i++; + } + // Last chunk + if($i!=$j) + $this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',false,$link); +} + +function Ln($h=null) +{ + // Line feed; default value is the last cell height + $this->x = $this->lMargin; + if($h===null) + $this->y += $this->lasth; + else + $this->y += $h; +} + +function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='') +{ + // Put an image on the page + if($file=='') + $this->Error('Image file name is empty'); + if(!isset($this->images[$file])) + { + // First use of this image, get info + if($type=='') + { + $pos = strrpos($file,'.'); + if(!$pos) + $this->Error('Image file has no extension and no type was specified: '.$file); + $type = substr($file,$pos+1); + } + $type = strtolower($type); + if($type=='jpeg') + $type = 'jpg'; + $mtd = '_parse'.$type; + if(!method_exists($this,$mtd)) + $this->Error('Unsupported image type: '.$type); + $info = $this->$mtd($file); + $info['i'] = count($this->images)+1; + $this->images[$file] = $info; + } + else + $info = $this->images[$file]; + + // Automatic width and height calculation if needed + if($w==0 && $h==0) + { + // Put image at 96 dpi + $w = -96; + $h = -96; + } + if($w<0) + $w = -$info['w']*72/$w/$this->k; + if($h<0) + $h = -$info['h']*72/$h/$this->k; + if($w==0) + $w = $h*$info['w']/$info['h']; + if($h==0) + $h = $w*$info['h']/$info['w']; + + // Flowing mode + if($y===null) + { + if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak()) + { + // Automatic page break + $x2 = $this->x; + $this->AddPage($this->CurOrientation,$this->CurPageSize,$this->CurRotation); + $this->x = $x2; + } + $y = $this->y; + $this->y += $h; + } + + if($x===null) + $x = $this->x; + $this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i'])); + if($link) + $this->Link($x,$y,$w,$h,$link); +} + +function GetPageWidth() +{ + // Get current page width + return $this->w; +} + +function GetPageHeight() +{ + // Get current page height + return $this->h; +} + +function GetX() +{ + // Get x position + return $this->x; +} + +function SetX($x) +{ + // Set x position + if($x>=0) + $this->x = $x; + else + $this->x = $this->w+$x; +} + +function GetY() +{ + // Get y position + return $this->y; +} + +function SetY($y, $resetX=true) +{ + // Set y position and optionally reset x + if($y>=0) + $this->y = $y; + else + $this->y = $this->h+$y; + if($resetX) + $this->x = $this->lMargin; +} + +function SetXY($x, $y) +{ + // Set x and y positions + $this->SetX($x); + $this->SetY($y,false); +} + +function Output($dest='', $name='', $isUTF8=false) +{ + // Output PDF to some destination + $this->Close(); + if(strlen($name)==1 && strlen($dest)!=1) + { + // Fix parameter order + $tmp = $dest; + $dest = $name; + $name = $tmp; + } + if($dest=='') + $dest = 'I'; + if($name=='') + $name = 'doc.pdf'; + switch(strtoupper($dest)) + { + case 'I': + // Send to standard output + $this->_checkoutput(); + if(PHP_SAPI!='cli') + { + // We send to a browser + header('Content-Type: application/pdf'); + header('Content-Disposition: inline; '.$this->_httpencode('filename',$name,$isUTF8)); + header('Cache-Control: private, max-age=0, must-revalidate'); + header('Pragma: public'); + } + echo $this->buffer; + break; + case 'D': + // Download file + $this->_checkoutput(); + header('Content-Type: application/x-download'); + header('Content-Disposition: attachment; '.$this->_httpencode('filename',$name,$isUTF8)); + header('Cache-Control: private, max-age=0, must-revalidate'); + header('Pragma: public'); + echo $this->buffer; + break; + case 'F': + // Save to local file + if(!file_put_contents($name,$this->buffer)) + $this->Error('Unable to create output file: '.$name); + break; + case 'S': + // Return as a string + return $this->buffer; + default: + $this->Error('Incorrect output destination: '.$dest); + } + return ''; +} + +/******************************************************************************* +* Protected methods * +*******************************************************************************/ + +protected function _dochecks() +{ + // Check mbstring overloading + if(ini_get('mbstring.func_overload') & 2) + $this->Error('mbstring overloading must be disabled'); + // Ensure runtime magic quotes are disabled + if(get_magic_quotes_runtime()) + @set_magic_quotes_runtime(0); +} + +protected function _checkoutput() +{ + + if(PHP_SAPI!='cli') + { + if(headers_sent($file,$line)) + $this->Error("Some data has already been output, can't send PDF file (output started at $file:$line)"); + } + if(ob_get_length()) + { + // The output buffer is not empty + if(preg_match('/^(\xEF\xBB\xBF)?\s*$/',ob_get_contents())) + { + // It contains only a UTF-8 BOM and/or whitespace, let's clean it + ob_clean(); + } + else + $this->Error("Some data has already been output, can't send PDF file"); + } +} + +protected function _getpagesize($size) +{ + if(is_string($size)) + { + $size = strtolower($size); + if(!isset($this->StdPageSizes[$size])) + $this->Error('Unknown page size: '.$size); + $a = $this->StdPageSizes[$size]; + return array($a[0]/$this->k, $a[1]/$this->k); + } + else + { + if($size[0]>$size[1]) + return array($size[1], $size[0]); + else + return $size; + } +} + +protected function _beginpage($orientation, $size, $rotation) +{ + $this->page++; + $this->pages[$this->page] = ''; + $this->state = 2; + $this->x = $this->lMargin; + $this->y = $this->tMargin; + $this->FontFamily = ''; + // Check page size and orientation + if($orientation=='') + $orientation = $this->DefOrientation; + else + $orientation = strtoupper($orientation[0]); + if($size=='') + $size = $this->DefPageSize; + else + $size = $this->_getpagesize($size); + if($orientation!=$this->CurOrientation || $size[0]!=$this->CurPageSize[0] || $size[1]!=$this->CurPageSize[1]) + { + // New size or orientation + if($orientation=='P') + { + $this->w = $size[0]; + $this->h = $size[1]; + } + else + { + $this->w = $size[1]; + $this->h = $size[0]; + } + $this->wPt = $this->w*$this->k; + $this->hPt = $this->h*$this->k; + $this->PageBreakTrigger = $this->h-$this->bMargin; + $this->CurOrientation = $orientation; + $this->CurPageSize = $size; + } + if($orientation!=$this->DefOrientation || $size[0]!=$this->DefPageSize[0] || $size[1]!=$this->DefPageSize[1]) + $this->PageInfo[$this->page]['size'] = array($this->wPt, $this->hPt); + if($rotation!=0) + { + if($rotation%90!=0) + $this->Error('Incorrect rotation value: '.$rotation); + $this->CurRotation = $rotation; + $this->PageInfo[$this->page]['rotation'] = $rotation; + } +} + +protected function _endpage() +{ + $this->state = 1; +} + +protected function _loadfont($font) +{ + // Load a font definition file from the font directory + if(strpos($font,'/')!==false || strpos($font,"\\")!==false) + $this->Error('Incorrect font definition file name: '.$font); + include($this->fontpath.$font); + if(!isset($name)) + $this->Error('Could not include font definition file'); + if(isset($enc)) + $enc = strtolower($enc); + if(!isset($subsetted)) + $subsetted = false; + return get_defined_vars(); +} + +protected function _isascii($s) +{ + // Test if string is ASCII + $nb = strlen($s); + for($i=0;$i<$nb;$i++) + { + if(ord($s[$i])>127) + return false; + } + return true; +} + +protected function _httpencode($param, $value, $isUTF8) +{ + // Encode HTTP header field parameter + if($this->_isascii($value)) + return $param.'="'.$value.'"'; + if(!$isUTF8) + $value = utf8_encode($value); + if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')!==false) + return $param.'="'.rawurlencode($value).'"'; + else + return $param."*=UTF-8''".rawurlencode($value); +} + +protected function _UTF8toUTF16($s) +{ + // Convert UTF-8 to UTF-16BE with BOM + $res = "\xFE\xFF"; + $nb = strlen($s); + $i = 0; + while($i<$nb) + { + $c1 = ord($s[$i++]); + if($c1>=224) + { + // 3-byte character + $c2 = ord($s[$i++]); + $c3 = ord($s[$i++]); + $res .= chr((($c1 & 0x0F)<<4) + (($c2 & 0x3C)>>2)); + $res .= chr((($c2 & 0x03)<<6) + ($c3 & 0x3F)); + } + elseif($c1>=192) + { + // 2-byte character + $c2 = ord($s[$i++]); + $res .= chr(($c1 & 0x1C)>>2); + $res .= chr((($c1 & 0x03)<<6) + ($c2 & 0x3F)); + } + else + { + // Single-byte character + $res .= "\0".chr($c1); + } + } + return $res; +} + +protected function _escape($s) +{ + // Escape special characters + if(strpos($s,'(')!==false || strpos($s,')')!==false || strpos($s,'\\')!==false || strpos($s,"\r")!==false) + return str_replace(array('\\','(',')',"\r"), array('\\\\','\\(','\\)','\\r'), $s); + else + return $s; +} + +protected function _textstring($s) +{ + // Format a text string + if(!$this->_isascii($s)) + $s = $this->_UTF8toUTF16($s); + return '('.$this->_escape($s).')'; +} + +protected function _dounderline($x, $y, $txt) +{ + // Underline text + $up = $this->CurrentFont['up']; + $ut = $this->CurrentFont['ut']; + $w = $this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '); + return sprintf('%.2F %.2F %.2F %.2F re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt); +} + +protected function _parsejpg($file) +{ + // Extract info from a JPEG file + $a = getimagesize($file); + if(!$a) + $this->Error('Missing or incorrect image file: '.$file); + if($a[2]!=2) + $this->Error('Not a JPEG file: '.$file); + if(!isset($a['channels']) || $a['channels']==3) + $colspace = 'DeviceRGB'; + elseif($a['channels']==4) + $colspace = 'DeviceCMYK'; + else + $colspace = 'DeviceGray'; + $bpc = isset($a['bits']) ? $a['bits'] : 8; + $data = file_get_contents($file); + return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data); +} + +protected function _parsepng($file) +{ + // Extract info from a PNG file + $f = fopen($file,'rb'); + if(!$f) + $this->Error('Can\'t open image file: '.$file); + $info = $this->_parsepngstream($f,$file); + fclose($f); + return $info; +} + +protected function _parsepngstream($f, $file) +{ + // Check signature + if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) + $this->Error('Not a PNG file: '.$file); + + // Read header chunk + $this->_readstream($f,4); + if($this->_readstream($f,4)!='IHDR') + $this->Error('Incorrect PNG file: '.$file); + $w = $this->_readint($f); + $h = $this->_readint($f); + $bpc = ord($this->_readstream($f,1)); + if($bpc>8) + $this->Error('16-bit depth not supported: '.$file); + $ct = ord($this->_readstream($f,1)); + if($ct==0 || $ct==4) + $colspace = 'DeviceGray'; + elseif($ct==2 || $ct==6) + $colspace = 'DeviceRGB'; + elseif($ct==3) + $colspace = 'Indexed'; + else + $this->Error('Unknown color type: '.$file); + if(ord($this->_readstream($f,1))!=0) + $this->Error('Unknown compression method: '.$file); + if(ord($this->_readstream($f,1))!=0) + $this->Error('Unknown filter method: '.$file); + if(ord($this->_readstream($f,1))!=0) + $this->Error('Interlacing not supported: '.$file); + $this->_readstream($f,4); + $dp = '/Predictor 15 /Colors '.($colspace=='DeviceRGB' ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w; + + // Scan chunks looking for palette, transparency and image data + $pal = ''; + $trns = ''; + $data = ''; + do + { + $n = $this->_readint($f); + $type = $this->_readstream($f,4); + if($type=='PLTE') + { + // Read palette + $pal = $this->_readstream($f,$n); + $this->_readstream($f,4); + } + elseif($type=='tRNS') + { + // Read transparency info + $t = $this->_readstream($f,$n); + if($ct==0) + $trns = array(ord(substr($t,1,1))); + elseif($ct==2) + $trns = array(ord(substr($t,1,1)), ord(substr($t,3,1)), ord(substr($t,5,1))); + else + { + $pos = strpos($t,chr(0)); + if($pos!==false) + $trns = array($pos); + } + $this->_readstream($f,4); + } + elseif($type=='IDAT') + { + // Read image data block + $data .= $this->_readstream($f,$n); + $this->_readstream($f,4); + } + elseif($type=='IEND') + break; + else + $this->_readstream($f,$n+4); + } + while($n); + + if($colspace=='Indexed' && empty($pal)) + $this->Error('Missing palette in '.$file); + $info = array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'dp'=>$dp, 'pal'=>$pal, 'trns'=>$trns); + if($ct>=4) + { + // Extract alpha channel + if(!function_exists('gzuncompress')) + $this->Error('Zlib not available, can\'t handle alpha channel: '.$file); + $data = gzuncompress($data); + $color = ''; + $alpha = ''; + if($ct==4) + { + // Gray image + $len = 2*$w; + for($i=0;$i<$h;$i++) + { + $pos = (1+$len)*$i; + $color .= $data[$pos]; + $alpha .= $data[$pos]; + $line = substr($data,$pos+1,$len); + $color .= preg_replace('/(.)./s','$1',$line); + $alpha .= preg_replace('/.(.)/s','$1',$line); + } + } + else + { + // RGB image + $len = 4*$w; + for($i=0;$i<$h;$i++) + { + $pos = (1+$len)*$i; + $color .= $data[$pos]; + $alpha .= $data[$pos]; + $line = substr($data,$pos+1,$len); + $color .= preg_replace('/(.{3})./s','$1',$line); + $alpha .= preg_replace('/.{3}(.)/s','$1',$line); + } + } + unset($data); + $data = gzcompress($color); + $info['smask'] = gzcompress($alpha); + $this->WithAlpha = true; + if($this->PDFVersion<'1.4') + $this->PDFVersion = '1.4'; + } + $info['data'] = $data; + return $info; +} + +protected function _readstream($f, $n) +{ + // Read n bytes from stream + $res = ''; + while($n>0 && !feof($f)) + { + $s = fread($f,$n); + if($s===false) + $this->Error('Error while reading stream'); + $n -= strlen($s); + $res .= $s; + } + if($n>0) + $this->Error('Unexpected end of stream'); + return $res; +} + +protected function _readint($f) +{ + // Read a 4-byte integer from stream + $a = unpack('Ni',$this->_readstream($f,4)); + return $a['i']; +} + +protected function _parsegif($file) +{ + // Extract info from a GIF file (via PNG conversion) + if(!function_exists('imagepng')) + $this->Error('GD extension is required for GIF support'); + if(!function_exists('imagecreatefromgif')) + $this->Error('GD has no GIF read support'); + $im = imagecreatefromgif($file); + if(!$im) + $this->Error('Missing or incorrect image file: '.$file); + imageinterlace($im,0); + ob_start(); + imagepng($im); + $data = ob_get_clean(); + imagedestroy($im); + $f = fopen('php://temp','rb+'); + if(!$f) + $this->Error('Unable to create memory stream'); + fwrite($f,$data); + rewind($f); + $info = $this->_parsepngstream($f,$file); + fclose($f); + return $info; +} + +protected function _out($s) +{ + // Add a line to the document + if($this->state==2) + $this->pages[$this->page] .= $s."\n"; + elseif($this->state==1) + $this->_put($s); + elseif($this->state==0) + $this->Error('No page has been added yet'); + elseif($this->state==3) + $this->Error('The document is closed'); +} + +protected function _put($s) +{ + $this->buffer .= $s."\n"; +} + +protected function _getoffset() +{ + return strlen($this->buffer); +} + +protected function _newobj($n=null) +{ + // Begin a new object + if($n===null) + $n = ++$this->n; + $this->offsets[$n] = $this->_getoffset(); + $this->_put($n.' 0 obj'); +} + +protected function _putstream($data) +{ + $this->_put('stream'); + $this->_put($data); + $this->_put('endstream'); +} + +protected function _putstreamobject($data) +{ + if($this->compress) + { + $entries = '/Filter /FlateDecode '; + $data = gzcompress($data); + } + else + $entries = ''; + $entries .= '/Length '.strlen($data); + $this->_newobj(); + $this->_put('<<'.$entries.'>>'); + $this->_putstream($data); + $this->_put('endobj'); +} + +protected function _putpage($n) +{ + $this->_newobj(); + $this->_put('<_put('/Parent 1 0 R'); + if(isset($this->PageInfo[$n]['size'])) + $this->_put(sprintf('/MediaBox [0 0 %.2F %.2F]',$this->PageInfo[$n]['size'][0],$this->PageInfo[$n]['size'][1])); + if(isset($this->PageInfo[$n]['rotation'])) + $this->_put('/Rotate '.$this->PageInfo[$n]['rotation']); + $this->_put('/Resources 2 0 R'); + if(isset($this->PageLinks[$n])) + { + // Links + $annots = '/Annots ['; + foreach($this->PageLinks[$n] as $pl) + { + $rect = sprintf('%.2F %.2F %.2F %.2F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]); + $annots .= '<_textstring($pl[4]).'>>>>'; + else + { + $l = $this->links[$pl[4]]; + if(isset($this->PageInfo[$l[0]]['size'])) + $h = $this->PageInfo[$l[0]]['size'][1]; + else + $h = ($this->DefOrientation=='P') ? $this->DefPageSize[1]*$this->k : $this->DefPageSize[0]*$this->k; + $annots .= sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]>>',$this->PageInfo[$l[0]]['n'],$h-$l[1]*$this->k); + } + } + $this->_put($annots.']'); + } + if($this->WithAlpha) + $this->_put('/Group <>'); + $this->_put('/Contents '.($this->n+1).' 0 R>>'); + $this->_put('endobj'); + // Page content + if(!empty($this->AliasNbPages)) + $this->pages[$n] = str_replace($this->AliasNbPages,$this->page,$this->pages[$n]); + $this->_putstreamobject($this->pages[$n]); +} + +protected function _putpages() +{ + $nb = $this->page; + for($n=1;$n<=$nb;$n++) + $this->PageInfo[$n]['n'] = $this->n+1+2*($n-1); + for($n=1;$n<=$nb;$n++) + $this->_putpage($n); + // Pages root + $this->_newobj(1); + $this->_put('<PageInfo[$n]['n'].' 0 R '; + $this->_put($kids.']'); + $this->_put('/Count '.$nb); + if($this->DefOrientation=='P') + { + $w = $this->DefPageSize[0]; + $h = $this->DefPageSize[1]; + } + else + { + $w = $this->DefPageSize[1]; + $h = $this->DefPageSize[0]; + } + $this->_put(sprintf('/MediaBox [0 0 %.2F %.2F]',$w*$this->k,$h*$this->k)); + $this->_put('>>'); + $this->_put('endobj'); +} + +protected function _putfonts() +{ + foreach($this->FontFiles as $file=>$info) + { + // Font file embedding + $this->_newobj(); + $this->FontFiles[$file]['n'] = $this->n; + $font = file_get_contents($this->fontpath.$file,true); + if(!$font) + $this->Error('Font file not found: '.$file); + $compressed = (substr($file,-2)=='.z'); + if(!$compressed && isset($info['length2'])) + $font = substr($font,6,$info['length1']).substr($font,6+$info['length1']+6,$info['length2']); + $this->_put('<_put('/Filter /FlateDecode'); + $this->_put('/Length1 '.$info['length1']); + if(isset($info['length2'])) + $this->_put('/Length2 '.$info['length2'].' /Length3 0'); + $this->_put('>>'); + $this->_putstream($font); + $this->_put('endobj'); + } + foreach($this->fonts as $k=>$font) + { + // Encoding + if(isset($font['diff'])) + { + if(!isset($this->encodings[$font['enc']])) + { + $this->_newobj(); + $this->_put('<>'); + $this->_put('endobj'); + $this->encodings[$font['enc']] = $this->n; + } + } + // ToUnicode CMap + if(isset($font['uv'])) + { + if(isset($font['enc'])) + $cmapkey = $font['enc']; + else + $cmapkey = $font['name']; + if(!isset($this->cmaps[$cmapkey])) + { + $cmap = $this->_tounicodecmap($font['uv']); + $this->_putstreamobject($cmap); + $this->cmaps[$cmapkey] = $this->n; + } + } + // Font object + $this->fonts[$k]['n'] = $this->n+1; + $type = $font['type']; + $name = $font['name']; + if($font['subsetted']) + $name = 'AAAAAA+'.$name; + if($type=='Core') + { + // Core font + $this->_newobj(); + $this->_put('<_put('/BaseFont /'.$name); + $this->_put('/Subtype /Type1'); + if($name!='Symbol' && $name!='ZapfDingbats') + $this->_put('/Encoding /WinAnsiEncoding'); + if(isset($font['uv'])) + $this->_put('/ToUnicode '.$this->cmaps[$cmapkey].' 0 R'); + $this->_put('>>'); + $this->_put('endobj'); + } + elseif($type=='Type1' || $type=='TrueType') + { + // Additional Type1 or TrueType/OpenType font + $this->_newobj(); + $this->_put('<_put('/BaseFont /'.$name); + $this->_put('/Subtype /'.$type); + $this->_put('/FirstChar 32 /LastChar 255'); + $this->_put('/Widths '.($this->n+1).' 0 R'); + $this->_put('/FontDescriptor '.($this->n+2).' 0 R'); + if(isset($font['diff'])) + $this->_put('/Encoding '.$this->encodings[$font['enc']].' 0 R'); + else + $this->_put('/Encoding /WinAnsiEncoding'); + if(isset($font['uv'])) + $this->_put('/ToUnicode '.$this->cmaps[$cmapkey].' 0 R'); + $this->_put('>>'); + $this->_put('endobj'); + // Widths + $this->_newobj(); + $cw = &$font['cw']; + $s = '['; + for($i=32;$i<=255;$i++) + $s .= $cw[chr($i)].' '; + $this->_put($s.']'); + $this->_put('endobj'); + // Descriptor + $this->_newobj(); + $s = '<$v) + $s .= ' /'.$k.' '.$v; + if(!empty($font['file'])) + $s .= ' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$font['file']]['n'].' 0 R'; + $this->_put($s.'>>'); + $this->_put('endobj'); + } + else + { + // Allow for additional types + $mtd = '_put'.strtolower($type); + if(!method_exists($this,$mtd)) + $this->Error('Unsupported font type: '.$type); + $this->$mtd($font); + } + } +} + +protected function _tounicodecmap($uv) +{ + $ranges = ''; + $nbr = 0; + $chars = ''; + $nbc = 0; + foreach($uv as $c=>$v) + { + if(is_array($v)) + { + $ranges .= sprintf("<%02X> <%02X> <%04X>\n",$c,$c+$v[1]-1,$v[0]); + $nbr++; + } + else + { + $chars .= sprintf("<%02X> <%04X>\n",$c,$v); + $nbc++; + } + } + $s = "/CIDInit /ProcSet findresource begin\n"; + $s .= "12 dict begin\n"; + $s .= "begincmap\n"; + $s .= "/CIDSystemInfo\n"; + $s .= "<0) + { + $s .= "$nbr beginbfrange\n"; + $s .= $ranges; + $s .= "endbfrange\n"; + } + if($nbc>0) + { + $s .= "$nbc beginbfchar\n"; + $s .= $chars; + $s .= "endbfchar\n"; + } + $s .= "endcmap\n"; + $s .= "CMapName currentdict /CMap defineresource pop\n"; + $s .= "end\n"; + $s .= "end"; + return $s; +} + +protected function _putimages() +{ + foreach(array_keys($this->images) as $file) + { + $this->_putimage($this->images[$file]); + unset($this->images[$file]['data']); + unset($this->images[$file]['smask']); + } +} + +protected function _putimage(&$info) +{ + $this->_newobj(); + $info['n'] = $this->n; + $this->_put('<_put('/Subtype /Image'); + $this->_put('/Width '.$info['w']); + $this->_put('/Height '.$info['h']); + if($info['cs']=='Indexed') + $this->_put('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]'); + else + { + $this->_put('/ColorSpace /'.$info['cs']); + if($info['cs']=='DeviceCMYK') + $this->_put('/Decode [1 0 1 0 1 0 1 0]'); + } + $this->_put('/BitsPerComponent '.$info['bpc']); + if(isset($info['f'])) + $this->_put('/Filter /'.$info['f']); + if(isset($info['dp'])) + $this->_put('/DecodeParms <<'.$info['dp'].'>>'); + if(isset($info['trns']) && is_array($info['trns'])) + { + $trns = ''; + for($i=0;$i_put('/Mask ['.$trns.']'); + } + if(isset($info['smask'])) + $this->_put('/SMask '.($this->n+1).' 0 R'); + $this->_put('/Length '.strlen($info['data']).'>>'); + $this->_putstream($info['data']); + $this->_put('endobj'); + // Soft mask + if(isset($info['smask'])) + { + $dp = '/Predictor 15 /Colors 1 /BitsPerComponent 8 /Columns '.$info['w']; + $smask = array('w'=>$info['w'], 'h'=>$info['h'], 'cs'=>'DeviceGray', 'bpc'=>8, 'f'=>$info['f'], 'dp'=>$dp, 'data'=>$info['smask']); + $this->_putimage($smask); + } + // Palette + if($info['cs']=='Indexed') + $this->_putstreamobject($info['pal']); +} + +protected function _putxobjectdict() +{ + foreach($this->images as $image) + $this->_put('/I'.$image['i'].' '.$image['n'].' 0 R'); +} + +protected function _putresourcedict() +{ + $this->_put('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); + $this->_put('/Font <<'); + foreach($this->fonts as $font) + $this->_put('/F'.$font['i'].' '.$font['n'].' 0 R'); + $this->_put('>>'); + $this->_put('/XObject <<'); + $this->_putxobjectdict(); + $this->_put('>>'); +} + +protected function _putresources() +{ + $this->_putfonts(); + $this->_putimages(); + // Resource dictionary + $this->_newobj(2); + $this->_put('<<'); + $this->_putresourcedict(); + $this->_put('>>'); + $this->_put('endobj'); +} + +protected function _putinfo() +{ + $this->metadata['Producer'] = 'FPDF '.FPDF_VERSION; + $this->metadata['CreationDate'] = 'D:'.@date('YmdHis'); + foreach($this->metadata as $key=>$value) + $this->_put('/'.$key.' '.$this->_textstring($value)); +} + +protected function _putcatalog() +{ + $n = $this->PageInfo[1]['n']; + $this->_put('/Type /Catalog'); + $this->_put('/Pages 1 0 R'); + if($this->ZoomMode=='fullpage') + $this->_put('/OpenAction ['.$n.' 0 R /Fit]'); + elseif($this->ZoomMode=='fullwidth') + $this->_put('/OpenAction ['.$n.' 0 R /FitH null]'); + elseif($this->ZoomMode=='real') + $this->_put('/OpenAction ['.$n.' 0 R /XYZ null null 1]'); + elseif(!is_string($this->ZoomMode)) + $this->_put('/OpenAction ['.$n.' 0 R /XYZ null null '.sprintf('%.2F',$this->ZoomMode/100).']'); + if($this->LayoutMode=='single') + $this->_put('/PageLayout /SinglePage'); + elseif($this->LayoutMode=='continuous') + $this->_put('/PageLayout /OneColumn'); + elseif($this->LayoutMode=='two') + $this->_put('/PageLayout /TwoColumnLeft'); +} + +protected function _putheader() +{ + $this->_put('%PDF-'.$this->PDFVersion); +} + +protected function _puttrailer() +{ + $this->_put('/Size '.($this->n+1)); + $this->_put('/Root '.$this->n.' 0 R'); + $this->_put('/Info '.($this->n-1).' 0 R'); +} + +protected function _enddoc() +{ + $this->_putheader(); + $this->_putpages(); + $this->_putresources(); + // Info + $this->_newobj(); + $this->_put('<<'); + $this->_putinfo(); + $this->_put('>>'); + $this->_put('endobj'); + // Catalog + $this->_newobj(); + $this->_put('<<'); + $this->_putcatalog(); + $this->_put('>>'); + $this->_put('endobj'); + // Cross-ref + $offset = $this->_getoffset(); + $this->_put('xref'); + $this->_put('0 '.($this->n+1)); + $this->_put('0000000000 65535 f '); + for($i=1;$i<=$this->n;$i++) + $this->_put(sprintf('%010d 00000 n ',$this->offsets[$i])); + // Trailer + $this->_put('trailer'); + $this->_put('<<'); + $this->_puttrailer(); + $this->_put('>>'); + $this->_put('startxref'); + $this->_put($offset); + $this->_put('%%EOF'); + $this->state = 3; +} +} +?> diff --git a/fpdf/pdf_o6h.php b/fpdf/pdf_o6h.php new file mode 100755 index 0000000..d1c04ba --- /dev/null +++ b/fpdf/pdf_o6h.php @@ -0,0 +1,119 @@ +/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); + foreach($a as $i=>$e) + { + if($i%2==0) + { + // Text + if($this->HREF) + $this->PutLink($this->HREF,$e); + else + $this->Write(5,$e); + } + else + { + // Etiqueta + if($e[0]=='/') + $this->CloseTag(strtoupper(substr($e,1))); + else + { + // Extraer atributos + $a2 = explode(' ',$e); + $tag = strtoupper(array_shift($a2)); + $attr = array(); + foreach($a2 as $v) + { + if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3)) + $attr[strtoupper($a3[1])] = $a3[2]; + } + $this->OpenTag($tag,$attr); + } + } + } +} + +function OpenTag($tag, $attr) +{ + // Etiqueta de apertura + if($tag=='B' || $tag=='I' || $tag=='U') + $this->SetStyle($tag,true); + if($tag=='A') + $this->HREF = $attr['HREF']; + if($tag=='BR') + $this->Ln(5); +} + +function CloseTag($tag) +{ + // Etiqueta de cierre + if($tag=='B' || $tag=='I' || $tag=='U') + $this->SetStyle($tag,false); + if($tag=='A') + $this->HREF = ''; +} + +function SetStyle($tag, $enable) +{ + // Modificar estilo y escoger la fuente correspondiente + $this->$tag += ($enable ? 1 : -1); + $style = ''; + foreach(array('B', 'I', 'U') as $s) + { + if($this->$s>0) + $style .= $s; + } + $this->SetFont('',$style); +} + +function PutLink($URL, $txt) +{ + // Escribir un hiper-enlace + $this->SetTextColor(0,0,255); + $this->SetStyle('U',true); + $this->Write(5,$txt,$URL); + $this->SetStyle('U',false); + $this->SetTextColor(0); +} +} + +$html = 'Usuario Base de Datos: +Nombre Base de Datos: nombre +Clave Base de Datos: nombre +Usuario FTP: nombre +Clave FTP: nombre +www.open6hosting.com'; + +$pdf = new PDFO6H(); +// Primera página +$pdf->AddPage(); +$pdf->SetFont('Arial','',20); +//$pdf->Write(5,'Para saber qué hay de nuevo en este tutorial, pulse '); +$pdf->SetFont('','U'); +//$link = $pdf->AddLink(); +//$pdf->Write(5,'aquí',$link); +$pdf->SetFont(''); +// Segunda página +//$pdf->AddPage(); +$pdf->SetLink($link); +$pdf->Image('imagen/open6-logo.png',10,12,30,0,'','http://www.open6hosting.com'); +$pdf->SetLeftMargin(45); +$pdf->SetFontSize(14); +$pdf->WriteHTML($html); +$pdf->Output(); +?> \ No newline at end of file diff --git a/imagen/open6-logo.png b/imagen/open6-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..412b4b25c24c2e6813d491c8d5828a74ee257b92 GIT binary patch literal 13918 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 F{uhxxAj<#% literal 0 HcmV?d00001 diff --git a/lib/lang/en_new_service_webdns.lng b/lib/lang/en_new_service_webdns.lng index a2102e2..616e9c5 100644 --- a/lib/lang/en_new_service_webdns.lng +++ b/lib/lang/en_new_service_webdns.lng @@ -185,4 +185,5 @@ $wb['error_dominio_www'] = 'El dominio no es correcto. No escriba "www" antes de $wb['error_no_existe_dominio_padre'] = 'El dominio padre para este subdominio, no existe.'; $wb['error_no_ip'] = 'No tiene ip, necesita añadirla en la configuración.'; $wb['error_subdominio_existe'] = 'Este subdominio existe.'; +$wb['error_sitio_web_existe'] = 'El dominio que intenta crear ya tiene sitio web.'; ?> \ No newline at end of file diff --git a/lib/lang/es_new_service_webdns.lng b/lib/lang/es_new_service_webdns.lng index 8758f43..c5319a2 100644 --- a/lib/lang/es_new_service_webdns.lng +++ b/lib/lang/es_new_service_webdns.lng @@ -185,4 +185,5 @@ $wb['error_dominio_www'] = 'El dominio no es correcto. No escriba "www" antes de $wb['error_no_existe_dominio_padre'] = 'El dominio padre para este subdominio, no existe.'; $wb['error_no_ip'] = 'No tiene ip, necesita añadirla en la configuración.'; $wb['error_subdominio_existe'] = 'Este subdominio existe.'; +$wb['error_sitio_web_existe'] = 'El dominio que intenta crear ya tiene sitio web.'; ?> diff --git a/new_service_webdns.php b/new_service_webdns.php index e64b443..bbc8af4 100755 --- a/new_service_webdns.php +++ b/new_service_webdns.php @@ -18,6 +18,7 @@ $tform_def_file = "form/new_service_webdns.tform.php"; require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; +//require 'pdf_o6h.php'; //* Check permissions for module $app->auth->check_module_permissions('webdns'); @@ -72,6 +73,13 @@ class page_action extends tform_actions { public $es_subdominio = false; public $subdom_error = false; public $no_ip = false; + + //Campos para PDF + public $usuario_db_txt; + public $nombre_db_txt; + public $pass_db_txt; + public $usuario_ftp_txt; + public $pass_ftp_txt; function crearBaseDatosFtp($remoto){ @@ -92,7 +100,13 @@ class page_action extends tform_actions { 'database_password' => substr(sha1(rand()), 0, 10) ); + $this->usuario_db_txt = $db_user_params['database_user']; + $this->pass_db_txt = $db_user_params['database_password']; + //print "
"; print_r($db_user_params); print "
\n"; + /*print "
". $this->usuario_db_txt; + print "
". $this->pass_db_txt;*/ + //print "
"; print_r($fields); print "
\n"; $db_user_id = $remoto->insert_query('../sites/form/database_user.tform.php', $fields['client_id'], $db_user_params, 'sites:web_database_user:on_after_insert'); @@ -111,6 +125,10 @@ class page_action extends tform_actions { ); //print "
"; print_r($paramsBD); print "
\n"; //print "
"; print_r($fields); print "
\n"; + + $this->nombre_db_txt = $paramsBD['database_name']; + + $remoto->sites_database_add($fields['client_id'], $paramsBD); // get site data para usarlo en la creación de la cuenta ftp, otra forma de cargar una tupla dandole un id @@ -136,9 +154,61 @@ class page_action extends tform_actions { 'dl_bandwidth' => '-1',//$template['dl_bandwidth'], 'active' => 'y', ); + $this->usuario_ftp_txt = $ftp_params['username']; + $this->pass_ftp_txt = $ftp_params['password']; //print "
"; print_r($ftp_params); print "
\n"; //print "
"; print_r($site_data); print "
\n"; $remoto->insert_query('../sites/form/ftp_user.tform.php', $fields['client_id'], $ftp_params); + + echo '

+ Altas de BBDD y FTP, ¡Correctas!

+ Usuario BBDD: '. $this->usuario_db_txt .'
Contraseña: ' . $this->pass_db_txt . ' +
Nombre BBDD: ' . $this->nombre_db_txt . '
+
Usuario FTP: '. $this->usuario_ftp_txt .'
Contraseña: ' . $this->pass_ftp_txt . '


'; + + + $html_resultado = '
BBDD
+ Usuario Base de Datos: '. $this->usuario_db_txt .'
+ Nombre Base de Datos: ' . $this->nombre_db_txt .'
+ Clave Base de Datos: ' . $this->pass_db_txt . '

+ FTP
+ Usuario FTP: '. $this->usuario_ftp_txt .'
+ Clave FTP: ' . $this->pass_ftp_txt . '

'; + + + + /*echo 'Decargar PDF';*/ + + /*echo ''; +*/ + + echo '
'; + echo ''; + echo ''; + /*echo ''; + echo 'FueraPDF'; + */ + echo '
'; + + echo '
'; + + + //echo ''; + /*echo 'Crear PDF';*/ + $datos_test = 'Datos muchosssss datos'; + + //echo''; + //echo 'Pedefeando '.$datos_test.''; + + /*echo 'PDF'; +*/ + //echo ''; + } //Expresiones regulares para comprobar si es subdominio @@ -198,8 +268,8 @@ class page_action extends tform_actions { return; } //print "
El dominio es: " . $this->dominio;
-		$camDominio = $app->db->queryOneRecord('SELECT domain_id, domain FROM domain WHERE domain = "'.$this->dominio.'"');
-		
+		//$camDominio = $app->db->queryOneRecord('SELECT domain_id, domain FROM domain WHERE domain = "'.$this->dominio.'"');
+		$camDominio = $app->db->queryOneRecord('SELECT origin FROM dns_soa WHERE origin LIKE "'.$this->dominio.'%"');
 		$camDnsRR = $app->db->queryOneRecord('SELECT server_id, zone FROM dns_rr WHERE name LIKE "'.$this->dominio.'%"');
 		
 		$camServIP = $app->db->queryOneRecord('SELECT ip_address FROM server_ip WHERE server_id = "'.$camDnsRR['server_id'].'"');
@@ -207,7 +277,7 @@ class page_action extends tform_actions {
 		//print_r($camDnsRR);
 
 		//Si el dominio NO existe mostramos mensaje de error y salimos de la ejecución
-		if(!$camDominio['domain']){
+		if(!$camDominio['origin']){
 			$this->subdom_error = true;
 			$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
 			$this->onError();
@@ -239,6 +309,9 @@ class page_action extends tform_actions {
 			echo '

Se ha dado de alta Web y Subdominio, '.$this->subdominio.', ¡Correctamente!


'; + /*echo '

+ Usuario de la Base de Datos: '. $this->usuario_db_txt .', Contraseña: ' . $this->pass_db_txt . '


'; + */ //$this->onShow(); } @@ -339,71 +412,46 @@ class page_action extends tform_actions { function tieneIPs(){ global $app, $conf; - $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); - //Llamada a la tabla server_ip para recuperar la ip4 e ip6 - $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = ".$app->functions->intval($fields['client_id']. " AND ip_type='IPv4'")); - - $dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = ".$fields['client_id']." AND ip_type='IPv6'"); - - /*print "
Campos ";print_r($fields);print "
\n"; - print "
IP4 ";print_r($dns_ip_servidor);print "
\n"; + //$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); + + //Llamada a la tabla server_ip para recuperar la ip4 e ip6 + $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE ip_type='IPv4'"); + $dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE ip_type='IPv6'"); + + /*print "
IP4 ";print_r($dns_ip_servidor);print "
\n"; print "
IP6 ";print_r($dns_ip_servidor_ipv6);print "
\n";*/ if(!$dns_ip_servidor['ip_address'] || !$dns_ip_servidor_ipv6['ip_address']){ - $app->tform->errorMessage = $app->tform->wordbook['error_no_ip']; - $this->onError(); - //$this->no_ip = true; - //print 'dentro if'; - return true; + $app->tform->errorMessage = $app->tform->wordbook['error_no_ip']; + $this->onError(); + return true; } return false; } - function onSubmit() { + //Comprueba que no exista el dominio y que no tenga sitio web, puede tener sitio web y no tener dns. + function existeDominio($campos){ global $app, $conf; - //Carga de campos del formulario. - $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); - //Creo la clase remote para usar las librerias - $remote = new remote_actions; - - //$this->tieneIPs(); - - if($this->tieneIPs()){ - return; - } - - if($this->comprobarSubDominios($fields['domain'])){ - //print 'despues de comprobar que es un subD ' . $fields['domain']; - $this->crearSubDominio($remote, $fields['domain']); - if(!$this->subdom_error){ - $this->crearSitioWebSubdominio($remote); - } - $this->crearBaseDatosFtp($remote); - return; - } //else if(!$this->subdom_error){ - //$this->crearBaseDatosFtp($remote); - // check for domain unique name - if($app->db->queryOneRecord('SELECT domain_id FROM domain WHERE domain = "'.$fields['domain'].'"')) { + if($app->db->queryOneRecord('SELECT * FROM dns_soa WHERE origin LIKE "'.$campos['domain'].'%"')) { $app->tform->errorMessage = $app->tform->wordbook['domain_error_unique']; } + if($app->db->queryOneRecord('SELECT domain_id, domain FROM web_domain WHERE domain = "'.$campos['domain'].'"')) { + $app->tform->errorMessage = $app->tform->wordbook['error_sitio_web_existe']; + } + if($app->tform->errorMessage) { $this->onError(); - return; + return true; } - //Esta variable nos llega por jQuery desde el htm para el control de errores en la vista. - if($_POST['create'] != 1) - { - $app->tform->errorMessage = 'DUMMY'; - $app->tpl->setVar($this->dataRecord); - $this->onShow(); - return; - } + } - // Domain OK, continue - //$remote = new remote_actions; + function crearSitioDns($remoto){ + global $app, $conf; + //Carga de campos del formulario. + $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); // client prefix and group id $res = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_id'])); @@ -411,7 +459,7 @@ class page_action extends tform_actions { $client_prefix = 'c'.$fields['client_id']; // add domain. Llamada que inserta el dominio en la tabla domain - $domain_id = $remote->insert_query('../client/form/domain.tform.php', $fields['client_id'], array('domain' => $fields['domain'])); + //$domain_id = $remote->insert_query('../client/form/domain.tform.php', $fields['client_id'], array('domain' => $fields['domain'])); //$this->crearBaseDatosFtp($remote); //Carga del formulario dns_soa para guardar en base de datos @@ -421,25 +469,6 @@ class page_action extends tform_actions { // Carga y seleccion de dns_template, si no esta creado se informa de que tiene que crearse $template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE visible = 'Y' AND name = 'webdns'"); /*'open6hosting'");*/ - /*if($template_record) { - //echo '

Teplate '.$template_record.', '; - $app->tform->errorMessage = 'Error hay que crear un template llamado webdns'; - $this->onError(); - return; - } else { - $app->tform->errorMessage = 'Error hay que crear un template llamado webdnsssssss'; - $this->onError(); - return; - }*/ - - /*if($app->tform->errorMessage) - { - $this->onError(); - return; - }*/ - - //$template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE visible = 'Y' AND name = 'webdns'"); /*'open6hosting'");*/ - //Llamada a la tabla server_ip para recuperar la ip4 e ip6 $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = ".$app->functions->intval($fields['client_id']. " AND ip_type='IPv4'")); @@ -507,26 +536,7 @@ class page_action extends tform_actions { } } // end foreach - - - $dns_error = ''; - /*if($vars['origin'] == '') $dns_error .= $app->lng('error_origin_empty').'
'; - if($vars['ns'] == '') $dns_error .= $app->lng('error_ns_empty').'
'; - if($vars['mbox'] == '') $dns_error .= $app->lng('error_mbox_empty').'
'; - if($vars['refresh'] == '') $dns_error .= $app->lng('error_refresh_empty').'
'; - if($vars['retry'] == '') $dns_error .= $app->lng('error_retry_empty').'
'; - if($vars['expire'] == '') $dns_error .= $app->lng('error_expire_empty').'
'; - if($vars['minimum'] == '') $dns_error .= $app->lng('error_minimum_empty').'
'; - if($vars['ttl'] == '') $dns_error .= $app->lng('error_ttl_empty').'
'; - - // check for dns errors - if($dns_error) - { - $app->tform->errorMessage = $dns_error; - $this->onError(); - return; - }*/ //Llamada a la tabla client para recuperar el client_id y su default_dnsserver $dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_id'])); @@ -654,41 +664,65 @@ class page_action extends tform_actions { //print 'DNS IPV6 ' . $dns_ip_servidor_ipv6['ip_address']; //El último parámetro es para lanzar un evento que llama a la función on_after_insert que prepara los campos document_root, system_user y system_group - $site_id = $remote->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert'); - print 'Sitio id '. $site_id; + $site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert'); + //print 'Sitio id '. $site_id; //$this->crearBaseDatosFtp($remote); // get site data - $app->uses('remoting_lib'); + /*$app->uses('remoting_lib'); $app->remoting_lib->loadFormDef('../sites/form/web_vhost_domain.tform.php'); - $site_data = $app->remoting_lib->getDataRecord($site_id); + $site_data = $app->remoting_lib->getDataRecord($site_id);*/ + + } + + function onSubmit() { + global $app, $conf; + //Carga de campos del formulario. + $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); + + //Creo la clase remote para usar las librerias + $remote = new remote_actions; - //IMPORTANTE, es necesario cargar nuestro formulario para poder ejecutar la función que crea - //la base de datos y el ftp ya que hay datos que tomamos de el antes de ejecutarla. - $app->tform->loadFormDef('form/new_service_webdns.tform.php'); - $this->crearBaseDatosFtp($remote); - //$remote->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $paramsite); - - //Si todo va bien, el resultado - echo '

- Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente! -


'; - //$this->onShow(); + if($this->tieneIPs()){ + return; + } + + if($this->existeDominio($fields)){ + return; + } + + //Esta variable nos llega por jQuery desde el htm para el control de errores en la vista. + if($_POST['create'] != 1) + { + $app->tform->errorMessage = 'DUMMY'; + $app->tpl->setVar($this->dataRecord); + $this->onShow(); + return; + } - /*echo '
- - - - - - -
Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente!
-
';*/ - //} - - //parent::onSubmit(); - - //}//FIN IF - //$this->crearBaseDatosFtp($remote); + if($this->comprobarSubDominios($fields['domain'])){ + + $this->crearSubDominio($remote, $fields['domain']); + if(!$this->subdom_error){ + $this->crearSitioWebSubdominio($remote); + $this->crearBaseDatosFtp($remote); + } + + } else { + + $this->crearSitioDns($remote); + + //Si todo va bien, el resultado de la web y dns + echo '

+ Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente! +


'; + + //IMPORTANTE, es necesario cargar nuestro formulario para poder ejecutar la función que crea + //la base de datos y el ftp ya que hay datos que tomamos de el antes de ejecutarla. + $app->tform->loadFormDef('form/new_service_webdns.tform.php'); + $this->crearBaseDatosFtp($remote); + } + + } } @@ -729,3 +763,85 @@ class remote_actions extends remoting { $page = new page_action; $page->onLoad(); + + +?> + diff --git a/new_service_webdnsOLD.php b/new_service_webdnsOLD.php deleted file mode 100755 index 5e3960f..0000000 --- a/new_service_webdnsOLD.php +++ /dev/null @@ -1,361 +0,0 @@ - -SQL y expresiones regulares por Pablo Sarria Pérez, Open6Hosting - -2017, All rights reserved. -*/ - - -/****************************************** -* Begin Form configuration -******************************************/ -//Solo se puede tener una variable para cargar los distintos formularios -$tform_def_file = "form/new_service_webdns.tform.php"; - -/****************************************** -* End Form configuration -******************************************/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('webdns'); - -// Check the module permissions and redirect if not allowed. -/*if(!stristr($_SESSION['s']['user']['modules'],'customdns')) { - header('Location: ../index.php'); - die; -}*/ - -// Loading classes -$app->uses('tpl,tform,tform_actions,remoting,tools_sites,remoting_lib'); -$app->load('tform_actions'); - -class page_action extends tform_actions { - //Con esta funcion se parsean y preparan los campos del formulario, new_service_dns.tform.php - //justo después de la carga de este. - /*function onShowEnd() { - global $app, $conf;*/ - //FORMULARIO - //Con esta llamada a al clase $app cargo todos los campos definidos en el formulario, - //en este caso, los definidos en el array $form["tabs"]['webdns']; - //$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); - - // select first template as default - /*if($fields['dns_template_id'] == 0) - { - $first_template = $app->db->queryOneRecord("SELECT template_id FROM dns_template WHERE visible = 'Y' ORDER BY name ASC"); - $fields['dns_template_id'] = $first_template['template_id']; - }*/ - //BASE DE DATOS - TEMPLATE - //Cargo todos los valores de la tabla dns_template que coincidan con id del template seleccionado. - ///$template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE template_id = ?", $fields['dns_template_id']); - //IMPORTANTE, aquí­ cargo el campo fields de la tabla dns_template - //que contiene una lista de los campos que se muestran en el template(vista) - /*$fields = explode(',', $template_record['fields']); - if(is_array($fields)) { - foreach($fields as $field) { - $app->tpl->setVar($field."_VISIBLE", 1); - $field = strtolower($field); - $app->tpl->setVar($field, $_POST['dns_'.$field]); - } - }*/ - - /*parent::onShowEnd(); - }*/ - - - function onSubmit() { - global $app, $conf; - //Carga de campos del formulario. - $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); - - // check for domain unique name - if($app->db->queryOneRecord('SELECT domain_id FROM domain WHERE domain = "'.$fields['domain'].'"')) { - $app->tform->errorMessage = $app->tform->wordbook['domain_error_unique']; - } - - if($app->tform->errorMessage) - { - $this->onError(); - return; - } - //Esta variable nos llega por jQuery desde el htm para el control de errores en la vista. - if($_POST['create'] != 1) - { - $app->tform->errorMessage = 'DUMMY'; - $app->tpl->setVar($this->dataRecord); - $this->onShow(); - return; - } - - // Domain OK, continue - $remote = new remote_actions; - - // client prefix and group id - $res = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_id'])); - $client_group_id = $res['groupid']; - $client_prefix = 'c'.$fields['client_id']; - - // add domain. Llamada que inserta el dominio en la tabla domain - $domain_id = $remote->insert_query('../client/form/domain.tform.php', $fields['client_id'], array('domain' => $fields['domain'])); - - - //Carga del formulario dns_soa para guardar en base de datos - $tform_def_file = "../dns/form/dns_soa.tform.php"; - $app->tform->loadFormDef($tform_def_file); - - // Carga y seleccion de dns_template, si no esta creado se informa de que tiene que crearse - $template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE visible = 'Y' AND name = 'webdns'"); /*'open6hosting'");*/ - - /*if($template_record) { - //echo '

Teplate '.$template_record.', '; - $app->tform->errorMessage = 'Error hay que crear un template llamado webdns'; - $this->onError(); - return; - } else { - $app->tform->errorMessage = 'Error hay que crear un template llamado webdnsssssss'; - $this->onError(); - return; - }*/ - - /*if($app->tform->errorMessage) - { - $this->onError(); - return; - }*/ - - //$template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE visible = 'Y' AND name = 'webdns'"); /*'open6hosting'");*/ - - //Llamada a la tabla server_ip para recuperar la ip4 e ip6 - $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = ".$app->functions->intval($fields['client_id']. " AND ip_type='IPv4'")); - - $dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = ".$fields['client_id']." AND ip_type='IPv6'"); - - //Comprobamos que el resultado para el cliente seleccionado no esta vacío, - //si lo esta tomamos los datos del cliente id 0 - if(!$dns_ip_servidor_ipv6){ - $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 0 AND ip_type='IPv4'"); - $dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 0 AND ip_type='IPv6'"); - /*echo '

Valor de la consulta '.$dns_ip_servidor_ipv6[ip_address].' '; - echo '

Valor de la consulta '.$dns_ip_servidor[ip_address].' ';*/ - } - - - $tpl_content = $template_record['template']; - // Reemplazo la variable que nos encontramos en base de datos por el valor que se ha introducido en el formulario - $tpl_content = str_replace('{DOMAIN}', $fields['domain'], $tpl_content); - - //Carga de los datos en las variables ns - $tpl_content = str_replace('{IP}', $dns_ip_servidor['ip_address'], $tpl_content); - $tpl_content = str_replace('{IPV6}', $dns_ip_servidor_ipv6['ip_address'], $tpl_content); - /*$tpl_content = str_replace('{NS1}', '.open6servers.com', $tpl_content); - $tpl_content = str_replace('{NS2}', '.open6servers.com', $tpl_content); */ - - $enable_dnssec = 'N';//(($_POST['dns_dnssec'] == 'Y') ? 'Y' : 'N'); - - // Parse the template - $tpl_rows = explode("\n", $tpl_content); - $section = ''; - $vars = array(); - $vars['xfer']=''; - $dns_rr = array(); - foreach($tpl_rows as $row) { - $row = trim($row); - if(substr($row, 0, 1) == '[') { - if($row == '[ZONE]') { - $section = 'zone'; - } elseif($row == '[DNS_RECORDS]') { - $section = 'dns_records'; - } else { - die('Unknown section type'); - } - } else { - if($row != '') { - // Handle zone section - if($section == 'zone') { - $parts = explode('=', $row); - $key = trim($parts[0]); - $val = trim($parts[1]); - if($key != '') $vars[$key] = $val; - } - // Handle DNS Record rows - if($section == 'dns_records') { - $parts = explode('|', $row); - $dns_rr[] = array( - 'name' => $parts[1], - 'type' => $parts[0], - 'data' => $parts[2], - 'aux' => $parts[3], - 'ttl' => $parts[4] - ); - } - } - } - } // end foreach - - - - $dns_error = ''; - - /*if($vars['origin'] == '') $dns_error .= $app->lng('error_origin_empty').'
'; - if($vars['ns'] == '') $dns_error .= $app->lng('error_ns_empty').'
'; - if($vars['mbox'] == '') $dns_error .= $app->lng('error_mbox_empty').'
'; - if($vars['refresh'] == '') $dns_error .= $app->lng('error_refresh_empty').'
'; - if($vars['retry'] == '') $dns_error .= $app->lng('error_retry_empty').'
'; - if($vars['expire'] == '') $dns_error .= $app->lng('error_expire_empty').'
'; - if($vars['minimum'] == '') $dns_error .= $app->lng('error_minimum_empty').'
'; - if($vars['ttl'] == '') $dns_error .= $app->lng('error_ttl_empty').'
'; - - // check for dns errors - if($dns_error) - { - $app->tform->errorMessage = $dns_error; - $this->onError(); - return; - }*/ - - //Llamada a la tabla client para recuperar el client_id y su default_dnsserver - $dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_id'])); - $valor_recuperado1 = $dns_servidor['client_id']; - /*$valor_recuperado2 = $dns_servidor['default_dnsserver']; - $valor_recuperado3 = $dns_servidor['default_webserver']; -*/ - // Insert the soa record - $sys_userid = $_SESSION['s']['user']['userid']; - $origin = $vars['origin']; - $ns = $vars['ns']; - $mbox = str_replace('@', '.', $vars['mbox']); - $refresh = $vars['refresh']; - $retry = $vars['retry']; - $expire = $vars['expire']; - $minimum = $vars['minimum']; - $ttl = $vars['ttl']; - $xfer = $vars['xfer']; - $also_notify = $vars['also_notify']; - $update_acl = $vars['update_acl']; - $serial = $app->validate_dns->increase_serial(0); - - $insert_data = array( - "sys_userid" => $sys_userid, - "sys_groupid" => $client_group_id, - "sys_perm_user" => 'riud', - "sys_perm_group" => 'riud', - "sys_perm_other" => '', - "server_id" => $dns_servidor['default_dnsserver'], - "origin" => $origin, - "ns" => $ns, - "mbox" => $mbox, - "serial" => $serial, - "refresh" => $refresh, - "retry" => $retry, - "expire" => $expire, - "minimum" => $minimum, - "ttl" => $ttl, - "active" => 'Y', - "xfer" => $xfer, - "also_notify" => $also_notify, - "update_acl" => $update_acl, - "dnssec_wanted" => $enable_dnssec - ); - $dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id'); - - // Insert the dns_rr records - if(is_array($dns_rr) && $dns_soa_id > 0) { - foreach($dns_rr as $rr) { - $insert_data = array( - "sys_userid" => $sys_userid, - "sys_groupid" => $client_group_id, - "sys_perm_user" => 'riud', - "sys_perm_group" => 'riud', - "sys_perm_other" => '', - "server_id" => $dns_servidor['default_dnsserver'], - "zone" => $dns_soa_id, - "name" => $rr['name'], - "type" => $rr['type'], - "data" => $rr['data'], - "aux" => $rr['aux'], - "ttl" => $rr['ttl'], - "active" => 'Y' - ); - $dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id'); - } - } - //sites_web_domain_add - $tform_def_file = "../sites/form/web_vhost_domain.tform.php"; - $app->tform->loadFormDef($tform_def_file); - - //$app->remoting_lib->loadFormDef($tform_def_file); - - // add site - $paramsite = array( - 'type' => 'vhost', - 'domain' => $fields['domain'], - 'server_id' => $dns_servidor['default_webserver'], - 'ip_address' => '*', //$dns_ip_servidor['ip_address'], - 'ipv6_address' => $dns_ip_servidor_ipv6['ip_address'], - 'traffic_quota' => '-1', - 'hd_quota' => '0', - 'cgi' => 'y', - 'ssi' => 'y', - 'suexec' => 'y', - 'ruby' => 'n', - 'python' => 'n', - 'perl' => 'n', - 'errordocs' => '1', - 'subdomain' => 'www', - 'php' => 'php-fpm', - 'fastcgi_php_version' => '', - 'seo_redirect' => '', - 'rewrite_to_https' => 'n', - 'allow_override' => 'All', - 'http_port' => 80, - 'https_port' => 443, - 'apache_directives' => '', - 'nginx_directives' => '', - 'php_fpm_use_socket' => 'y', - 'pm' => 'ondemand', - 'pm_max_children' => 10, - 'pm_start_servers' => 1, - 'pm_min_spare_servers' => 1, - 'pm_max_spare_servers' => 5, - 'pm_process_idle_timeout' => 10, - 'pm_max_requests' => 0, - 'custom_php_ini' => '', - 'active' => 'y', - 'document_root' => '-', - 'system_user' => '-', - 'system_group' => '-', - 'log_retention' => 30, - 'client_group_id' => $client_group_id, - ); - - //El último parámetro es para lanzar un evento que llama a la función on_after_insert que prepara los campos document_root, system_user y system_group - $site_id = $remote->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert'); - - // get site data - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../sites/form/web_vhost_domain.tform.php'); - $site_data = $app->remoting_lib->getDataRecord($site_id); - - //$remote->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $paramsite); - - //Si todo va bien, el resultado - echo '

Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente!
'; - - - //parent::onSubmit(); - } - -} - -class remote_actions extends remoting { - public function insert_query($formdef_file, $client_id, $params, $event_identifier = '') { - return $this->insertQuery($formdef_file, $client_id, $params, $event_identifier); - } -} - -$page = new page_action; -$page->onLoad(); diff --git a/pdf_o6h.php b/pdf_o6h.php new file mode 100755 index 0000000..a920b6f --- /dev/null +++ b/pdf_o6h.php @@ -0,0 +1,149 @@ +/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); + foreach($a as $i=>$e) + { + if($i%2==0) + { + // Text + if($this->HREF) + $this->PutLink($this->HREF,$e); + else + $this->Write(5,$e); + } + else + { + // Etiqueta + if($e[0]=='/') + $this->CloseTag(strtoupper(substr($e,1))); + else + { + // Extraer atributos + $a2 = explode(' ',$e); + $tag = strtoupper(array_shift($a2)); + $attr = array(); + foreach($a2 as $v) + { + if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3)) + $attr[strtoupper($a3[1])] = $a3[2]; + } + $this->OpenTag($tag,$attr); + } + } + } +} + +function OpenTag($tag, $attr) +{ + // Etiqueta de apertura + if($tag=='B' || $tag=='I' || $tag=='U') + $this->SetStyle($tag,true); + if($tag=='A') + $this->HREF = $attr['HREF']; + if($tag=='BR') + $this->Ln(5); +} + +function CloseTag($tag) +{ + // Etiqueta de cierre + if($tag=='B' || $tag=='I' || $tag=='U') + $this->SetStyle($tag,false); + if($tag=='A') + $this->HREF = ''; +} + +function SetStyle($tag, $enable) +{ + // Modificar estilo y escoger la fuente correspondiente + $this->$tag += ($enable ? 1 : -1); + $style = ''; + foreach(array('B', 'I', 'U') as $s) + { + if($this->$s>0) + $style .= $s; + } + $this->SetFont('',$style); +} + +function PutLink($URL, $txt) +{ + // Escribir un hiper-enlace + $this->SetTextColor(0,0,255); + $this->SetStyle('U',true); + $this->Write(5,$txt,$URL); + $this->SetStyle('U',false); + $this->SetTextColor(0); +} +} + + +$info = $_POST['pdf_power']; + +//echo "La información en directorio ispconfig: ".$info; + + +echo '
'; +echo ''; +//echo ''; +/*echo 'FueraPDF'; +*/ +echo '
'; + +echo ''; +//echo $info; + +//header('Location: crear_pdf_o6h.php'); +/* +?> + +*/ \ No newline at end of file