diff --git a/fpdf/font/courier.php3 b/fpdf/font/courier.php3
new file mode 100755
index 000000000..4c009f39b
--- /dev/null
+++ b/fpdf/font/courier.php3
@@ -0,0 +1,7 @@
+
diff --git a/fpdf/font/helvetica.php3 b/fpdf/font/helvetica.php3
new file mode 100755
index 000000000..8fa7683e7
--- /dev/null
+++ b/fpdf/font/helvetica.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/helveticab.php3 b/fpdf/font/helveticab.php3
new file mode 100755
index 000000000..a8473c94d
--- /dev/null
+++ b/fpdf/font/helveticab.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/helveticabi.php3 b/fpdf/font/helveticabi.php3
new file mode 100755
index 000000000..41379537d
--- /dev/null
+++ b/fpdf/font/helveticabi.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/helveticai.php3 b/fpdf/font/helveticai.php3
new file mode 100755
index 000000000..d5bb6e094
--- /dev/null
+++ b/fpdf/font/helveticai.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/symbol.php3 b/fpdf/font/symbol.php3
new file mode 100755
index 000000000..b556ed84c
--- /dev/null
+++ b/fpdf/font/symbol.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/times.php3 b/fpdf/font/times.php3
new file mode 100755
index 000000000..b9be1b21d
--- /dev/null
+++ b/fpdf/font/times.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/timesb.php3 b/fpdf/font/timesb.php3
new file mode 100755
index 000000000..c3eb9fa75
--- /dev/null
+++ b/fpdf/font/timesb.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/timesbi.php3 b/fpdf/font/timesbi.php3
new file mode 100755
index 000000000..161f6302c
--- /dev/null
+++ b/fpdf/font/timesbi.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/timesi.php3 b/fpdf/font/timesi.php3
new file mode 100755
index 000000000..de171fd19
--- /dev/null
+++ b/fpdf/font/timesi.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/font/zapfdingbats.php3 b/fpdf/font/zapfdingbats.php3
new file mode 100755
index 000000000..f2bdfd5c9
--- /dev/null
+++ b/fpdf/font/zapfdingbats.php3
@@ -0,0 +1,15 @@
+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);
+?>
diff --git a/fpdf/fpdf.php3 b/fpdf/fpdf.php3
new file mode 100755
index 000000000..d799385a3
--- /dev/null
+++ b/fpdf/fpdf.php3
@@ -0,0 +1,1212 @@
+page=0;
+ $this->n=2;
+ $this->buffer='';
+ $this->pages=array();
+ $this->OrientationChanges=array();
+ $this->state=0;
+ $this->fonts=array();
+ $this->images=array();
+ $this->InFooter=false;
+ $this->FontFamily='';
+ $this->FontStyle='';
+ $this->FontSizePt=12;
+ $this->DrawColor='0 G';
+ $this->FillColor='0 g';
+ $this->TextColor='0 g';
+ $this->ColorFlag=false;
+ $this->ws=0;
+ //Font names
+ $this->fontnames['courier']='Courier';
+ $this->fontnames['courierB']='Courier-Bold';
+ $this->fontnames['courierI']='Courier-Oblique';
+ $this->fontnames['courierBI']='Courier-BoldOblique';
+ $this->fontnames['helvetica']='Helvetica';
+ $this->fontnames['helveticaB']='Helvetica-Bold';
+ $this->fontnames['helveticaI']='Helvetica-Oblique';
+ $this->fontnames['helveticaBI']='Helvetica-BoldOblique';
+ $this->fontnames['times']='Times-Roman';
+ $this->fontnames['timesB']='Times-Bold';
+ $this->fontnames['timesI']='Times-Italic';
+ $this->fontnames['timesBI']='Times-BoldItalic';
+ $this->fontnames['symbol']='Symbol';
+ $this->fontnames['zapfdingbats']='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 format
+ if(is_string($format))
+ {
+ $format=strtolower($format);
+ if($format=='a3')
+ $format=array(841.89,1190.55);
+ elseif($format=='a4')
+ $format=array(595.28,841.89);
+ elseif($format=='a5')
+ $format=array(420.94,595.28);
+ elseif($format=='letter')
+ $format=array(612,792);
+ elseif($format=='legal')
+ $format=array(612,1008);
+ else
+ $this->Error('Unknown page format: '.$format);
+ $this->fwPt=$format[0];
+ $this->fhPt=$format[1];
+ }
+ else
+ {
+ $this->fwPt=round($format[0]*$this->k,2);
+ $this->fhPt=round($format[1]*$this->k,2);
+ }
+ $this->fw=round($this->fwPt/$this->k,2);
+ $this->fh=round($this->fhPt/$this->k,2);
+ //Page orientation
+ $orientation=strtolower($orientation);
+ if($orientation=='p' or $orientation=='portrait')
+ {
+ $this->DefOrientation='P';
+ $this->wPt=$this->fwPt;
+ $this->hPt=$this->fhPt;
+ }
+ elseif($orientation=='l' or $orientation=='landscape')
+ {
+ $this->DefOrientation='L';
+ $this->wPt=$this->fhPt;
+ $this->hPt=$this->fwPt;
+ }
+ else
+ $this->Error('Incorrect orientation: '.$orientation);
+ $this->CurOrientation=$this->DefOrientation;
+ $this->w=round($this->wPt/$this->k,2);
+ $this->h=round($this->hPt/$this->k,2);
+ //Page margins (1 cm)
+ $margin=round(28.35/$this->k,2);
+ $this->SetMargins($margin,$margin);
+ //Interior cell margin (1 mm)
+ $this->cMargin=$margin/10;
+ //Line width (0.2 mm)
+ $this->LineWidth=round(.567/$this->k,3);
+ //Automatic page break
+ $this->SetAutoPageBreak(true,2*$margin);
+ //Full width display mode
+ $this->SetDisplayMode('fullwidth');
+ //Compression
+ $this->SetCompression(true);
+}
+
+function SetMargins($left,$top)
+{
+ //Set left and top margins
+ $this->lMargin=$left;
+ $this->tMargin=$top;
+}
+
+function SetLeftMargin($margin)
+{
+ //Set left margin
+ $this->lMargin=$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($mode,$z=100)
+{
+ //Set display mode in viewer
+ if($mode=='fullpage' or $mode=='fullwidth' or $mode=='real' or $mode=='default')
+ $this->DisplayMode=$mode;
+ elseif($mode=='zoom')
+ $this->DisplayMode=$z;
+ else
+ $this->Error('Incorrect display mode: '.$mode);
+}
+
+function SetCompression($compress)
+{
+ //Set page compression
+ if(function_exists('gzcompress'))
+ $this->compress=$compress;
+ else
+ $this->compress=false;
+}
+
+function SetTitle($title)
+{
+ //Title of document
+ $this->title=$title;
+}
+
+function SetSubject($subject)
+{
+ //Subject of document
+ $this->subject=$subject;
+}
+
+function SetAuthor($author)
+{
+ //Author of document
+ $this->author=$author;
+}
+
+function SetKeywords($keywords)
+{
+ //Keywords of document
+ $this->keywords=$keywords;
+}
+
+function SetCreator($creator)
+{
+ //Creator of document
+ $this->creator=$creator;
+}
+
+function AliasNbPages($alias='{nb}')
+{
+ //Define an alias for total number of pages
+ $this->AliasNbPages=$alias;
+}
+
+function Error($msg)
+{
+ //Fatal error
+ die('FPDF error: '.$msg);
+}
+
+function Open()
+{
+ //Begin document
+ $this->_begindoc();
+}
+
+function Close()
+{
+ //Terminate document
+ if($page=$this->page==0)
+ $this->Error('Document contains no page');
+ //Page footer
+ $this->InFooter=true;
+ $this->Footer();
+ $this->InFooter=false;
+ //Close page
+ $this->_endpage();
+ //Close document
+ $this->_enddoc();
+}
+
+function AddPage($orientation='')
+{
+ //Start a new page
+ $family=$this->FontFamily;
+ $style=$this->FontStyle;
+ $size=$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);
+ //Set line cap style to square
+ $this->_out('2 J');
+ //Set line width
+ $this->_out($lw.' w');
+ //Set font
+ if($family)
+ $this->SetFont($family,$style,$size);
+ //Set colors
+ if($dc!='0 G')
+ $this->_out($dc);
+ if($fc!='0 g')
+ $this->_out($fc);
+ $this->TextColor=$tc;
+ $this->ColorFlag=$cf;
+ //Page header
+ $this->Header();
+ //Restore line width
+ if($this->LineWidth!=$lw)
+ {
+ $this->LineWidth=$lw;
+ $this->_out($lw.' w');
+ }
+ //Restore font
+ if($family)
+ $this->SetFont($family,$style,$size);
+ //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=-1,$b=-1)
+{
+ //Set color for all stroking operations
+ if(($r==0 and $g==0 and $b==0) or $g==-1)
+ $this->DrawColor=substr($r/255,0,5).' G';
+ else
+ $this->DrawColor=substr($r/255,0,5).' '.substr($g/255,0,5).' '.substr($b/255,0,5).' RG';
+ if($this->page>0)
+ $this->_out($this->DrawColor);
+}
+
+function SetFillColor($r,$g=-1,$b=-1)
+{
+ //Set color for all filling operations
+ if(($r==0 and $g==0 and $b==0) or $g==-1)
+ $this->FillColor=substr($r/255,0,5).' g';
+ else
+ $this->FillColor=substr($r/255,0,5).' '.substr($g/255,0,5).' '.substr($b/255,0,5).' rg';
+ $this->ColorFlag=($this->FillColor!=$this->TextColor);
+ if($this->page>0)
+ $this->_out($this->FillColor);
+}
+
+function SetTextColor($r,$g=-1,$b=-1)
+{
+ //Set color for text
+ if(($r==0 and $g==0 and $b==0) or $g==-1)
+ $this->TextColor=substr($r/255,0,5).' g';
+ else
+ $this->TextColor=substr($r/255,0,5).' '.substr($g/255,0,5).' '.substr($b/255,0,5).' rg';
+ $this->ColorFlag=($this->FillColor!=$this->TextColor);
+}
+
+function GetStringWidth($s)
+{
+ //Get width of a string in the current font
+ global $fpdf_charwidths;
+
+ $cw=&$fpdf_charwidths[$this->FontFamily.$this->FontStyle];
+ $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($width.' w');
+}
+
+function Line($x1,$y1,$x2,$y2)
+{
+ //Draw a line
+ $this->_out($x1.' -'.$y1.' m '.$x2.' -'.$y2.' l S');
+}
+
+function Rect($x,$y,$w,$h,$style='')
+{
+ //Draw a rectangle
+ if($style=='F')
+ $op='f';
+ elseif($style=='FD' or $style=='DF')
+ $op='B';
+ else
+ $op='S';
+ $this->_out($x.' -'.$y.' '.$w.' -'.$h.' re '.$op);
+}
+
+function SetFont($family,$style='',$size=0)
+{
+ //Select a font; size given in points
+ if(!$this->_setfont($family,$style,$size))
+ $this->Error('Incorrect font family or style: '.$family.' '.$style);
+}
+
+function SetFontSize($size)
+{
+ //Set font size in points
+ $this->_setfontsize($size);
+}
+
+function Text($x,$y,$txt)
+{
+ //Output a string
+ $txt=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
+ $s='BT '.$x.' -'.$y.' Td ('.$txt.') Tj ET';
+ 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=0)
+{
+ //Output a cell
+ if($this->y+$h>$this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak())
+ {
+ $x=$this->x;
+ $ws=$this->ws;
+ if($ws>0)
+ $this->_out('0 Tw');
+ $this->AddPage($this->CurOrientation);
+ $this->x=$x;
+ if($ws>0)
+ $this->_out($ws.' Tw');
+ }
+ if($w==0)
+ $w=$this->w-$this->lMargin-$this->x;
+ $s='';
+ if($fill==1 or $border==1)
+ {
+ $s.=$this->x.' -'.$this->y.' '.$w.' -'.$h.' re ';
+ if($fill==1)
+ $s.=($border==1) ? 'B ' : 'f ';
+ else
+ $s.='S ';
+ }
+ if(is_string($border))
+ {
+ $x=$this->x;
+ $y=$this->y;
+ if(is_int(strpos($border,'L')))
+ $s.=$x.' -'.$y.' m '.$x.' -'.($y+$h).' l S ';
+ if(is_int(strpos($border,'T')))
+ $s.=$x.' -'.$y.' m '.($x+$w).' -'.$y.' l S ';
+ if(is_int(strpos($border,'R')))
+ $s.=($x+$w).' -'.$y.' m '.($x+$w).' -'.($y+$h).' l S ';
+ if(is_int(strpos($border,'B')))
+ $s.=$x.' -'.($y+$h).' m '.($x+$w).' -'.($y+$h).' l S ';
+ }
+ if($txt!='')
+ {
+ if($align=='R')
+ $dx=$w-$this->cMargin-$this->GetStringWidth($txt);
+ elseif($align=='C')
+ $dx=($w-$this->GetStringWidth($txt))/2;
+ else
+ $dx=$this->cMargin;
+ $txt=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
+ if($this->ColorFlag)
+ $s.='q '.$this->TextColor.' ';
+ $s.='BT '.($this->x+$dx).' -'.($this->y+.5*$h+.3*$this->FontSize).' Td ('.$txt.') Tj ET';
+ if($this->ColorFlag)
+ $s.=' Q';
+ }
+ 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=0)
+{
+ //Output text with automatic or explicit line breaks
+ global $fpdf_charwidths;
+
+ $cw=&$fpdf_charwidths[$this->FontFamily.$this->FontStyle];
+ if($w==0)
+ $w=$this->w-$this->lMargin-$this->x;
+ $wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
+ $s=str_replace("\r",'',$txt);
+ $nb=strlen($s);
+ if($nb>0 and $s[$nb-1]=="\n")
+ $nb--;
+ $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($align=='J')
+ {
+ $this->ws=0;
+ $this->_out('0 Tw');
+ }
+ $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,$align,$fill);
+ $i++;
+ $sep=-1;
+ $j=$i;
+ $l=0;
+ $ns=0;
+ if($border)
+ {
+ $x=$this->x;
+ $y=$this->y-$h;
+ if($nl==1)
+ $this->_out($x.' -'.$y.' m '.($x+$w).' -'.$y.' l');
+ $this->_out($x.' -'.$y.' m '.$x.' -'.$this->y.' l '.($x+$w).' -'.$y.' m '.($x+$w).' -'.$this->y.' l S');
+ }
+ $nl++;
+ 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($align=='J')
+ {
+ $this->ws=0;
+ $this->_out('0 Tw');
+ }
+ $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,$align,$fill);
+ }
+ else
+ {
+ if($align=='J')
+ {
+ $this->ws=($ns>1) ? round(($wmax-$ls)/1000*$this->FontSize/($ns-1),3) : 0;
+ $this->_out($this->ws.' Tw');
+ }
+ $this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,$align,$fill);
+ $i=$sep+1;
+ }
+ $sep=-1;
+ $j=$i;
+ $l=0;
+ $ns=0;
+ if($border)
+ {
+ $x=$this->x;
+ $y=$this->y-$h;
+ if($nl==1)
+ $this->_out($x.' -'.$y.' m '.($x+$w).' -'.$y.' l');
+ $this->_out($x.' -'.$y.' m '.$x.' -'.$this->y.' l '.($x+$w).' -'.$y.' m '.($x+$w).' -'.$this->y.' l S');
+ }
+ $nl++;
+ }
+ else
+ $i++;
+ }
+ //Last chunk
+ if($align=='J')
+ {
+ $this->ws=0;
+ $this->_out('0 Tw');
+ }
+ $this->Cell($w,$h,substr($s,$j,$i),0,2,$align,$fill);
+ if($border)
+ {
+ $x=$this->x;
+ $y=$this->y-$h;
+ if($nl==1)
+ $this->_out($x.' -'.$y.' m '.($x+$w).' -'.$y.' l');
+ $this->_out($x.' -'.$y.' m '.$x.' -'.$this->y.' l '.($x+$w).' -'.$this->y.' l '.($x+$w).' -'.$y.' l S');
+ }
+ $this->x=$this->lMargin;
+}
+
+function Image($file,$x,$y,$w,$h=0,$type='')
+{
+ //Put an image on the page
+ if(!isset($this->images[$file]))
+ {
+ //First use of 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);
+ $mqr=get_magic_quotes_runtime();
+ set_magic_quotes_runtime(0);
+ if($type=='jpg' or $type=='jpeg')
+ $info=$this->_parsejpg($file);
+ elseif($type=='png')
+ $info=$this->_parsepng($file);
+ else
+ $this->Error('Unsupported image file type: '.$type);
+ set_magic_quotes_runtime($mqr);
+ $info['n']=count($this->images)+1;
+ $this->images[$file]=$info;
+ }
+ else
+ $info=$this->images[$file];
+ //Automatic width or height calculus
+ if($w==0)
+ $w=round($h*$info['w']/$info['h'],2);
+ if($h==0)
+ $h=round($w*$info['h']/$info['w'],2);
+ $this->_out('q '.$w.' 0 0 '.$h.' '.$x.' -'.($y+$h).' cm /I'.$info['n'].' Do Q');
+}
+
+function Ln($h='')
+{
+ //Line feed; default value is last cell height
+ $this->x=$this->lMargin;
+ if(is_string($h))
+ $this->y+=$this->lasth;
+ else
+ $this->y+=$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)
+{
+ //Set y position and reset x
+ $this->x=$this->lMargin;
+ if($y>=0)
+ $this->y=$y;
+ else
+ $this->y=$this->h+$y;
+}
+
+function SetXY($x,$y)
+{
+ //Set x and y positions
+ $this->SetY($y);
+ $this->SetX($x);
+}
+
+function Output($file='',$download=false)
+{
+ //Output PDF to file or browser
+ global $HTTP_ENV_VARS;
+
+ if($this->state<3)
+ $this->Close();
+ if($file=='')
+ {
+ //Send to browser
+ Header('Content-Type: application/pdf');
+ if(headers_sent())
+ $this->Error('Some data has already been output to browser, can\'t send PDF file');
+ Header('Content-Length: '.strlen($this->buffer));
+ Header('Content-disposition: inline; filename=doc.pdf');
+ echo $this->buffer;
+ }
+ else
+ {
+ if($download)
+ {
+ //Download file
+ if(isset($HTTP_ENV_VARS['HTTP_USER_AGENT']) and strpos($HTTP_ENV_VARS['HTTP_USER_AGENT'],'MSIE 5.5'))
+ Header('Content-Type: application/dummy');
+ else
+ Header('Content-Type: application/octet-stream');
+ if(headers_sent())
+ $this->Error('Some data has already been output to browser, can\'t send PDF file');
+ Header('Content-Length: '.strlen($this->buffer));
+ Header('Content-disposition: attachment; filename='.$file);
+ echo $this->buffer;
+ }
+ else
+ {
+ //Save file locally
+ $f=fopen($file,'wb');
+ if(!$f)
+ $this->Error('Unable to create output file: '.$file);
+ fwrite($f,$this->buffer,strlen($this->buffer));
+ fclose($f);
+ }
+ }
+}
+
+/****************************************************************************
+* *
+* Private methods *
+* *
+****************************************************************************/
+function _begindoc()
+{
+ //Start document
+ $this->state=1;
+ $this->_out('%PDF-1.3');
+}
+
+function _enddoc()
+{
+ //Terminate document
+ $nb=$this->page;
+ if(!empty($this->AliasNbPages))
+ {
+ //Replace number of pages
+ for($n=1;$n<=$nb;$n++)
+ $this->pages[$n]=str_replace($this->AliasNbPages,$nb,$this->pages[$n]);
+ }
+ if($this->DefOrientation=='P')
+ {
+ $wPt=$this->fwPt;
+ $hPt=$this->fhPt;
+ }
+ else
+ {
+ $wPt=$this->fhPt;
+ $hPt=$this->fwPt;
+ }
+ $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+ for($n=1;$n<=$nb;$n++)
+ {
+ //Page
+ $this->_newobj();
+ $this->_out('<_out('/Parent 1 0 R');
+ if(isset($this->OrientationChanges[$n]))
+ $this->_out('/MediaBox [0 0 '.$hPt.' '.$wPt.']');
+ $this->_out('/Resources 2 0 R');
+ $this->_out('/Contents '.($this->n+1).' 0 R>>');
+ $this->_out('endobj');
+ //Page content
+ $p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n];
+ $this->_newobj();
+ $this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
+ $this->_out('stream');
+ $this->_out($p.'endstream');
+ $this->_out('endobj');
+ }
+ //Fonts
+ $nf=$this->n;
+ reset($this->fonts);
+ while(list($name)=each($this->fonts))
+ {
+ $this->_newobj();
+ $this->_out('<_out('/Subtype /Type1');
+ $this->_out('/BaseFont /'.$name);
+ if($name!='Symbol' and $name!='ZapfDingbats')
+ $this->_out('/Encoding /WinAnsiEncoding');
+ $this->_out('>>');
+ $this->_out('endobj');
+ }
+ //Images
+ $ni=$this->n;
+ reset($this->images);
+ while(list($file,$info)=each($this->images))
+ {
+ $this->_newobj();
+ $this->_out('<_out('/Subtype /Image');
+ $this->_out('/Width '.$info['w']);
+ $this->_out('/Height '.$info['h']);
+ if($info['cs']=='Indexed')
+ $this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
+ else
+ $this->_out('/ColorSpace /'.$info['cs']);
+ $this->_out('/BitsPerComponent '.$info['bpc']);
+ $this->_out('/Filter /'.$info['f']);
+ if(isset($info['parms']))
+ $this->_out($info['parms']);
+ if(isset($info['trns']) and is_array($info['trns']))
+ {
+ $trns='';
+ for($i=0;$i_out('/Mask ['.$trns.']');
+ }
+ $this->_out('/Length '.strlen($info['data']).'>>');
+ $this->_out('stream');
+ $this->_out($info['data']);
+ $this->_out('endstream');
+ $this->_out('endobj');
+ //Palette
+ if($info['cs']=='Indexed')
+ {
+ $this->_newobj();
+ $this->_out('<>');
+ $this->_out('stream');
+ $this->_out($info['pal']);
+ $this->_out('endstream');
+ $this->_out('endobj');
+ }
+ }
+ //Pages root
+ $this->offsets[1]=strlen($this->buffer);
+ $this->_out('1 0 obj');
+ $this->_out('<page;$i++)
+ $kids.=(3+2*$i).' 0 R ';
+ $this->_out($kids.']');
+ $this->_out('/Count '.$this->page);
+ $this->_out('/MediaBox [0 0 '.$wPt.' '.$hPt.']');
+ $this->_out('>>');
+ $this->_out('endobj');
+ //Resources
+ $this->offsets[2]=strlen($this->buffer);
+ $this->_out('2 0 obj');
+ $this->_out('<_out('/Font <<');
+ for($i=1;$i<=count($this->fonts);$i++)
+ $this->_out('/F'.$i.' '.($nf+$i).' 0 R');
+ $this->_out('>>');
+ if(count($this->images))
+ {
+ $this->_out('/XObject <<');
+ $nbpal=0;
+ reset($this->images);
+ while(list(,$info)=each($this->images))
+ {
+ $this->_out('/I'.$info['n'].' '.($ni+$info['n']+$nbpal).' 0 R');
+ if($info['cs']=='Indexed')
+ $nbpal++;
+ }
+ $this->_out('>>');
+ }
+ $this->_out('>>');
+ $this->_out('endobj');
+ //Info
+ $this->_newobj();
+ $this->_out('<title))
+ $this->_out('/Title ('.$this->_escape($this->title).')');
+ if(!empty($this->subject))
+ $this->_out('/Subject ('.$this->_escape($this->subject).')');
+ if(!empty($this->author))
+ $this->_out('/Author ('.$this->_escape($this->author).')');
+ if(!empty($this->keywords))
+ $this->_out('/Keywords ('.$this->_escape($this->keywords).')');
+ if(!empty($this->creator))
+ $this->_out('/Creator ('.$this->_escape($this->creator).')');
+ $this->_out('/CreationDate (D:'.date('YmdHis').')>>');
+ $this->_out('endobj');
+ //Catalog
+ $this->_newobj();
+ $this->_out('<DisplayMode=='fullpage')
+ $this->_out('/OpenAction [3 0 R /Fit]');
+ elseif($this->DisplayMode=='fullwidth')
+ $this->_out('/OpenAction [3 0 R /FitH null]');
+ elseif($this->DisplayMode=='real')
+ $this->_out('/OpenAction [3 0 R /XYZ null null 1]');
+ else
+ $this->_out('/OpenAction [3 0 R /XYZ null null '.($this->DisplayMode/100).']');
+ $this->_out('/Pages 1 0 R>>');
+ $this->_out('endobj');
+ //Cross-ref
+ $o=strlen($this->buffer);
+ $this->_out('xref');
+ $this->_out('0 '.($this->n+1));
+ $this->_out('0000000000 65535 f ');
+ for($i=1;$i<=$this->n;$i++)
+ $this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
+ //Trailer
+ $this->_out('trailer');
+ $this->_out('<n+1));
+ $this->_out('/Root '.$this->n.' 0 R');
+ $this->_out('/Info '.($this->n-1).' 0 R>>');
+ $this->_out('startxref');
+ $this->_out($o);
+ $this->_out('%%EOF');
+ $this->state=3;
+}
+
+function _beginpage($orientation)
+{
+ $this->page++;
+ $this->pages[$this->page]='';
+ $this->state=2;
+ $this->x=$this->lMargin;
+ $this->y=$this->tMargin;
+ $this->lasth=0;
+ $this->FontFamily='';
+ //Page orientation
+ if(!$orientation)
+ $orientation=$this->DefOrientation;
+ else
+ {
+ $orientation=strtoupper($orientation{0});
+ if($orientation!=$this->DefOrientation)
+ $this->OrientationChanges[$this->page]=true;
+ }
+ if($orientation!=$this->CurOrientation)
+ {
+ //Change orientation
+ if($orientation=='P')
+ {
+ $this->wPt=$this->fwPt;
+ $this->hPt=$this->fhPt;
+ $this->w=$this->fw;
+ $this->h=$this->fh;
+ }
+ else
+ {
+ $this->wPt=$this->fhPt;
+ $this->hPt=$this->fwPt;
+ $this->w=$this->fh;
+ $this->h=$this->fw;
+ }
+ $this->PageBreakTrigger=$this->h-$this->bMargin;
+ $this->CurOrientation=$orientation;
+ }
+ //Set transformation matrix
+ $this->_out(round($this->k,6).' 0 0 '.round($this->k,6).' 0 '.$this->hPt.' cm');
+}
+
+function _endpage()
+{
+ //End of page contents
+ $this->state=1;
+}
+
+function _newobj()
+{
+ //Begin a new object
+ $this->n++;
+ $this->offsets[$this->n]=strlen($this->buffer);
+ $this->_out($this->n.' 0 obj');
+}
+
+function _setfont($family,$style,$size)
+{
+ global $fpdf_charwidths;
+
+ $family=strtolower($family);
+ if($family=='')
+ $family=$this->FontFamily;
+ if($family=='arial')
+ $family='helvetica';
+ if($family=='symbol' or $family=='zapfdingbats')
+ $style='';
+ $style=strtoupper($style);
+ if($style=='IB')
+ $style='BI';
+ if($size==0)
+ $size=$this->FontSizePt;
+ //Test if font is already selected
+ if($this->FontFamily==$family and $this->FontStyle==$style and $this->FontSizePt==$size)
+ return true;
+ //Retrieve Type1 font name
+ if(!isset($this->fontnames[$family.$style]))
+ return false;
+ $fontname=$this->fontnames[$family.$style];
+ //Test if used for the first time
+ if(!isset($this->fonts[$fontname]))
+ {
+ $n=count($this->fonts);
+ $this->fonts[$fontname]=$n+1;
+ if(!isset($fpdf_charwidths[$family.$style]))
+ {
+ //include metric file
+ $file=$family;
+ if($family=='times' or $family=='helvetica')
+ $file.=strtolower($style);
+ $file.='.php3';
+ if(defined('FPDF_FONTPATH'))
+ $file=FPDF_FONTPATH.$file;
+ include($file);
+ if(!isset($fpdf_charwidths[$family.$style]))
+ $this->Error('Could not include font metric file');
+ }
+ }
+ //Select it
+ $this->FontFamily=$family;
+ $this->FontStyle=$style;
+ $this->FontSizePt=$size;
+ $this->FontSize=round($size/$this->k,2);
+ if($this->page>0)
+ $this->_out('BT /F'.$this->fonts[$fontname].' '.$this->FontSize.' Tf ET');
+ return true;
+}
+
+function _setfontsize($size)
+{
+ //Test if size already selected
+ if($this->FontSizePt==$size)
+ return;
+ //Select it
+ $fontname=$this->fontnames[$this->FontFamily.$this->FontStyle];
+ $this->FontSizePt=$size;
+ $this->FontSize=round($size/$this->k,2);
+ if($this->page>0)
+ $this->_out('BT /F'.$this->fonts[$fontname].' '.$this->FontSize.' Tf ET');
+}
+
+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']) or $a['channels']==3)
+ $colspace='DeviceRGB';
+ elseif($a['channels']==4)
+ $colspace='DeviceCMYK';
+ else
+ $colspace='DeviceGray';
+ $bpc=isset($a['bits']) ? $a['bits'] : 8;
+ //Read whole file
+ $f=fopen($file,'rb');
+ $data=fread($f,filesize($file));
+ fclose($f);
+ return array('w'=>$a[0],'h'=>$a[1],'cs'=>$colspace,'bpc'=>$bpc,'f'=>'DCTDecode','data'=>$data);
+}
+
+function _parsepng($file)
+{
+ //Extract info from a PNG file
+ $f=fopen($file,'rb');
+ if(!$f)
+ $this->Error('Can\'t open image file: '.$file);
+ //Check signature
+ if(fread($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
+ $this->Error('Not a PNG file: '.$file);
+ //Read header chunk
+ fread($f,4);
+ if(fread($f,4)!='IHDR')
+ $this->Error('Incorrect PNG file: '.$file);
+ $w=$this->_freadint($f);
+ $h=$this->_freadint($f);
+ $bpc=ord(fread($f,1));
+ if($bpc>8)
+ $this->Error('16-bit depth not supported: '.$file);
+ $ct=ord(fread($f,1));
+ if($ct==0)
+ $colspace='DeviceGray';
+ elseif($ct==2)
+ $colspace='DeviceRGB';
+ elseif($ct==3)
+ $colspace='Indexed';
+ else
+ $this->Error('Alpha channel not supported: '.$file);
+ if(ord(fread($f,1))!=0)
+ $this->Error('Unknown compression method: '.$file);
+ if(ord(fread($f,1))!=0)
+ $this->Error('Unknown filter method: '.$file);
+ if(ord(fread($f,1))!=0)
+ $this->Error('Interlacing not supported: '.$file);
+ fread($f,4);
+ $parms='/DecodeParms <>';
+ //Scan chunks looking for palette, transparency and image data
+ $pal='';
+ $trns='';
+ $data='';
+ do
+ {
+ $n=$this->_freadint($f);
+ $type=fread($f,4);
+ if($type=='PLTE')
+ {
+ //Read palette
+ $pal=fread($f,$n);
+ fread($f,4);
+ }
+ elseif($type=='tRNS')
+ {
+ //Read transparency info
+ $t=fread($f,$n);
+ if($ct==0)
+ $trns=array(substr($t,1,1));
+ elseif($ct==2)
+ $trns=array(substr($t,1,1),substr($t,3,1),substr($t,5,1));
+ else
+ {
+ $pos=strpos($t,chr(0));
+ if(is_int($pos))
+ $trns=array($pos);
+ }
+ fread($f,4);
+ }
+ elseif($type=='IDAT')
+ {
+ //Read image data block
+ $data.=fread($f,$n);
+ fread($f,4);
+ }
+ elseif($type=='IEND')
+ break;
+ else
+ fread($f,$n+4);
+ }
+ while($n);
+ if($colspace=='Indexed' and empty($pal))
+ $this->Error('Missing palette in '.$file);
+ fclose($f);
+ return array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$data);
+}
+
+function _freadint($f)
+{
+ //Read a 4-byte integer from file
+ $i=ord(fread($f,1))<<24;
+ $i+=ord(fread($f,1))<<16;
+ $i+=ord(fread($f,1))<<8;
+ $i+=ord(fread($f,1));
+ return $i;
+}
+
+function _escape($s)
+{
+ //Add \ before \, ( and )
+ return str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$s)));
+}
+
+function _out($s)
+{
+ //Add a line to the document
+ if($this->state==2)
+ $this->pages[$this->page].=$s."\n";
+ else
+ $this->buffer.=$s."\n";
+}
+//End of class
+}
+
+//Handle silly IE contype request
+if(isset($HTTP_ENV_VARS['HTTP_USER_AGENT']) and $HTTP_ENV_VARS['HTTP_USER_AGENT']=='contype')
+{
+ Header('Content-Type: application/pdf');
+ exit;
+}
+
+?>