Browse Source

Merge pull request #2459 from nosolored/1.11.x_test2pdf

test2pdf plugin: Applied mpdf library + format code
Julio Montoya 7 years ago
parent
commit
b9889633e6
38 changed files with 176 additions and 2630 deletions
  1. 1 0
      plugin/test2pdf/README.md
  2. 0 10
      plugin/test2pdf/class/font/courier.php
  3. 0 10
      plugin/test2pdf/class/font/courierb.php
  4. 0 10
      plugin/test2pdf/class/font/courierbi.php
  5. 0 10
      plugin/test2pdf/class/font/courieri.php
  6. 0 21
      plugin/test2pdf/class/font/helvetica.php
  7. 0 21
      plugin/test2pdf/class/font/helveticab.php
  8. 0 21
      plugin/test2pdf/class/font/helveticabi.php
  9. 0 21
      plugin/test2pdf/class/font/helveticai.php
  10. 0 20
      plugin/test2pdf/class/font/symbol.php
  11. 0 21
      plugin/test2pdf/class/font/times.php
  12. 0 21
      plugin/test2pdf/class/font/timesb.php
  13. 0 21
      plugin/test2pdf/class/font/timesbi.php
  14. 0 21
      plugin/test2pdf/class/font/timesi.php
  15. 0 20
      plugin/test2pdf/class/font/zapfdingbats.php
  16. 0 1898
      plugin/test2pdf/class/fpdf.php
  17. 8 4
      plugin/test2pdf/config.php
  18. 0 27
      plugin/test2pdf/database.php
  19. 1 1
      plugin/test2pdf/index.php
  20. 1 1
      plugin/test2pdf/install.php
  21. 1 1
      plugin/test2pdf/plugin.php
  22. 0 3
      plugin/test2pdf/resources/css/style.css
  23. BIN
      plugin/test2pdf/resources/img/128/accept.png
  24. BIN
      plugin/test2pdf/resources/img/24/download.png
  25. BIN
      plugin/test2pdf/resources/img/24/info.png
  26. BIN
      plugin/test2pdf/resources/img/32/accept.png
  27. BIN
      plugin/test2pdf/resources/img/32/download.png
  28. BIN
      plugin/test2pdf/resources/img/32/info.png
  29. BIN
      plugin/test2pdf/resources/img/64/download.png
  30. BIN
      plugin/test2pdf/resources/img/64/info.png
  31. BIN
      plugin/test2pdf/resources/img/logo.png
  32. 61 271
      plugin/test2pdf/src/download-pdf.php
  33. 60 124
      plugin/test2pdf/src/test2pdf.lib.php
  34. 12 21
      plugin/test2pdf/src/test2pdf_plugin.class.php
  35. 15 16
      plugin/test2pdf/src/view-pdf.php
  36. 9 8
      plugin/test2pdf/start.php
  37. 1 1
      plugin/test2pdf/uninstall.php
  38. 6 6
      plugin/test2pdf/view/view-pdf.tpl

+ 1 - 0
plugin/test2pdf/README.md

@@ -2,6 +2,7 @@ Test2Pdf plugin
 ===============
 ===============
 
 
 This plugin allows you to export questions from exercises to PDF
 This plugin allows you to export questions from exercises to PDF
+
 Este plugin da la posibilidad de obtener en formato PDF aquellas preguntas tipos test en los ejercicios de un curso.
 Este plugin da la posibilidad de obtener en formato PDF aquellas preguntas tipos test en los ejercicios de un curso.
 
 
 Credits
 Credits

+ 0 - 10
plugin/test2pdf/class/font/courier.php

@@ -1,10 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Courier';
-$up = -100;
-$ut = 50;
-for($i=0;$i<=255;$i++)
-	$cw[chr($i)] = 600;
-$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));
-?>

+ 0 - 10
plugin/test2pdf/class/font/courierb.php

@@ -1,10 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Courier-Bold';
-$up = -100;
-$ut = 50;
-for($i=0;$i<=255;$i++)
-	$cw[chr($i)] = 600;
-$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));
-?>

+ 0 - 10
plugin/test2pdf/class/font/courierbi.php

@@ -1,10 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Courier-BoldOblique';
-$up = -100;
-$ut = 50;
-for($i=0;$i<=255;$i++)
-	$cw[chr($i)] = 600;
-$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));
-?>

+ 0 - 10
plugin/test2pdf/class/font/courieri.php

@@ -1,10 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Courier-Oblique';
-$up = -100;
-$ut = 50;
-for($i=0;$i<=255;$i++)
-	$cw[chr($i)] = 600;
-$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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/helvetica.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Helvetica';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/helveticab.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Helvetica-Bold';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/helveticabi.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Helvetica-BoldOblique';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/helveticai.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Helvetica-Oblique';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 20
plugin/test2pdf/class/font/symbol.php

@@ -1,20 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Symbol';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/times.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Times-Roman';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/timesb.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Times-Bold';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/timesbi.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Times-BoldItalic';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 21
plugin/test2pdf/class/font/timesi.php

@@ -1,21 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'Times-Italic';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 20
plugin/test2pdf/class/font/zapfdingbats.php

@@ -1,20 +0,0 @@
-<?php
-$type = 'Core';
-$name = 'ZapfDingbats';
-$up = -100;
-$ut = 50;
-$cw = array(
-	chr(0)=>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));
-?>

+ 0 - 1898
plugin/test2pdf/class/fpdf.php

@@ -1,1898 +0,0 @@
-<?php
-/*******************************************************************************
-* FPDF                                                                         *
-*                                                                              *
-* Version: 1.81                                                                *
-* Date:    2015-12-20                                                          *
-* Author:  Olivier PLATHEY                                                     *
-*******************************************************************************/
-
-define('FPDF_VERSION','1.81');
-
-class FPDF
-{
-protected $page;               // current page number
-protected $n;                  // current object number
-protected $offsets;            // array of object offsets
-protected $buffer;             // buffer holding in-memory PDF
-protected $pages;              // array containing pages
-protected $state;              // current document state
-protected $compress;           // compression flag
-protected $k;                  // scale factor (number of points in user unit)
-protected $DefOrientation;     // default orientation
-protected $CurOrientation;     // current orientation
-protected $StdPageSizes;       // standard page sizes
-protected $DefPageSize;        // default page size
-protected $CurPageSize;        // current page size
-protected $CurRotation;        // current page rotation
-protected $PageInfo;           // page-related data
-protected $wPt, $hPt;          // dimensions of current page in points
-protected $w, $h;              // dimensions of current page in user unit
-protected $lMargin;            // left margin
-protected $tMargin;            // top margin
-protected $rMargin;            // right margin
-protected $bMargin;            // page break margin
-protected $cMargin;            // cell margin
-protected $x, $y;              // current position in user unit
-protected $lasth;              // height of last printed cell
-protected $LineWidth;          // line width in user unit
-protected $fontpath;           // path containing fonts
-protected $CoreFonts;          // array of core font names
-protected $fonts;              // array of used fonts
-protected $FontFiles;          // array of font files
-protected $encodings;          // array of encodings
-protected $cmaps;              // array of ToUnicode CMaps
-protected $FontFamily;         // current font family
-protected $FontStyle;          // current font style
-protected $underline;          // underlining flag
-protected $CurrentFont;        // current font info
-protected $FontSizePt;         // current font size in points
-protected $FontSize;           // current font size in user unit
-protected $DrawColor;          // commands for drawing color
-protected $FillColor;          // commands for filling color
-protected $TextColor;          // commands for text color
-protected $ColorFlag;          // indicates whether fill and text colors are different
-protected $WithAlpha;          // indicates whether alpha channel is used
-protected $ws;                 // word spacing
-protected $images;             // array of used images
-protected $PageLinks;          // array of links in pages
-protected $links;              // array of internal links
-protected $AutoPageBreak;      // automatic page breaking
-protected $PageBreakTrigger;   // threshold used to trigger page breaks
-protected $InHeader;           // flag set when processing header
-protected $InFooter;           // flag set when processing footer
-protected $AliasNbPages;       // alias for total number of pages
-protected $ZoomMode;           // zoom display mode
-protected $LayoutMode;         // layout display mode
-protected $metadata;           // document properties
-protected $PDFVersion;         // PDF version number
-
-/*******************************************************************************
-*                               Public methods                                 *
-*******************************************************************************/
-
-function __construct($orientation='P', $unit='mm', $size='A4')
-{
-	// Some checks
-	$this->_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('<</Type /Page');
-	$this->_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 .= '<</Type /Annot /Subtype /Link /Rect ['.$rect.'] /Border [0 0 0] ';
-			if(is_string($pl[4]))
-				$annots .= '/A <</S /URI /URI '.$this->_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 <</Type /Group /S /Transparency /CS /DeviceRGB>>');
-	$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('<</Type /Pages');
-	$kids = '/Kids [';
-	for($n=1;$n<=$nb;$n++)
-		$kids .= $this->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('<</Length '.strlen($font));
-		if($compressed)
-			$this->_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('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$font['diff'].']>>');
-				$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('<</Type /Font');
-			$this->_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('<</Type /Font');
-			$this->_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 = '<</Type /FontDescriptor /FontName /'.$name;
-			foreach($font['desc'] as $k=>$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 .= "<</Registry (Adobe)\n";
-	$s .= "/Ordering (UCS)\n";
-	$s .= "/Supplement 0\n";
-	$s .= ">> def\n";
-	$s .= "/CMapName /Adobe-Identity-UCS def\n";
-	$s .= "/CMapType 2 def\n";
-	$s .= "1 begincodespacerange\n";
-	$s .= "<00> <FF>\n";
-	$s .= "endcodespacerange\n";
-	if($nbr>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('<</Type /XObject');
-	$this->_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<count($info['trns']);$i++)
-			$trns .= $info['trns'][$i].' '.$info['trns'][$i].' ';
-		$this->_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;
-}
-}
-?>

+ 8 - 4
plugin/test2pdf/config.php

@@ -1,8 +1,12 @@
 <?php
 <?php
 /* For licensing terms, see /license.txt */
 /* For licensing terms, see /license.txt */
-
-define('TABLE_TEST2PDF', 'plugin_ranking_score_global');
-
+/**
+ * Config the plugin.
+ *
+ * @package chamilo.plugin.test2pdf
+ *
+ * @author Jose Angel Ruiz <desarrollo@nosolored.com>
+ */
 require_once __DIR__.'/../../main/inc/global.inc.php';
 require_once __DIR__.'/../../main/inc/global.inc.php';
-require_once api_get_path(LIBRARY_PATH).'plugin.class.php';
+require_once 'src/test2pdf.lib.php';
 require_once api_get_path(SYS_PLUGIN_PATH).'test2pdf/src/test2pdf_plugin.class.php';
 require_once api_get_path(SYS_PLUGIN_PATH).'test2pdf/src/test2pdf_plugin.class.php';

+ 0 - 27
plugin/test2pdf/database.php

@@ -1,27 +0,0 @@
-<?php
-/* For license terms, see /license.txt */
-/**
- * Plugin database installation script. Can only be executed if included
- * inside another script loading global.inc.php.
- *
- * @package chamilo.plugin.test2pdf
- */
-/**
- * Check if script can be called.
- */
-if (!function_exists('api_get_path')) {
-    die('This script must be loaded through the Chamilo plugin installer sequence');
-}
-/**
- * Create the script context, then execute database queries to enable.
- */
-$table = Database::get_main_table(TABLE_TEST2PDF);
-/*
-$sql = "CREATE TABLE IF NOT EXISTS $table (
-    id INT unsigned NOT NULL auto_increment PRIMARY KEY,
-    tool_id INT unsigned NOT NULL DEFAULT '0',
-    score INT,
-    enable INT(1)
-    )";
-Database::query($sql);
-*/

+ 1 - 1
plugin/test2pdf/index.php

@@ -4,4 +4,4 @@
  * Show form.
  * Show form.
  */
  */
 require_once 'config.php';
 require_once 'config.php';
-//require_once('src/index.test2pdf.php');
+require_once 'src/index.test2pdf.php';

+ 1 - 1
plugin/test2pdf/install.php

@@ -9,7 +9,7 @@
 /**
 /**
  * Initialization.
  * Initialization.
  */
  */
-require_once dirname(__FILE__).'/config.php';
+require_once __DIR__.'/config.php';
 if (!api_is_platform_admin()) {
 if (!api_is_platform_admin()) {
     die('You must have admin permissions to install plugins');
     die('You must have admin permissions to install plugins');
 }
 }

+ 1 - 1
plugin/test2pdf/plugin.php

@@ -9,5 +9,5 @@
 /**
 /**
  * Plugin details (must be present).
  * Plugin details (must be present).
  */
  */
-require_once dirname(__FILE__).'/config.php';
+require_once __DIR__.'/config.php';
 $plugin_info = Test2pdfPlugin::create()->get_info();
 $plugin_info = Test2pdfPlugin::create()->get_info();

+ 0 - 3
plugin/test2pdf/resources/css/style.css

@@ -1,6 +1,3 @@
-.ta-center{
-	text-align:center;	
-}
 #courses_table td.valign-middle{
 #courses_table td.valign-middle{
 	vertical-align: middle;
 	vertical-align: middle;
 }
 }

BIN
plugin/test2pdf/resources/img/128/accept.png


BIN
plugin/test2pdf/resources/img/24/download.png


BIN
plugin/test2pdf/resources/img/24/info.png


BIN
plugin/test2pdf/resources/img/32/accept.png


BIN
plugin/test2pdf/resources/img/32/download.png


BIN
plugin/test2pdf/resources/img/32/info.png


BIN
plugin/test2pdf/resources/img/64/download.png


BIN
plugin/test2pdf/resources/img/64/info.png


BIN
plugin/test2pdf/resources/img/logo.png


+ 61 - 271
plugin/test2pdf/src/download-pdf.php

@@ -1,281 +1,66 @@
 <?php
 <?php
 /* For license terms, see /license.txt */
 /* For license terms, see /license.txt */
-/**
- * Configuration script for the Ranking plugin.
- *
- * @package chamilo.plugin.ranking
- */
-require_once '../../../main/inc/global.inc.php';
 
 
-$test2pdfPlugin = Test2pdfPlugin::create();
-$enable = $test2pdfPlugin->get('enable_plugin');
-if ($enable != "true") {
+require_once '../config.php';
+
+$plugin = Test2pdfPlugin::create();
+$enable = $plugin->get('enable_plugin') == 'true';
+if (!$enable) {
     header('Location: ../../../index.php');
     header('Location: ../../../index.php');
+    exit;
 }
 }
 
 
 api_protect_course_script();
 api_protect_course_script();
 
 
-$course_id = (int) $_GET['c_id'];
-$id_quiz = (int) $_GET['id_quiz'];
-
-class TestToPDF extends FPDF
-{
-    public $B;
-    public $I;
-    public $U;
-    public $HREF;
-    public $fontList;
-    public $issetfont;
-    public $issetcolor;
-
-    public function Header()
-    {
-        global $title_course;
-        global $title_quiz;
-
-        $logo = '../resources/img/logo.png';
-        $this->Image($logo, 10, 0);
-
-        // Title
-        $this->SetFont('Courier', 'I', 14);
-        $this->Cell(0, 5, $title_course, 0, 1, 'R');
-        $this->SetFont('Helvetica', 'I', 14);
-        $this->Cell(0, 5, $title_quiz, 0, 1, 'R');
-
-        // Line break
-        $this->SetLineWidth(0.5);
-        $this->SetDrawColor(60, 120, 255);
-        $this->Line(10, 24, 200, 24);
-        $this->SetLineWidth(0.4);
-        $this->SetDrawColor(200);
-        $this->Line(11, 24.5, 199, 24.5);
-        $this->Ln(10);
-    }
-
-    public function Footer()
-    {
-        global $test2pdfPlugin;
-        // Position at 1.5 cm from bottom
-        $this->SetY(-15);
-        $y = $this->GetY();
-        // Line break
-        $this->SetLineWidth(0.5);
-        $this->SetDrawColor(60, 120, 255);
-        $this->Line(10, $y, 200, $y);
-        $this->SetLineWidth(0.4);
-        $this->SetDrawColor(200);
-        $this->Line(11, $y + 0.5, 199, $y + 0.5);
-
-        // Arial italic 8
-        $this->SetFont('Arial', 'I', 8);
-        // Text color in gray
-        $this->SetTextColor(128);
-        // Page number
-        $this->Cell(0, 10, utf8_decode(sprintf($test2pdfPlugin->get_lang('PageX'), $this->PageNo())), 0, 0, 'C');
-        $this->Cell(0, 10, date('Y'), 0, 0, 'R');
-    }
-
-    public function PDF($orientation = 'P', $unit = 'mm', $format = 'A4')
-    {
-        //Call parent constructor
-        $this->__construct($orientation, $unit, $format);
-        //Initialization
-        $this->B = 0;
-        $this->I = 0;
-        $this->U = 0;
-        $this->HREF = '';
-        $this->fontlist = ['arial', 'times', 'courier', 'helvetica', 'symbol'];
-        $this->issetfont = false;
-        $this->issetcolor = false;
-    }
-
-    public function WriteHTML($html)
-    {
-        //HTML parser
-        $html = strip_tags($html, "<b><u><i><a><img><p><br><strong><em><font><tr><blockquote><style>"); //supprime tous les tags sauf ceux reconnus
-        $html = str_replace("\n", ' ', $html); //remplace retour à la ligne par un espace
-        $a = preg_split('/<(.*)>/U', $html, -1, PREG_SPLIT_DELIM_CAPTURE); //éclate la chaîne avec les balises
-        foreach ($a as $i => $e) {
-            if ($i % 2 == 0) {
-                //Text
-                if ($this->HREF) {
-                    $this->PutLink($this->HREF, $e);
-                } else {
-                    $this->Write(5, stripslashes(txtentities($e)));
-                }
-            } else {
-                //Tag
-                if ($e[0] == '/') {
-                    $this->CloseTag(strtoupper(substr($e, 1)));
-                } else {
-                    //Extract attributes
-                    $a2 = explode(' ', $e);
-                    $tag = strtoupper(array_shift($a2));
-                    $attr = [];
-                    foreach ($a2 as $v) {
-                        if (preg_match('/([^=]*)=["\']?([^"\']*)/', $v, $a3)) {
-                            $attr[strtoupper($a3[1])] = $a3[2];
-                        }
-                    }
-                    $this->OpenTag($tag, $attr);
-                }
-            }
-        }
-    }
-
-    public function OpenTag($tag, $attr)
-    {
-        //Opening tag
-        switch ($tag) {
-            case 'STRONG':
-                $this->SetStyle('B', true);
-                break;
-            case 'EM':
-                $this->SetStyle('I', true);
-                break;
-            case 'B':
-            case 'I':
-            case 'U':
-                $this->SetStyle($tag, true);
-                break;
-            case 'A':
-                $this->HREF = $attr['HREF'];
-                break;
-            case 'IMG':
-                if (isset($attr['SRC']) && (isset($attr['WIDTH']) || isset($attr['HEIGHT']))) {
-                    if (!isset($attr['WIDTH'])) {
-                        $attr['WIDTH'] = 0;
-                    }
-                    if (!isset($attr['HEIGHT'])) {
-                        $attr['HEIGHT'] = 0;
-                    }
-                    $this->Image($attr['SRC'], $this->GetX(), $this->GetY(), px2mm($attr['WIDTH']), px2mm($attr['HEIGHT']));
-                }
-                break;
-            case 'TR':
-            case 'BLOCKQUOTE':
-            case 'BR':
-                $this->Ln(5);
-                break;
-            case 'P':
-                $this->Ln(10);
-                break;
-            case 'FONT':
-                if (isset($attr['COLOR']) && $attr['COLOR'] != '') {
-                    $coul = hex2dec($attr['COLOR']);
-                    $this->SetTextColor($coul['R'], $coul['V'], $coul['B']);
-                    $this->issetcolor = true;
-                }
-                if (isset($attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist)) {
-                    $this->SetFont(strtolower($attr['FACE']));
-                    $this->issetfont = true;
-                }
-                break;
-        }
-    }
+$courseId = intval($_GET['c_id']);
+$sessionId = api_get_session_id();
+$quizId = intval($_GET['id_quiz']);
 
 
-    public function CloseTag($tag)
-    {
-        //Closing tag
-        if ($tag == 'STRONG') {
-            $tag = 'B';
-        }
-        if ($tag == 'EM') {
-            $tag = 'I';
-        }
-        if ($tag == 'B' || $tag == 'I' || $tag == 'U') {
-            $this->SetStyle($tag, false);
-        }
-        if ($tag == 'A') {
-            $this->HREF = '';
-        }
-        if ($tag == 'FONT') {
-            if ($this->issetcolor == true) {
-                $this->SetTextColor(0);
-            }
-            if ($this->issetfont) {
-                $this->SetFont('arial');
-                $this->issetfont = false;
-            }
-        }
-    }
+$infoCourse = api_get_course_info_by_id($courseId);
+$infoQuiz = getInfoQuiz($courseId, $quizId);
+$titleCourse = removeHtml($infoCourse['title']);
+$titleQuiz = removeHtml($infoQuiz['title']);
 
 
-    public function SetStyle($tag, $enable)
-    {
-        //Modify style and select corresponding font
-        $this->$tag += ($enable ? 1 : -1);
-        $style = '';
-        foreach (['B', 'I', 'U'] as $s) {
-            if ($this->$s > 0) {
-                $style .= $s;
-            }
-        }
-        $this->SetFont('', $style);
-    }
+$mpdf = new PDF();
+$mpdf->set_header($infoCourse);
+$mpdf->set_footer();
+$pdf = $mpdf->pdf;
+$pdf->SetTitle($titleCourse.' - '.$titleQuiz);
+$pdf->AddPage();
 
 
-    public function PutLink($URL, $txt)
-    {
-        //Put a hyperlink
-        $this->SetTextColor(0, 0, 255);
-        $this->SetStyle('U', true);
-        $this->Write(5, $txt, $URL);
-        $this->SetStyle('U', false);
-        $this->SetTextColor(0);
-    }
+$pdf->SetFont('Arial', '', 16);
+$pdf->SetTextColor(64);
+$pdf->MultiCell(0, 7, $infoQuiz['title'], 0, 'L', false);
+if (!empty($infoQuiz['description'])) {
+    $pdf->WriteHTML(removeQuotes($infoQuiz['description']));
 }
 }
 
 
-//Obtener nombre del curso y nombre del ejercicio
-//$info_course = CourseManager::get_course_information_by_id($course_id);
-$info_course = api_get_course_info_by_id($course_id);
-$info_quiz = getInfoQuiz($course_id, $id_quiz);
-$title_course = utf8_decode(removeHtml($info_course['title']));
-$title_quiz = utf8_decode(removeHtml($info_quiz['title']));
-
-$pdf = new TestToPDF();
-$pdf->SetTitle($title_course.' - '.$title_quiz);
-$pdf->AddPage();
-
 // Select all questions of the supported types from the given course
 // Select all questions of the supported types from the given course
-$array_question_id = getQuestions($course_id, $id_quiz);
+$questionsList = getQuestions($courseId, $quizId, $sessionId);
 
 
 // Go through all questions and get the answers
 // Go through all questions and get the answers
 if ($_GET['type'] == 'question' || $_GET['type'] == 'all') {
 if ($_GET['type'] == 'question' || $_GET['type'] == 'all') {
     $j = 1;
     $j = 1;
-    foreach ($array_question_id as $key => $value) {
-        $InfoQuestion = getInfoQuestion($course_id, $value);
-        if ($pdf->GetY() > 240) {
+    foreach ($questionsList as $key => $value) {
+        $infoQuestion = getInfoQuestion($courseId, $value);
+        if ($pdf->y > 240) {
             $pdf->AddPage();
             $pdf->AddPage();
         }
         }
         $pdf->SetFont('Arial', '', 12);
         $pdf->SetFont('Arial', '', 12);
         $pdf->SetTextColor(64);
         $pdf->SetTextColor(64);
-
-        if (trim($InfoQuestion['description']) != '') {
-            $j = 0;
-            $pdf->WriteHTML(utf8_decode(removeQuotes($InfoQuestion['description'])));
-            $pdf->Ln();
-        } else {
-            $pdf->MultiCell(0, 7, ($key + $j).' - '.utf8_decode($InfoQuestion['question']), 0, 'L', false);
+        $pdf->MultiCell(0, 7, ($key + $j).' - '.$infoQuestion['question'], 0, 'L', false);
+        if (!empty($infoQuestion['description'])) {
+            $pdf->WriteHTML(removeQuotes($infoQuestion['description']));
         }
         }
-        /*
 
 
-        if($InfoQuestion['question'] == "Enunciado"){
-            $j = 0;
-            $pdf->MultiCell(0,7,utf8_decode($InfoQuestion['question']),0,'L',false);
-            if(trim($InfoQuestion['description'])!=''){
-                $pdf->WriteHTML(utf8_decode(quitar_acentos($InfoQuestion['description'])));
-                $pdf->Ln();
-            }
-        }else{
-            $pdf->MultiCell(0,7,($key+$j).' - '.utf8_decode($InfoQuestion['question']),0,'L',false);
-        }*/
-        $InfoAnswer = getAnswers($course_id, $value);
-        foreach ($InfoAnswer as $key2 => $value2) {
+        $infoAnswer = getAnswers($courseId, $value);
+        foreach ($infoAnswer as $key2 => $value2) {
             $pdf->SetFont('Arial', 'I', 10);
             $pdf->SetFont('Arial', 'I', 10);
             $pdf->SetTextColor(96);
             $pdf->SetTextColor(96);
             $pdf->Cell(1, 7, '', 0, 0);
             $pdf->Cell(1, 7, '', 0, 0);
-            $pdf->Rect($pdf->GetX() + 2, $pdf->GetY(), 4, 4);
+            $pdf->Rect($pdf->x + 2, $pdf->y, 4, 4);
             $pdf->Cell(7, 7, '', 0, 0);
             $pdf->Cell(7, 7, '', 0, 0);
-            $pdf->MultiCell(0, 5, $letters[$key2].' - '.utf8_decode(removeHtml($value2['answer'])), 0, 'L', false);
+            $pdf->MultiCell(0, 5, $letters[$key2].' - '.removeHtml($value2['answer']), 0, 'L', false);
             $pdf->Ln(1);
             $pdf->Ln(1);
         }
         }
         $pdf->Ln(4);
         $pdf->Ln(4);
@@ -283,46 +68,51 @@ if ($_GET['type'] == 'question' || $_GET['type'] == 'all') {
 }
 }
 $j = 1;
 $j = 1;
 if ($_GET['type'] == 'answer' || $_GET['type'] == 'all') {
 if ($_GET['type'] == 'answer' || $_GET['type'] == 'all') {
-    $array_resp = [];
-    foreach ($array_question_id as $key => $value) {
-        $InfoQuestion = getInfoQuestion($course_id, $value);
-        if ($InfoQuestion['question'] == $test2pdfPlugin->get_lang('Statement')) {
+    $answerList = [];
+    foreach ($questionsList as $key => $value) {
+        $infoQuestion = getInfoQuestion($courseId, $value);
+        if ($infoQuestion['question'] == $plugin->get_lang('Statement')) {
             $j = 0;
             $j = 0;
         } else {
         } else {
-            $respuestas = '';
-            $InfoQuestion = getInfoQuestion($course_id, $value);
-            if ($InfoQuestion['type'] == 2 || $InfoQuestion['type'] == 9 || $InfoQuestion['type'] == 11 || $InfoQuestion['type'] == 12 || $InfoQuestion['type'] == 14) {
-                $InfoAnswer = getAnswers($course_id, $value);
-                $respuestas .= ' '.($key + $j).' -';
-                foreach ($InfoAnswer as $key2 => $value2) {
+            $answers = '';
+            $infoQuestion = getInfoQuestion($courseId, $value);
+            if ($infoQuestion['type'] == 2 ||
+                $infoQuestion['type'] == 9 ||
+                $infoQuestion['type'] == 11 ||
+                $infoQuestion['type'] == 12 ||
+                $infoQuestion['type'] == 14
+            ) {
+                $infoAnswer = getAnswers($courseId, $value);
+                $answers .= ' '.($key + $j).' -';
+                foreach ($infoAnswer as $key2 => $value2) {
                     if ($value2['correct'] == 1) {
                     if ($value2['correct'] == 1) {
-                        $respuestas .= ' '.$letters[$key2].',';
+                        $answers .= ' '.$letters[$key2].',';
                     }
                     }
                 }
                 }
-                $i = strrpos($respuestas, ',');
-                $respuestas = substr($respuestas, 0, $i);
-                $respuestas .= ' ';
-                $array_resp[] = $respuestas;
+                $i = strrpos($answers, ',');
+                $answers = substr($answers, 0, $i);
+                $answers .= ' ';
+                $answerList[] = $answers;
             } else {
             } else {
-                $InfoAnswer = getAnswers($course_id, $value);
-                foreach ($InfoAnswer as $key2 => $value2) {
+                $infoAnswer = getAnswers($courseId, $value);
+                foreach ($infoAnswer as $key2 => $value2) {
                     if ($value2['correct'] == 1) {
                     if ($value2['correct'] == 1) {
-                        $respuestas .= ' '.($key + $j).' - '.$letters[$key2].' ';
+                        $answers .= ' '.($key + $j).' - '.$letters[$key2].' ';
                         break;
                         break;
                     }
                     }
                 }
                 }
-                $array_resp[] = $respuestas;
+                $answerList[] = $answers;
             }
             }
         }
         }
     }
     }
     $pdf->SetFont('Arial', '', 12);
     $pdf->SetFont('Arial', '', 12);
     $pdf->SetTextColor(64);
     $pdf->SetTextColor(64);
-    $pdf->Cell(0, 7, utf8_decode($test2pdfPlugin->get_lang('AnswersColumn')), 0, 1, 'L', false);
+    $pdf->Cell(0, 7, $plugin->get_lang('AnswersColumn'), 0, 1, 'L', false);
 
 
     $pdf->SetFont('Arial', 'I', 10);
     $pdf->SetFont('Arial', 'I', 10);
     $pdf->SetTextColor(64, 64, 255);
     $pdf->SetTextColor(64, 64, 255);
     $i = 1;
     $i = 1;
-    foreach ($array_resp as $resp) {
+    foreach ($answerList as $resp) {
         $pdf->Cell(50, 6, $resp, 0);
         $pdf->Cell(50, 6, $resp, 0);
         if ($i % 4 == 0) {
         if ($i % 4 == 0) {
             $pdf->Ln();
             $pdf->Ln();

+ 60 - 124
plugin/test2pdf/src/test2pdf.lib.php

@@ -5,39 +5,32 @@
  *
  *
  * @package chamilo.plugin.test2pdf
  * @package chamilo.plugin.test2pdf
  */
  */
-/**
- * Init.
- */
-require_once '../../../main/inc/global.inc.php';
-require_once '../config.php';
-require_once api_get_path(LIBRARY_PATH).'plugin.class.php';
 
 
 $letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
 $letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
 
 
 /**
 /**
  * List exercises.
  * List exercises.
  *
  *
- * @param int $course_id  Course ID
- * @param int $session_id Session ID
+ * @param int $courseId Course ID
+ * @param int $sessionId Session ID
  *
  *
  * @throws Exception
  * @throws Exception
  *
  *
  * @return array Results (list of exercice details)
  * @return array Results (list of exercice details)
  */
  */
-function showExerciseCourse($course_id, $session_id = 0)
+
+function showExerciseCourse($courseId, $sessionId = 0)
 {
 {
-    $course_id = (int) $course_id;
-    $session_id = (int) $session_id;
     $tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
     $tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
     $tableLpItem = Database::get_course_table(TABLE_LP_ITEM);
     $tableLpItem = Database::get_course_table(TABLE_LP_ITEM);
+    $conditionSession = api_get_session_condition($sessionId, true, true, 'a.session_id');
     $sql = "SELECT a.* 
     $sql = "SELECT a.* 
-      FROM $tableQuiz a 
-        LEFT JOIN $tableLpItem b 
-        ON a.iid = b.path AND a.c_id = b.c_id 
-      WHERE a.c_id = $course_id
-        AND (a.session_id = $session_id OR a.session_id IS NULL) 
-        AND (a.active = 1 OR (item_type = 'quiz' AND b.c_id = $course_id)) 
-        ORDER BY a.title ASC;";
+            FROM $tableQuiz a 
+            LEFT JOIN $tableLpItem b ON a.iid = b.path AND a.c_id = b.c_id 
+            WHERE a.c_id = $courseId
+            AND (a.active = 1 OR (item_type = 'quiz' AND b.c_id = $courseId)) 
+            $conditionSession
+            ORDER BY a.title ASC;";
     $res = Database::query($sql);
     $res = Database::query($sql);
     if (!$res) {
     if (!$res) {
         die("Error Database $tableQuiz");
         die("Error Database $tableQuiz");
@@ -57,12 +50,10 @@ function showExerciseCourse($course_id, $session_id = 0)
  *
  *
  * @return array Results (list of quiz details)
  * @return array Results (list of quiz details)
  */
  */
-function getInfoQuiz($c_id, $id)
+function getInfoQuiz($courseId, $id)
 {
 {
-    $c_id = (int) $c_id;
-    $id = (int) $id;
     $tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
     $tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
-    $sql = "SELECT * FROM $tableQuiz WHERE c_id = $c_id AND iid = $id";
+    $sql = "SELECT * FROM $tableQuiz WHERE c_id = $courseId AND iid = $id";
     $res = Database::query($sql);
     $res = Database::query($sql);
     if (!$res) {
     if (!$res) {
         die("Error Database $tableQuiz");
         die("Error Database $tableQuiz");
@@ -79,18 +70,21 @@ function getInfoQuiz($c_id, $id)
  *
  *
  * @return array Results (list question ID)
  * @return array Results (list question ID)
  */
  */
-function getQuestions($c_id, $quizId)
+function getQuestions($courseId, $quizId, $sessionId = 0)
 {
 {
-    $c_id = (int) $c_id;
-    $quizId = (int) $quizId;
     $tableQuizQuestion = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
     $tableQuizQuestion = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
     $tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
     $tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
+    $tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
+    $conditionSession = api_get_session_condition($sessionId, true, true, 'q.session_id');
+
     $sql = "SELECT a.question_id AS question_id 
     $sql = "SELECT a.question_id AS question_id 
-        FROM $tableQuizQuestion a 
-        INNER JOIN $tableQuestion b ON a.question_id = b.iid 
-        WHERE a.c_id = $c_id AND b.c_id = a.c_id AND a.exercice_id = $quizId 
-        AND (b.type IN (1, 2, 9, 10, 11, 12, 14))
-        ORDER BY question_order ASC;";
+            FROM $tableQuizQuestion a 
+            INNER JOIN $tableQuestion b ON a.question_id = b.iid 
+            INNER JOIN $tableQuiz q ON q.iid = a.exercice_id 
+            WHERE a.c_id = $courseId AND b.c_id = a.c_id AND a.exercice_id = $quizId 
+            AND (b.type IN (1, 2, 9, 10, 11, 12, 14)) 
+            $conditionSession 
+            ORDER BY question_order ASC;";
     $res = Database::query($sql);
     $res = Database::query($sql);
     if (!$res) {
     if (!$res) {
         die("Error Database $tableQuizQuestion");
         die("Error Database $tableQuizQuestion");
@@ -99,7 +93,6 @@ function getQuestions($c_id, $quizId)
     while ($row = Database::fetch_assoc($res)) {
     while ($row = Database::fetch_assoc($res)) {
         $aux[] = $row['question_id'];
         $aux[] = $row['question_id'];
     }
     }
-
     return $aux;
     return $aux;
 }
 }
 
 
@@ -110,15 +103,13 @@ function getQuestions($c_id, $quizId)
  *
  *
  * @return array Results (list of question details)
  * @return array Results (list of question details)
  */
  */
-function getInfoQuestion($c_id, $id)
+function getInfoQuestion($courseId, $id)
 {
 {
-    $c_id = (int) $c_id;
-    $id = (int) $id;
     $tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
     $tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
     $sql = "SELECT * FROM $tableQuestion 
     $sql = "SELECT * FROM $tableQuestion 
-        WHERE c_id = $c_id 
-        AND iid = $id
-        AND (type IN (1, 2, 9, 10, 11, 12, 14))";
+            WHERE c_id = $courseId 
+            AND iid = $id
+            AND (type IN (1, 2, 9, 10, 11, 12, 14))";
     $res = Database::query($sql);
     $res = Database::query($sql);
     if (!$res) {
     if (!$res) {
         die("Error Database $tableQuestion");
         die("Error Database $tableQuestion");
@@ -135,14 +126,12 @@ function getInfoQuestion($c_id, $id)
  *
  *
  * @return array Results (list of answer by question_id)
  * @return array Results (list of answer by question_id)
  */
  */
-function getAnswers($c_id, $id)
+function getAnswers($courseId, $id)
 {
 {
-    $c_id = (int) $c_id;
-    $id = (int) $id;
     $tableQuizAnswer = Database::get_course_table(TABLE_QUIZ_ANSWER);
     $tableQuizAnswer = Database::get_course_table(TABLE_QUIZ_ANSWER);
     $sql = "SELECT * FROM $tableQuizAnswer
     $sql = "SELECT * FROM $tableQuizAnswer
-	    WHERE c_id = $c_id AND question_id = $id
-	    ORDER BY position ASC;";
+    	    WHERE c_id = $courseId AND question_id = $id
+    	    ORDER BY position ASC;";
     $res = Database::query($sql);
     $res = Database::query($sql);
     if (!$res) {
     if (!$res) {
         die("Error Database $tableQuizAnswer");
         die("Error Database $tableQuizAnswer");
@@ -174,37 +163,35 @@ function removeHtml($string)
     $txt = str_replace("</html>", "", $txt);
     $txt = str_replace("</html>", "", $txt);
     $txt = strip_tags($txt);
     $txt = strip_tags($txt);
     $txt = str_replace(chr(13).chr(10), "", $txt);
     $txt = str_replace(chr(13).chr(10), "", $txt);
-
-    /*
-    $txt=str_replace("&nbsp;"," ",$txt);
-    $txt=str_replace("&Aacute;","Á",$txt);
-    $txt=str_replace("&aacute;","á",$txt);
-    $txt=str_replace("&Eacute;","É",$txt);
-    $txt=str_replace("&eacute;","é",$txt);
-    $txt=str_replace("&Iacute;","Í",$txt);
-    $txt=str_replace("&iacute;","í",$txt);
-    $txt=str_replace("&Oacute;","Ó",$txt);
-    $txt=str_replace("&oacute;","ó",$txt);
-    $txt=str_replace("&Uacute;","Ú",$txt);
-    $txt=str_replace("&uacute;","ú",$txt);
-    $txt=str_replace("&Ntilde;","Ñ",$txt);
-    $txt=str_replace("&ntilde;","ñ",$txt);
-    $txt=str_replace("&agrave;","à",$txt);
-    $txt=str_replace("&Agrave;","À",$txt);
-    $txt=str_replace("&iexcl;","¡",$txt);
-    $txt=str_replace("&middot;","·",$txt);
-    $txt=str_replace("&Ccedil;","Ç",$txt);
-    $txt=str_replace("&ccedil;","ç",$txt);
-    $txt=str_replace("&quot;",'"',$txt);
-    $txt=str_replace("&ordf;",'ª',$txt);
-    $txt=str_replace("&ordm;",'º',$txt);
-    $txt=str_replace("&amp;",'&',$txt);
-    $txt=str_replace("&bull;",'•',$txt);
-    $txt=str_replace("&iquest;",'¿',$txt);
-    $txt=str_replace("&euro;",'EUR',$txt);
-    $txt=str_replace("&uuml;",'ü',$txt);
-    $txt=str_replace("&Uuml;",'Ü',$txt);
-    $txt=str_replace("&uml;",'¨',$txt);*/
+    $txt = str_replace("&nbsp;", " ", $txt);
+    $txt = str_replace("&Aacute;", "Á", $txt);
+    $txt = str_replace("&aacute;", "á", $txt);
+    $txt = str_replace("&Eacute;", "É", $txt);
+    $txt = str_replace("&eacute;", "é", $txt);
+    $txt = str_replace("&Iacute;", "Í", $txt);
+    $txt = str_replace("&iacute;", "í", $txt);
+    $txt = str_replace("&Oacute;", "Ó", $txt);
+    $txt = str_replace("&oacute;", "ó", $txt);
+    $txt = str_replace("&Uacute;", "Ú", $txt);
+    $txt = str_replace("&uacute;", "ú", $txt);
+    $txt = str_replace("&Ntilde;", "Ñ", $txt);
+    $txt = str_replace("&ntilde;", "ñ", $txt);
+    $txt = str_replace("&agrave;", "à", $txt);
+    $txt = str_replace("&Agrave;", "À", $txt);
+    $txt = str_replace("&iexcl;", "¡", $txt);
+    $txt = str_replace("&middot;", "·", $txt);
+    $txt = str_replace("&Ccedil;", "Ç", $txt);
+    $txt = str_replace("&ccedil;", "ç", $txt);
+    $txt = str_replace("&quot;", '"', $txt);
+    $txt = str_replace("&ordf;", 'ª', $txt);
+    $txt = str_replace("&ordm;", 'º', $txt);
+    $txt = str_replace("&amp;", '&', $txt);
+    $txt = str_replace("&bull;", '•', $txt);
+    $txt = str_replace("&iquest;", '¿', $txt);
+    $txt = str_replace("&euro;", 'EUR', $txt);
+    $txt = str_replace("&uuml;", 'ü', $txt);
+    $txt = str_replace("&Uuml;", 'Ü', $txt);
+    $txt = str_replace("&uml;", '¨', $txt);
 
 
     return $txt;
     return $txt;
 }
 }
@@ -218,7 +205,6 @@ function removeHtml($string)
  */
  */
 function removeQuotes($string)
 function removeQuotes($string)
 {
 {
-    //$txt=strip_tags($cadena);
     $txt = str_replace("&nbsp;", " ", $string);
     $txt = str_replace("&nbsp;", " ", $string);
     $txt = str_replace("&Aacute;", "Á", $txt);
     $txt = str_replace("&Aacute;", "Á", $txt);
     $txt = str_replace("&aacute;", "á", $txt);
     $txt = str_replace("&aacute;", "á", $txt);
@@ -251,53 +237,3 @@ function removeQuotes($string)
 
 
     return $txt;
     return $txt;
 }
 }
-
-/**
- * Returns an associative array (keys: R,G,B) from a hex html code (e.g. #3FE5AA).
- *
- * @param string $color
- *
- * @return array
- */
-function hex2dec($color = '#000000')
-{
-    $R = substr($color, 1, 2);
-    $rouge = hexdec($R);
-    $V = substr($color, 3, 2);
-    $vert = hexdec($V);
-    $B = substr($color, 5, 2);
-    $bleu = hexdec($B);
-    $tbl_couleur = [];
-    $tbl_couleur['R'] = $rouge;
-    $tbl_couleur['V'] = $vert;
-    $tbl_couleur['B'] = $bleu;
-
-    return $tbl_couleur;
-}
-
-/**
- * Conversion of pixel -> millimeter at 72 dpi.
- *
- * @param $px
- *
- * @return float|int
- */
-function px2mm($px)
-{
-    return $px * 25.4 / 72;
-}
-
-/**
- * Transform from HTML to text.
- *
- * @param string $html HTML string
- *
- * @return string Pure text version of the given string
- */
-function txtentities($html)
-{
-    $trans = get_html_translation_table(HTML_ENTITIES);
-    $trans = array_flip($trans);
-
-    return strtr($html, $trans);
-}

+ 12 - 21
plugin/test2pdf/src/test2pdf_plugin.class.php

@@ -1,19 +1,10 @@
 <?php
 <?php
-/* For license terms, see /license.txt
-/* To show the plugin course icons you need to add these icons:
- * main/img/icons/22/ranking.png
- * main/img/icons/64/ranking.png
- * main/img/icons/64/ranking_na.png
- */
 /**
 /**
- * Description of test2pdf_plugin.
+ * Plugin class for the Test2Pdf plugin.
  *
  *
  * @package chamilo.plugin.test2pdf
  * @package chamilo.plugin.test2pdf
  *
  *
- * @author Jose Angel Ruiz    <jaruiz@nosolored.com>
- */
-/**
- * Plugin class for the Test2pdf plugin.
+ * @author Jose Angel Ruiz <desarrollo@nosolored.com>
  */
  */
 class Test2pdfPlugin extends Plugin
 class Test2pdfPlugin extends Plugin
 {
 {
@@ -47,7 +38,16 @@ class Test2pdfPlugin extends Plugin
     {
     {
         //Installing course settings
         //Installing course settings
         $this->install_course_fields_in_all_courses();
         $this->install_course_fields_in_all_courses();
-        require_once api_get_path(SYS_PLUGIN_PATH).'test2pdf/database.php';
+
+        $srcfile1 = __DIR__.'/../resources/img/64/test2pdf.png';
+        $srcfile2 = __DIR__.'/../resources/img/64/test2pdf_na.png';
+        $srcfile3 = __DIR__.'/../resources/img/22/test2pdf.png';
+        $dstfile1 = __DIR__.'/../../../main/img/icons/64/test2pdf.png';
+        $dstfile2 = __DIR__.'/../../../main/img/icons/64/test2pdf_na.png';
+        $dstfile3 = __DIR__.'/../../../main/img/test2pdf.png';
+        copy($srcfile1, $dstfile1);
+        copy($srcfile2, $dstfile2);
+        copy($srcfile3, $dstfile3);
     }
     }
 
 
     /**
     /**
@@ -57,15 +57,6 @@ class Test2pdfPlugin extends Plugin
     {
     {
         //Deleting course settings
         //Deleting course settings
         $this->uninstall_course_fields_in_all_courses($this->course_settings);
         $this->uninstall_course_fields_in_all_courses($this->course_settings);
-
-        $tablesToBeDeleted = [
-            TABLE_TEST2PDF,
-        ];
-        foreach ($tablesToBeDeleted as $tableToBeDeleted) {
-            $table = Database::get_main_table($tableToBeDeleted);
-            $sql = "DROP TABLE IF EXISTS $tableToBeDeleted";
-            Database::query($sql);
-        }
         $this->manageTab(false);
         $this->manageTab(false);
     }
     }
 }
 }

+ 15 - 16
plugin/test2pdf/src/view-pdf.php

@@ -8,32 +8,31 @@
 /**
 /**
  * Initialization.
  * Initialization.
  */
  */
-require_once dirname(__FILE__).'/test2pdf.lib.php';
-require_once '../../../main/inc/global.inc.php';
-require_once 'test2pdf_plugin.class.php';
-
+require_once '../config.php';
 api_protect_course_script(true);
 api_protect_course_script(true);
+
 $plugin = Test2pdfPlugin::create();
 $plugin = Test2pdfPlugin::create();
-$t2p_plugin = $plugin->get('enable_plugin');
+$enable = $plugin->get('enable_plugin') == 'true';
 
 
-if ($t2p_plugin === 'true') {
+if ($enable) {
     $templateName = $plugin->get_lang('ViewExercises');
     $templateName = $plugin->get_lang('ViewExercises');
     $tpl = new Template($templateName);
     $tpl = new Template($templateName);
-    $course_id = api_get_course_int_id();
+    $courseId = api_get_course_int_id();
+    $sessionId = api_get_session_id();
 
 
-    // Leer Datos y Mostrar tabla
-    $iconInfo = api_get_path(WEB_PLUGIN_PATH).'test2pdf/resources/img/24/info.png';
-    $iconDownload = api_get_path(WEB_PLUGIN_PATH).'test2pdf/resources/img/32/download.png';
-    $info_exercise = showExerciseCourse($course_id);
-    $tpl->assign('infoExercise', $info_exercise);
-    $tpl->assign('course_id', $course_id);
-    $tpl->assign('iconInfo', $iconInfo);
-    $tpl->assign('iconDownload', $iconDownload);
+    $infoExercise = showExerciseCourse($courseId, $sessionId);
+    $tpl->assign('infoExercise', $infoExercise);
+    $tpl->assign('course_id', $courseId);
 
 
     $listing_tpl = 'test2pdf/view/view-pdf.tpl';
     $listing_tpl = 'test2pdf/view/view-pdf.tpl';
     $content = $tpl->fetch($listing_tpl);
     $content = $tpl->fetch($listing_tpl);
     $tpl->assign('content', $content);
     $tpl->assign('content', $content);
     $tpl->display_one_col_template();
     $tpl->display_one_col_template();
 } else {
 } else {
-    header('Location: ../../../index.php');
+    Display::addFlash(Display::return_message($plugin->get_lang('PluginDisabledFromAdminPanel')));
+    header(
+        'Location:'.api_get_path(WEB_PATH).'courses/'.
+        api_get_course_id().'/index.php?id_session='.api_get_session_id()
+    );
+    exit;
 }
 }

+ 9 - 8
plugin/test2pdf/start.php

@@ -1,27 +1,28 @@
 <?php
 <?php
+/* For license terms, see /license.txt */
 
 
 /**
 /**
  * This script initiates a test2pdf plugin.
  * This script initiates a test2pdf plugin.
  *
  *
  * @package chamilo.plugin.test2pdf
  * @package chamilo.plugin.test2pdf
  */
  */
-require __DIR__.'/../../vendor/autoload.php';
+require_once __DIR__.'/../../vendor/autoload.php';
 
 
 $course_plugin = 'test2pdf'; //needed in order to load the plugin lang variables
 $course_plugin = 'test2pdf'; //needed in order to load the plugin lang variables
-require_once dirname(__FILE__).'/config.php';
-
-//$_setting['student_view_enabled'] = 'false';
+require_once __DIR__.'/config.php';
 
 
 $tool_name = get_lang('Test2pdf');
 $tool_name = get_lang('Test2pdf');
-$tpl = new Template($tool_name);
 
 
 $plugin = Test2pdfPlugin::create();
 $plugin = Test2pdfPlugin::create();
-$t2p_plugin = $plugin->get('enable_plugin');
+$enable = $plugin->get('enable_plugin') == 'true';
 
 
-if ($t2p_plugin == "true") {
+if ($enable) {
     $url = 'src/view-pdf.php?'.api_get_cidreq();
     $url = 'src/view-pdf.php?'.api_get_cidreq();
     header('Location: '.$url);
     header('Location: '.$url);
     exit;
     exit;
 } else {
 } else {
-    echo get_lang('PluginDisabledFromAdminPanel');
+    Display::addFlash(Display::return_message($plugin->get_lang('PluginDisabledFromAdminPanel')));
+    $url = api_get_path(WEB_PATH).'courses/'.api_get_course_id().'/index.php?id_session='.api_get_session_id();
+    header('Location:'.$url);
+    exit;
 }
 }

+ 1 - 1
plugin/test2pdf/uninstall.php

@@ -10,5 +10,5 @@
 /**
 /**
  * Queries.
  * Queries.
  */
  */
-require_once dirname(__FILE__).'/config.php';
+require_once __DIR__.'/config.php';
 Test2pdfPlugin::create()->uninstall();
 Test2pdfPlugin::create()->uninstall();

+ 6 - 6
plugin/test2pdf/view/view-pdf.tpl

@@ -7,9 +7,9 @@
         <table id="courses_table" class="data_table table">
         <table id="courses_table" class="data_table table">
             <tr class="row_odd">
             <tr class="row_odd">
                 <th class="th-header">{{ 'Exercise'|get_plugin_lang('Test2pdfPlugin') }}</th>
                 <th class="th-header">{{ 'Exercise'|get_plugin_lang('Test2pdfPlugin') }}</th>
-                <th class="th-header ta-center">{{ 'DownloadOnlyQuestion'|get_plugin_lang('Test2pdfPlugin') }}</th>
-                <th class="th-header ta-center">{{ 'DownloadOnlyAnswer'|get_plugin_lang('Test2pdfPlugin') }}</th>
-                <th class="th-header ta-center">{{ 'DownloadAll'|get_plugin_lang('Test2pdfPlugin') }}</th>
+                <th class="th-header text-center">{{ 'DownloadOnlyQuestion'|get_plugin_lang('Test2pdfPlugin') }}</th>
+                <th class="th-header text-center">{{ 'DownloadOnlyAnswer'|get_plugin_lang('Test2pdfPlugin') }}</th>
+                <th class="th-header text-center">{{ 'DownloadAll'|get_plugin_lang('Test2pdfPlugin') }}</th>
             </tr>
             </tr>
             {% set i = 0 %}
             {% set i = 0 %}
 
 
@@ -20,13 +20,13 @@
                     &nbsp;&nbsp;&nbsp;<img src="{{ 'quiz.png'|icon(32) }}">
                     &nbsp;&nbsp;&nbsp;<img src="{{ 'quiz.png'|icon(32) }}">
                     <strong>{{ item.title }}</strong>
                     <strong>{{ item.title }}</strong>
                     </td>
                     </td>
-                    <td class="ta-center">
+                    <td class="text-center">
                     	<a target="_blank" href="download-pdf.php?type=question&c_id={{course_id}}&id_quiz={{item.id}}" title="{{ 'DownloadOnlyQuestion'|get_plugin_lang('Test2pdfPlugin') }}"><img src="{{ 'pdf.png'|icon(32) }}" /></a>
                     	<a target="_blank" href="download-pdf.php?type=question&c_id={{course_id}}&id_quiz={{item.id}}" title="{{ 'DownloadOnlyQuestion'|get_plugin_lang('Test2pdfPlugin') }}"><img src="{{ 'pdf.png'|icon(32) }}" /></a>
                     </td>
                     </td>
-                    <td class="ta-center">
+                    <td class="text-center">
                     	<a target="_blank" href="download-pdf.php?type=answer&c_id={{course_id}}&id_quiz={{item.id}}" title="{{ 'DownloadOnlyAnswer'|get_plugin_lang('Test2pdfPlugin') }}"><img src="{{ 'pdf.png'|icon(32) }}" /></a>
                     	<a target="_blank" href="download-pdf.php?type=answer&c_id={{course_id}}&id_quiz={{item.id}}" title="{{ 'DownloadOnlyAnswer'|get_plugin_lang('Test2pdfPlugin') }}"><img src="{{ 'pdf.png'|icon(32) }}" /></a>
                     </td>
                     </td>
-                    <td class="ta-center">
+                    <td class="text-center">
                     	<a target="_blank" href="download-pdf.php?type=all&c_id={{course_id}}&id_quiz={{item.id}}" title="{{ 'DownloadAll'|get_plugin_lang('Test2pdfPlugin') }}"><img src="{{ 'pdf.png'|icon(32) }}" /></a>
                     	<a target="_blank" href="download-pdf.php?type=all&c_id={{course_id}}&id_quiz={{item.id}}" title="{{ 'DownloadAll'|get_plugin_lang('Test2pdfPlugin') }}"><img src="{{ 'pdf.png'|icon(32) }}" /></a>
                     </td>
                     </td>
                 </tr>
                 </tr>