From 982e14674a2e0e1d5d3559ae2cc8efb3873fc3cf Mon Sep 17 00:00:00 2001 From: akshaythakur8764 Date: Wed, 26 Jun 2024 17:21:14 +0530 Subject: first commit --- README.md | 2 +- abstract_bulk_approval.inc | 6 +- add_project_titles.inc | 4 +- available_project_titles_list.inc | 4 +- cfd_case_study.info | 7 - cfd_case_study.module | 749 ------ cfd_case_study_details.inc | 105 - download.inc | 8 +- email.inc | 2 +- full_download.inc | 14 +- general_deletion.inc | 2 +- manage_proposal.inc | 30 +- osdag_case_study.info | 7 + osdag_case_study.module | 759 ++++++ osdag_case_study_details.inc | 105 + pdf/cert_new.inc | 423 ---- pdf/fpdf/FAQ.htm | 272 --- pdf/fpdf/WriteHTML.php | 110 - pdf/fpdf/changelog.htm | 167 -- pdf/fpdf/doc/__construct.htm | 63 - pdf/fpdf/doc/acceptpagebreak.htm | 63 - pdf/fpdf/doc/addfont.htm | 55 - pdf/fpdf/doc/addlink.htm | 26 - pdf/fpdf/doc/addpage.htm | 61 - pdf/fpdf/doc/aliasnbpages.htm | 45 - pdf/fpdf/doc/cell.htm | 104 - pdf/fpdf/doc/close.htm | 21 - pdf/fpdf/doc/error.htm | 26 - pdf/fpdf/doc/footer.htm | 35 - pdf/fpdf/doc/fpdf.htm | 63 - pdf/fpdf/doc/getpageheight.htm | 18 - pdf/fpdf/doc/getpagewidth.htm | 18 - pdf/fpdf/doc/getstringwidth.htm | 23 - pdf/fpdf/doc/getx.htm | 20 - pdf/fpdf/doc/gety.htm | 20 - pdf/fpdf/doc/header.htm | 37 - pdf/fpdf/doc/image.htm | 99 - pdf/fpdf/doc/index.htm | 59 - pdf/fpdf/doc/line.htm | 38 - pdf/fpdf/doc/link.htm | 46 - pdf/fpdf/doc/ln.htm | 28 - pdf/fpdf/doc/multicell.htm | 76 - pdf/fpdf/doc/output.htm | 46 - pdf/fpdf/doc/pageno.htm | 18 - pdf/fpdf/doc/rect.htm | 48 - pdf/fpdf/doc/setauthor.htm | 33 - pdf/fpdf/doc/setautopagebreak.htm | 33 - pdf/fpdf/doc/setcompression.htm | 31 - pdf/fpdf/doc/setcreator.htm | 34 - pdf/fpdf/doc/setdisplaymode.htm | 45 - pdf/fpdf/doc/setdrawcolor.htm | 41 - pdf/fpdf/doc/setfillcolor.htm | 40 - pdf/fpdf/doc/setfont.htm | 92 - pdf/fpdf/doc/setfontsize.htm | 25 - pdf/fpdf/doc/setkeywords.htm | 33 - pdf/fpdf/doc/setleftmargin.htm | 30 - pdf/fpdf/doc/setlinewidth.htm | 29 - pdf/fpdf/doc/setlink.htm | 34 - pdf/fpdf/doc/setmargins.htm | 37 - pdf/fpdf/doc/setrightmargin.htm | 28 - pdf/fpdf/doc/setsubject.htm | 33 - pdf/fpdf/doc/settextcolor.htm | 40 - pdf/fpdf/doc/settitle.htm | 33 - pdf/fpdf/doc/settopmargin.htm | 28 - pdf/fpdf/doc/setx.htm | 29 - pdf/fpdf/doc/setxy.htm | 31 - pdf/fpdf/doc/sety.htm | 33 - pdf/fpdf/doc/text.htm | 39 - pdf/fpdf/doc/write.htm | 51 - pdf/fpdf/font/certificate.php | 23 - pdf/fpdf/font/certificateb.php | 23 - pdf/fpdf/font/courier.php | 10 - pdf/fpdf/font/courierb.php | 10 - pdf/fpdf/font/courierbi.php | 10 - pdf/fpdf/font/courieri.php | 10 - pdf/fpdf/font/helvetica.php | 21 - pdf/fpdf/font/helveticab.php | 21 - pdf/fpdf/font/helveticabi.php | 21 - pdf/fpdf/font/helveticai.php | 21 - pdf/fpdf/font/symbol.php | 20 - pdf/fpdf/font/times.php | 21 - pdf/fpdf/font/timesb.php | 21 - pdf/fpdf/font/timesbi.php | 21 - pdf/fpdf/font/timesi.php | 21 - pdf/fpdf/font/zapfdingbats.php | 20 - pdf/fpdf/fonts/certificate-bold.php | 23 - pdf/fpdf/fonts/certificate-bold.ttf | Bin 72344 -> 0 bytes pdf/fpdf/fonts/certificate-bold.z | Bin 36713 -> 0 bytes pdf/fpdf/fonts/certificate.php | 23 - pdf/fpdf/fonts/certificate.ttf | Bin 79128 -> 0 bytes pdf/fpdf/fpdf.css | 21 - pdf/fpdf/fpdf.php | 1895 --------------- pdf/fpdf/html2pdf.php | 196 -- pdf/fpdf/install.txt | 15 - pdf/fpdf/license.txt | 6 - pdf/fpdf/makefont/cp1250.map | 251 -- pdf/fpdf/makefont/cp1251.map | 255 --- pdf/fpdf/makefont/cp1252.map | 251 -- pdf/fpdf/makefont/cp1253.map | 239 -- pdf/fpdf/makefont/cp1254.map | 249 -- pdf/fpdf/makefont/cp1255.map | 233 -- pdf/fpdf/makefont/cp1257.map | 244 -- pdf/fpdf/makefont/cp1258.map | 247 -- pdf/fpdf/makefont/cp874.map | 225 -- pdf/fpdf/makefont/iso-8859-1.map | 256 --- pdf/fpdf/makefont/iso-8859-11.map | 248 -- pdf/fpdf/makefont/iso-8859-15.map | 256 --- pdf/fpdf/makefont/iso-8859-16.map | 256 --- pdf/fpdf/makefont/iso-8859-2.map | 256 --- pdf/fpdf/makefont/iso-8859-4.map | 256 --- pdf/fpdf/makefont/iso-8859-5.map | 256 --- pdf/fpdf/makefont/iso-8859-7.map | 250 -- pdf/fpdf/makefont/iso-8859-9.map | 256 --- pdf/fpdf/makefont/koi8-r.map | 256 --- pdf/fpdf/makefont/koi8-u.map | 256 --- pdf/fpdf/makefont/makefont.php | 447 ---- pdf/fpdf/makefont/ttfparser.php | 723 ------ pdf/fpdf/tutorial/20k_c1.txt | 10 - pdf/fpdf/tutorial/20k_c2.txt | 23 - pdf/fpdf/tutorial/calligra.php | 25 - pdf/fpdf/tutorial/calligra.ttf | Bin 40120 -> 0 bytes pdf/fpdf/tutorial/calligra.z | Bin 22477 -> 0 bytes pdf/fpdf/tutorial/certificate-bold.ttf | Bin 72344 -> 0 bytes pdf/fpdf/tutorial/certificate.ttf | Bin 79128 -> 0 bytes pdf/fpdf/tutorial/countries.txt | 15 - pdf/fpdf/tutorial/index.htm | 20 - pdf/fpdf/tutorial/logo.png | Bin 2373 -> 0 bytes pdf/fpdf/tutorial/makefont.php | 6 - pdf/fpdf/tutorial/tuto1.htm | 76 - pdf/fpdf/tutorial/tuto1.php | 9 - pdf/fpdf/tutorial/tuto2.htm | 80 - pdf/fpdf/tutorial/tuto2.php | 41 - pdf/fpdf/tutorial/tuto3.htm | 115 - pdf/fpdf/tutorial/tuto3.php | 81 - pdf/fpdf/tutorial/tuto4.htm | 132 -- pdf/fpdf/tutorial/tuto4.php | 109 - pdf/fpdf/tutorial/tuto5.htm | 134 -- pdf/fpdf/tutorial/tuto5.php | 102 - pdf/fpdf/tutorial/tuto6.htm | 154 -- pdf/fpdf/tutorial/tuto6.php | 113 - pdf/fpdf/tutorial/tuto7.htm | 187 -- pdf/fpdf/tutorial/tuto7.php | 11 - pdf/images/bg_cert.png | Bin 17983 -> 0 bytes pdf/images/fossee.png | Bin 17983 -> 0 bytes pdf/images/ftr_line.png | Bin 17983 -> 0 bytes pdf/images/ftr_line_2.png | Bin 17983 -> 0 bytes pdf/images/mhrd.png | Bin 17983 -> 0 bytes pdf/images/nia.png | Bin 17983 -> 0 bytes pdf/images/sign1.png | Bin 17983 -> 0 bytes pdf/images/sign2.png | Bin 17983 -> 0 bytes pdf/list_all_form_pdf.inc | 67 - pdf/list_case_study_certificate.inc | 56 - pdf/list_mentor_certificates.inc | 54 - pdf/mentor_cert_pdf.inc | 375 --- pdf/phpqrcode/CHANGELOG | 38 - pdf/phpqrcode/INSTALL | 67 - pdf/phpqrcode/LICENSE | 165 -- pdf/phpqrcode/README | 45 - pdf/phpqrcode/VERSION | 2 - pdf/phpqrcode/bindings/tcpdf/qrcode.php | 2875 ----------------------- pdf/phpqrcode/phpqrcode.php | 3312 --------------------------- pdf/phpqrcode/qrbitstream.php | 180 -- pdf/phpqrcode/qrconfig.php | 17 - pdf/phpqrcode/qrconst.php | 54 - pdf/phpqrcode/qrencode.php | 502 ---- pdf/phpqrcode/qrimage.php | 95 - pdf/phpqrcode/qrinput.php | 729 ------ pdf/phpqrcode/qrlib.php | 43 - pdf/phpqrcode/qrmask.php | 328 --- pdf/phpqrcode/qrrscode.php | 210 -- pdf/phpqrcode/qrspec.php | 592 ----- pdf/phpqrcode/qrsplit.php | 311 --- pdf/phpqrcode/qrtools.php | 172 -- pdf/phpqrcode/tools/merge.bat | 2 - pdf/phpqrcode/tools/merge.php | 70 - pdf/phpqrcode/tools/merge.sh | 2 - pdf/phpqrcode/tools/merged_config.php | 17 - pdf/phpqrcode/tools/merged_header.php | 36 - pdf/temp_certificate/sample_certificate.pdf | 0 pdf/temp_prcode/generated_qrcode.png | Bin 454 -> 0 bytes pdf/temp_prcode/qrcode_name.png | Bin 380 -> 0 bytes pdf/verify_certificates.inc | 113 - proposal.inc | 33 +- run.inc | 2 +- settings.inc | 6 +- upload_code.inc | 30 +- 186 files changed, 944 insertions(+), 24552 deletions(-) mode change 100644 => 100755 README.md mode change 100644 => 100755 add_project_titles.inc mode change 100644 => 100755 available_project_titles_list.inc delete mode 100755 cfd_case_study.info delete mode 100755 cfd_case_study.module delete mode 100755 cfd_case_study_details.inc create mode 100755 osdag_case_study.info create mode 100755 osdag_case_study.module create mode 100755 osdag_case_study_details.inc delete mode 100755 pdf/cert_new.inc delete mode 100755 pdf/fpdf/FAQ.htm delete mode 100755 pdf/fpdf/WriteHTML.php delete mode 100755 pdf/fpdf/changelog.htm delete mode 100644 pdf/fpdf/doc/__construct.htm delete mode 100755 pdf/fpdf/doc/acceptpagebreak.htm delete mode 100755 pdf/fpdf/doc/addfont.htm delete mode 100755 pdf/fpdf/doc/addlink.htm delete mode 100755 pdf/fpdf/doc/addpage.htm delete mode 100755 pdf/fpdf/doc/aliasnbpages.htm delete mode 100755 pdf/fpdf/doc/cell.htm delete mode 100755 pdf/fpdf/doc/close.htm delete mode 100755 pdf/fpdf/doc/error.htm delete mode 100755 pdf/fpdf/doc/footer.htm delete mode 100755 pdf/fpdf/doc/fpdf.htm delete mode 100644 pdf/fpdf/doc/getpageheight.htm delete mode 100644 pdf/fpdf/doc/getpagewidth.htm delete mode 100755 pdf/fpdf/doc/getstringwidth.htm delete mode 100755 pdf/fpdf/doc/getx.htm delete mode 100755 pdf/fpdf/doc/gety.htm delete mode 100755 pdf/fpdf/doc/header.htm delete mode 100755 pdf/fpdf/doc/image.htm delete mode 100755 pdf/fpdf/doc/index.htm delete mode 100755 pdf/fpdf/doc/line.htm delete mode 100755 pdf/fpdf/doc/link.htm delete mode 100755 pdf/fpdf/doc/ln.htm delete mode 100755 pdf/fpdf/doc/multicell.htm delete mode 100755 pdf/fpdf/doc/output.htm delete mode 100755 pdf/fpdf/doc/pageno.htm delete mode 100755 pdf/fpdf/doc/rect.htm delete mode 100755 pdf/fpdf/doc/setauthor.htm delete mode 100755 pdf/fpdf/doc/setautopagebreak.htm delete mode 100755 pdf/fpdf/doc/setcompression.htm delete mode 100755 pdf/fpdf/doc/setcreator.htm delete mode 100755 pdf/fpdf/doc/setdisplaymode.htm delete mode 100755 pdf/fpdf/doc/setdrawcolor.htm delete mode 100755 pdf/fpdf/doc/setfillcolor.htm delete mode 100755 pdf/fpdf/doc/setfont.htm delete mode 100755 pdf/fpdf/doc/setfontsize.htm delete mode 100755 pdf/fpdf/doc/setkeywords.htm delete mode 100755 pdf/fpdf/doc/setleftmargin.htm delete mode 100755 pdf/fpdf/doc/setlinewidth.htm delete mode 100755 pdf/fpdf/doc/setlink.htm delete mode 100755 pdf/fpdf/doc/setmargins.htm delete mode 100755 pdf/fpdf/doc/setrightmargin.htm delete mode 100755 pdf/fpdf/doc/setsubject.htm delete mode 100755 pdf/fpdf/doc/settextcolor.htm delete mode 100755 pdf/fpdf/doc/settitle.htm delete mode 100755 pdf/fpdf/doc/settopmargin.htm delete mode 100755 pdf/fpdf/doc/setx.htm delete mode 100755 pdf/fpdf/doc/setxy.htm delete mode 100755 pdf/fpdf/doc/sety.htm delete mode 100755 pdf/fpdf/doc/text.htm delete mode 100755 pdf/fpdf/doc/write.htm delete mode 100755 pdf/fpdf/font/certificate.php delete mode 100755 pdf/fpdf/font/certificateb.php delete mode 100755 pdf/fpdf/font/courier.php delete mode 100755 pdf/fpdf/font/courierb.php delete mode 100755 pdf/fpdf/font/courierbi.php delete mode 100755 pdf/fpdf/font/courieri.php delete mode 100755 pdf/fpdf/font/helvetica.php delete mode 100755 pdf/fpdf/font/helveticab.php delete mode 100755 pdf/fpdf/font/helveticabi.php delete mode 100755 pdf/fpdf/font/helveticai.php delete mode 100755 pdf/fpdf/font/symbol.php delete mode 100755 pdf/fpdf/font/times.php delete mode 100755 pdf/fpdf/font/timesb.php delete mode 100755 pdf/fpdf/font/timesbi.php delete mode 100755 pdf/fpdf/font/timesi.php delete mode 100755 pdf/fpdf/font/zapfdingbats.php delete mode 100755 pdf/fpdf/fonts/certificate-bold.php delete mode 100755 pdf/fpdf/fonts/certificate-bold.ttf delete mode 100755 pdf/fpdf/fonts/certificate-bold.z delete mode 100755 pdf/fpdf/fonts/certificate.php delete mode 100755 pdf/fpdf/fonts/certificate.ttf delete mode 100755 pdf/fpdf/fpdf.css delete mode 100755 pdf/fpdf/fpdf.php delete mode 100755 pdf/fpdf/html2pdf.php delete mode 100755 pdf/fpdf/install.txt delete mode 100755 pdf/fpdf/license.txt delete mode 100755 pdf/fpdf/makefont/cp1250.map delete mode 100755 pdf/fpdf/makefont/cp1251.map delete mode 100755 pdf/fpdf/makefont/cp1252.map delete mode 100755 pdf/fpdf/makefont/cp1253.map delete mode 100755 pdf/fpdf/makefont/cp1254.map delete mode 100755 pdf/fpdf/makefont/cp1255.map delete mode 100755 pdf/fpdf/makefont/cp1257.map delete mode 100755 pdf/fpdf/makefont/cp1258.map delete mode 100755 pdf/fpdf/makefont/cp874.map delete mode 100755 pdf/fpdf/makefont/iso-8859-1.map delete mode 100755 pdf/fpdf/makefont/iso-8859-11.map delete mode 100755 pdf/fpdf/makefont/iso-8859-15.map delete mode 100755 pdf/fpdf/makefont/iso-8859-16.map delete mode 100755 pdf/fpdf/makefont/iso-8859-2.map delete mode 100755 pdf/fpdf/makefont/iso-8859-4.map delete mode 100755 pdf/fpdf/makefont/iso-8859-5.map delete mode 100755 pdf/fpdf/makefont/iso-8859-7.map delete mode 100755 pdf/fpdf/makefont/iso-8859-9.map delete mode 100755 pdf/fpdf/makefont/koi8-r.map delete mode 100755 pdf/fpdf/makefont/koi8-u.map delete mode 100755 pdf/fpdf/makefont/makefont.php delete mode 100755 pdf/fpdf/makefont/ttfparser.php delete mode 100755 pdf/fpdf/tutorial/20k_c1.txt delete mode 100755 pdf/fpdf/tutorial/20k_c2.txt delete mode 100755 pdf/fpdf/tutorial/calligra.php delete mode 100755 pdf/fpdf/tutorial/calligra.ttf delete mode 100755 pdf/fpdf/tutorial/calligra.z delete mode 100755 pdf/fpdf/tutorial/certificate-bold.ttf delete mode 100755 pdf/fpdf/tutorial/certificate.ttf delete mode 100755 pdf/fpdf/tutorial/countries.txt delete mode 100755 pdf/fpdf/tutorial/index.htm delete mode 100755 pdf/fpdf/tutorial/logo.png delete mode 100755 pdf/fpdf/tutorial/makefont.php delete mode 100755 pdf/fpdf/tutorial/tuto1.htm delete mode 100755 pdf/fpdf/tutorial/tuto1.php delete mode 100755 pdf/fpdf/tutorial/tuto2.htm delete mode 100755 pdf/fpdf/tutorial/tuto2.php delete mode 100755 pdf/fpdf/tutorial/tuto3.htm delete mode 100755 pdf/fpdf/tutorial/tuto3.php delete mode 100755 pdf/fpdf/tutorial/tuto4.htm delete mode 100755 pdf/fpdf/tutorial/tuto4.php delete mode 100755 pdf/fpdf/tutorial/tuto5.htm delete mode 100755 pdf/fpdf/tutorial/tuto5.php delete mode 100755 pdf/fpdf/tutorial/tuto6.htm delete mode 100755 pdf/fpdf/tutorial/tuto6.php delete mode 100755 pdf/fpdf/tutorial/tuto7.htm delete mode 100755 pdf/fpdf/tutorial/tuto7.php delete mode 100755 pdf/images/bg_cert.png delete mode 100755 pdf/images/fossee.png delete mode 100755 pdf/images/ftr_line.png delete mode 100644 pdf/images/ftr_line_2.png delete mode 100644 pdf/images/mhrd.png delete mode 100644 pdf/images/nia.png delete mode 100644 pdf/images/sign1.png delete mode 100644 pdf/images/sign2.png delete mode 100755 pdf/list_all_form_pdf.inc delete mode 100755 pdf/list_case_study_certificate.inc delete mode 100755 pdf/list_mentor_certificates.inc delete mode 100755 pdf/mentor_cert_pdf.inc delete mode 100755 pdf/phpqrcode/CHANGELOG delete mode 100755 pdf/phpqrcode/INSTALL delete mode 100755 pdf/phpqrcode/LICENSE delete mode 100755 pdf/phpqrcode/README delete mode 100755 pdf/phpqrcode/VERSION delete mode 100755 pdf/phpqrcode/bindings/tcpdf/qrcode.php delete mode 100755 pdf/phpqrcode/phpqrcode.php delete mode 100755 pdf/phpqrcode/qrbitstream.php delete mode 100755 pdf/phpqrcode/qrconfig.php delete mode 100755 pdf/phpqrcode/qrconst.php delete mode 100755 pdf/phpqrcode/qrencode.php delete mode 100755 pdf/phpqrcode/qrimage.php delete mode 100755 pdf/phpqrcode/qrinput.php delete mode 100755 pdf/phpqrcode/qrlib.php delete mode 100755 pdf/phpqrcode/qrmask.php delete mode 100755 pdf/phpqrcode/qrrscode.php delete mode 100755 pdf/phpqrcode/qrspec.php delete mode 100755 pdf/phpqrcode/qrsplit.php delete mode 100755 pdf/phpqrcode/qrtools.php delete mode 100755 pdf/phpqrcode/tools/merge.bat delete mode 100755 pdf/phpqrcode/tools/merge.php delete mode 100755 pdf/phpqrcode/tools/merge.sh delete mode 100755 pdf/phpqrcode/tools/merged_config.php delete mode 100755 pdf/phpqrcode/tools/merged_header.php delete mode 100755 pdf/temp_certificate/sample_certificate.pdf delete mode 100755 pdf/temp_prcode/generated_qrcode.png delete mode 100755 pdf/temp_prcode/qrcode_name.png delete mode 100755 pdf/verify_certificates.inc diff --git a/README.md b/README.md old mode 100644 new mode 100755 index bd1cd20..8b3fda8 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# cfd_case_study +# osdag_case_study diff --git a/abstract_bulk_approval.inc b/abstract_bulk_approval.inc index 2989777..80d9524 100755 --- a/abstract_bulk_approval.inc +++ b/abstract_bulk_approval.inc @@ -1,6 +1,6 @@ $file_name @@ -84,7 +84,7 @@ function add_project_title_form_submit($form, &$form_state) { $result1 = db_query($result, $args, array( 'return' => Database::RETURN_INSERT_ID )); - $dest_path = cfd_case_study_project_titles_resource_file_path(); + $dest_path = osdag_case_study_project_titles_resource_file_path(); //var_dump($dest_path);die; foreach ($_FILES['files']['name'] as $file_form_name => $file_name) { diff --git a/available_project_titles_list.inc b/available_project_titles_list.inc old mode 100644 new mode 100755 index 236a870..b42fe52 --- a/available_project_titles_list.inc +++ b/available_project_titles_list.inc @@ -3,7 +3,7 @@ function list_of_available_project_titles() { $output = ""; - //$static_url = "https://static.fossee.in/cfd/project-titles/"; + //$static_url = "https://static.fossee.in/osdag/project-titles/"; $preference_rows = array(); $i = 1; $query = db_query("SELECT * from list_of_project_titles WHERE {project_title_name} NOT IN( SELECT project_title from case_study_proposal WHERE approval_status = 0 OR approval_status = 1 OR approval_status = 3)"); @@ -28,7 +28,7 @@ function list_of_available_project_titles() } function download_case_study_project_title_files() { $id = arg(3); - $root_path = cfd_case_study_project_titles_resource_file_path(); + $root_path = osdag_case_study_project_titles_resource_file_path(); $query = db_select('list_of_project_titles'); $query->fields('list_of_project_titles'); $query->condition('id', $id); diff --git a/cfd_case_study.info b/cfd_case_study.info deleted file mode 100755 index 4cd305c..0000000 --- a/cfd_case_study.info +++ /dev/null @@ -1,7 +0,0 @@ -name = "CFD Case Study" -description = "CFD Case Study Project, FOSSEE, IIT Bombay" -package = FOSSEE -version = "7.x" -core = "7.x" - -;scripts[] = js/jquery-1.4.1.min.js diff --git a/cfd_case_study.module b/cfd_case_study.module deleted file mode 100755 index 7669729..0000000 --- a/cfd_case_study.module +++ /dev/null @@ -1,749 +0,0 @@ - 'Add new project titles', - 'description' => 'Add new project titles', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'add_project_title_form', - ), - 'access arguments' => array( - 'Case Study add project titles', - ), - 'type' => MENU_NORMAL_ITEM, - 'file' => 'add_project_titles.inc', - ); - $items['case-study-project/proposal'] = array( - 'title' => 'Case Study Proposal Form', - 'description' => 'Case Study Proposal Form', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'cfd_case_study_proposal_form', - ), - 'access arguments' => array( - 'Case Study create proposal', - ), - 'type' => MENU_NORMAL_ITEM, - 'file' => 'proposal.inc', - ); - $items['case-study-project/manage-proposal'] = array( - 'title' => 'Manage Case Study Proposals', - 'description' => 'Manage Case StudyProposals', - 'page callback' => 'cfd_case_study_proposal_pending', - 'access callback' => 'user_access', - 'access arguments' => array( - 'Case Study manage proposal', - ), - 'file' => 'manage_proposal.inc', - ); - $items['case-study-project/manage-proposal/pending'] = array( - 'title' => 'Pending Proposals', - 'description' => 'Pending Case Study Proposals Queue', - 'page callback' => 'cfd_case_study_proposal_pending', - 'access callback' => 'user_access', - 'access arguments' => array( - 'Case Study manage proposal', - ), - 'type' => MENU_DEFAULT_LOCAL_TASK, - 'weight' => 1, - 'file' => 'manage_proposal.inc', - ); - $items['case-study-project/manage-proposal/all'] = array( - 'title' => 'All Proposals', - 'description' => 'All Proposals', - 'page callback' => 'cfd_case_study_proposal_all', - 'access callback' => 'user_access', - 'access arguments' => array( - 'Case Study manage proposal', - ), - 'type' => MENU_LOCAL_TASK, - 'weight' => 4, - 'file' => 'manage_proposal.inc', - ); - $items['case-study-project/manage-proposal/edit-upload-file'] = array( - 'title' => 'Edit code files', - 'description' => 'Edit code files', - 'page callback' => 'cfd_case_study_proposal_edit_file_all', - 'access callback' => 'user_access', - 'access arguments' => array( - 'Case Study manage proposal', - ), - 'type' => MENU_LOCAL_TASK, - 'weight' => 4, - 'file' => 'manage_proposal.inc', - ); - $items['case-study-project/manage-proposal/approve'] = array( - 'title' => 'Approve Proposal', - 'description' => 'Approve Proposal', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'cfd_case_study_proposal_approval_form', - ), - 'access arguments' => array( - 'Case Study manage proposal', - ), - 'type' => MENU_CALLBACK, - 'file' => 'manage_proposal.inc', - ); - $items['case-study-project/manage-proposal/edit'] = array( - 'title' => 'Edit Proposal', - 'description' => 'Edit Proposal', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'cfd_case_study_proposal_edit_form', - ), - 'access arguments' => array( - 'Case Study manage proposal', - ), - 'type' => MENU_CALLBACK, - 'file' => 'manage_proposal.inc', - ); - $items['case-study-project/manage-proposal/status'] = array( - 'title' => 'Proposal Status', - 'description' => 'Proposal Status', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'cfd_case_study_proposal_status_form', - ), - 'access arguments' => array( - 'Case Study approve proposal', - ), - 'type' => MENU_CALLBACK, - 'file' => 'manage_proposal.inc', - ); - $items['case-study-project/abstract-approval/bulk'] = array( - 'title' => 'CS Manage Code', - 'description' => 'Bulk Mangage', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'cfd_case_study_abstract_bulk_approval_form', - ), - 'access arguments' => array( - 'Case Study bulk manage abstract', - ), - 'type' => MENU_LOCAL_TASK, - 'weight' => 2, - 'file' => 'abstract_bulk_approval.inc', - ); - /* CODE UPLOAD */ - $items['case-study-project/abstract-code/edit-upload-files'] = array( - 'title' => 'Case Study Project Directory edit uploaded files for proposal', - 'description' => 'Project Edit Upload', - 'page callback' => 'drupal_get_form', - 'access callback' => 'user_access', - 'page arguments' => array( - 'cfd_case_study_edit_upload_abstract_code_form', - ), - 'access arguments' => array( - 'Case Study upload abstract', - ), - 'type' => MENU_CALLBACK, - 'file' => 'upload_code.inc', - 'weight' => 2, - ); - $items['case-study-project/abstract-code'] = array( - 'title' => 'Case Study Project Directory Submission', - 'description' => 'Abstract Submission', - 'page callback' => 'cfd_case_study_abstract', - 'access callback' => 'user_access', - 'access arguments' => array( - 'Case Study upload abstract', - ), - 'file' => 'upload_code.inc', - ); - $items['case-study-project/abstract-code/upload'] = array( - 'title' => 'Case Study Project Directory Submission', - 'description' => 'Project Upload', - 'page callback' => 'drupal_get_form', - 'access callback' => 'user_access', - 'page arguments' => array( - 'cfd_case_study_upload_abstract_code_form', - ), - 'access arguments' => array( - 'Case Study upload abstract', - ), - 'type' => MENU_LOCAL_TASK, - 'file' => 'upload_code.inc', - 'weight' => 2, - ); - $items['case-study-project/abstract-code/delete'] = array( - 'title' => 'Delete Solution', - 'description' => 'Delete Solution', - 'page callback' => 'cfd_case_study_upload_code_delete', - 'access arguments' => array( - 'Case Study upload code', - ), - 'type' => MENU_CALLBACK, - 'file' => 'upload_code_delete.inc', - ); - /* CODE DOWNLOADS */ - $items['case-study-project/full-download/project'] = array( - 'title' => 'Code Download', - 'description' => 'Code Download', - 'page callback' => 'cfd_case_study_download_full_project', - 'access arguments' => array( - 'Case Study download code', - ), - 'type' => MENU_CALLBACK, - 'file' => 'full_download.inc', - ); - /* COMPLETED Case studies */ - $items['case-study-project/completed-case-studies'] = array( - 'title' => 'Completed Case studies', - 'page callback' => 'cfd_case_study_completed_proposals_all', - 'access arguments' => array( - 'Case Study download code', - ), - 'file' => 'cfd_case_study_details.inc', - ); - /* LABS IN PROGRESS */ - $items['case-study-project/case-study-progress'] = array( - 'title' => 'Case studies in Progress', - 'page callback' => 'cfd_case_study_progress_all', - 'access arguments' => array( - 'Case Study download code', - ), - 'file' => 'cfd_case_study_details.inc', - ); - $items['case-study-project/list-of-project-titles'] = array( - 'title' => 'List of available Project titles', - 'page callback' => 'list_of_available_project_titles', - 'access arguments' => array( - 'Case Study Project titles list', - ), - 'file' => 'available_project_titles_list.inc', - ); - /* DOWNLOAD FOR EVERYONE */ - $items['case-study-project/case-study-run'] = array( - 'title' => 'Download Codes', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'cfd_case_study_run_form', - ), - 'access arguments' => array( - 'Case Study download code', - ), - 'type' => MENU_NORMAL_ITEM, - 'file' => 'run.inc', - ); - $items['case-study-project/download/resource-file'] = array( - 'title' => 'Download user defined compound file', - 'description' => 'Download resource file', - 'page callback' => 'cfd_case_study_download_upload_file', - 'access arguments' => array( - 'download code', - ), - 'type' => MENU_CALLBACK, - 'file' => 'download.inc', - ); - $items['case-study-project/download/project-title-file'] = array( - 'title' => 'Download Project Title file', - 'description' => 'Download Project Title file', - 'page callback' => 'download_case_study_project_title_files', - 'access arguments' => array( - 'download code', - ), - 'type' => MENU_CALLBACK, - 'file' => 'available_project_titles_list.inc', - ); - $items['case-study-project/download/project-file'] = array( - 'title' => 'Download Project file', - 'description' => 'Download project file', - 'page callback' => 'cfd_case_study_project_files', - 'access arguments' => array( - 'download code', - ), - 'type' => MENU_CALLBACK, - 'file' => 'download.inc', - ); - /* ADMIN SETTINGS */ - $items['admin/settings/case-study'] = array( - 'title' => 'Case Study Settings', - 'description' => 'Case Study Settings', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'cfd_case_study_settings_form', - ), - 'access arguments' => array( - 'administer Case Study', - ), - 'type' => MENU_NORMAL_ITEM, - 'file' => 'settings.inc', - ); - /* AJAX REQUEST */ - $items['case-study-project/certificates'] = array( - 'title' => 'List of Case Study Certificates', - 'description' => 'List of Case Study Certificates', - 'page callback' => '_list_case_study_certificates', - 'access arguments' => array( - 'list Case Study certificates', - ), - 'file' => 'pdf/list_case_study_certificate.inc', - ); - $items['case-study-project/certificates/generate-pdf'] = array( - 'title' => 'Download Certificate', - 'description' => 'Download Certificate', - 'page callback' => 'drupal_get_form', - 'page arguments' => array( - 'generate_pdf', - ), - 'type' => MENU_CALLBACK, - 'access arguments' => array( - 'generate pdf', - ), - 'file' => 'pdf/cert_new.inc', - ); - /*$items['case-study-project/certificates-custom'] = array( - 'title'=> 'List of Case Study Custom Certificates', - 'description'=> 'List of Case Study Custom Certificates', - 'page callback'=> '_list_cfd_case_study_custom_certificates', - 'access arguments'=> array( - 'list Case Study custom certificates' - ), - 'file'=> 'pdf/list_mentor_certificates.inc' - ); - $items['case-study-project/certificates-custom/pdf'] = array( - 'title'=> 'Download Certificate', - 'description'=> 'Download Certificate', - 'page callback'=> 'drupal_get_form', - 'page arguments'=> array( - 'generate_pdf' - ), - 'type'=> MENU_CALLBACK, - 'access arguments'=> array( - 'generate pdf' - ), - 'file'=> 'pdf/mentor_cert_pdf.inc' - ); */ - $items['case-study-project/certificates/verify'] = array( - "title" => "Certificate Verification", - "page callback" => "verify_certificates", - 'page arguments' => array( - 'verify_certificates', - ), - "access arguments" => array( - "verify certificates", - ), - 'type' => MENU_CALLBACK, - 'file' => 'pdf/verify_certificates.inc', - ); - return $items; -} -/** - * Implementation of hook_perm(). - */ -function cfd_case_study_permission() -{ - return array( - 'Case Study add project titles' => array( - 'title' => t('Case Study add project titles'), - 'restrict access' => true, - ), - 'Case Study create proposal' => array( - 'title' => t('Case Study create proposal'), - 'restrict access' => true, - ), - 'Case Study manage proposal' => array( - 'title' => t('Case Study manage proposal'), - 'restrict access' => true, - ), - 'Case Study edit proposal' => array( - 'title' => t('Case Study edit proposal'), - 'restrict access' => true, - ), - 'Case Study approve proposal' => array( - 'title' => t('Case Study approve proposal'), - 'restrict access' => true, - ), - 'Case Study propose solution' => array( - 'title' => t('Case Study propose solution'), - 'restrict access' => true, - ), - 'Case Study Project titles list' => array( - 'title' => t('Case Study Project titles list'), - 'restrict access' => true, - ), - 'Case Study approve abstract' => array( - 'title' => t('Case Study approve code'), - 'restrict access' => true, - ), - 'Case Study bulk manage abstract' => array( - 'title' => t('Case Study bulk manage abstract'), - 'restrict access' => true, - ), - 'Case Study bulk delete abstract' => array( - 'title' => t('Case Study bulk delete code'), - 'restrict access' => true, - ), - 'Case Study upload abstract' => array( - 'title' => t('Case Study upload code'), - 'restrict access' => true, - ), - 'Case Study download code' => array( - 'title' => t('Case Study download code'), - 'restrict access' => true, - ), - 'administer Case Study' => array( - 'title' => t('administer Case Study'), - 'restrict access' => true, - ), - 'Case Study generate abstract' => array( - 'title' => t('Case Study generate abstract'), - 'restrict access' => true, - ), - "list Case Study certificates" => array( - "title" => t("list the certificates"), - "description" => t("list the certificates"), - 'restrict access' => true, - ), - "list Case Study custom certificates" => array( - "title" => t("list the mentor certificates"), - "description" => t("list the mentor certificates"), - 'restrict access' => true, - ), - "verify certificates" => array( - "title" => t("verify the certificates"), - "description" => t("verify the certificates"), - 'restrict access' => true, - ), - - ); -} -/*************************** VALIDATION FUNCTIONS *****************************/ -function cfd_case_study_check_valid_filename($file_name) -{ - if (!preg_match('/^[0-9a-zA-Z\.\_]+$/', $file_name)) { - return false; - } else if (substr_count($file_name, ".") > 1) { - return false; - } else { - return true; - } - -} -function cfd_case_study_check_name($name = '') -{ - if (!preg_match('/^[0-9a-zA-Z\ ]+$/', $name)) { - return false; - } else { - return true; - } - -} -function cfd_case_study_check_code_number($number = '') -{ - if (!preg_match('/^[0-9]+$/', $number)) { - return false; - } else { - return true; - } - -} -function cfd_case_study_path() -{ - return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'cfd_uploads/case_study_uploads/'; -} -function cfd_case_study_file_path($value = '') -{ - return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'cfd_uploads/'; -} -function cfd_case_study_project_titles_resource_file_path() -{ - return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'cfd_uploads/case_project_titles_resource_files/'; -} -/************************* USER VERIFICATION FUNCTIONS ************************/ -function cfd_case_study_get_proposal() -{ - global $user; - $query = db_select('case_study_proposal'); - $query->fields('case_study_proposal'); - $query->condition('uid', $user->uid); - $query->orderBy('id', 'DESC'); - $query->range(0, 1); - $proposal_q = $query->execute(); - $proposal_data = $proposal_q->fetchObject(); - if (!$proposal_data) { - drupal_set_message("You do not have any approved Case Study proposal. Please propose a Case Study", 'error'); - drupal_goto(''); - } //!$proposal_data - switch ($proposal_data->approval_status) { - case 0: - drupal_set_message(t('Proposal is awaiting approval.'), 'status'); - return false; - case 1: - return $proposal_data; - case 2: - drupal_set_message(t('Proposal has been dis-approved.'), 'error'); - return false; - case 3: - drupal_set_message(t('Proposal has been marked as completed.'), 'status'); - return false; - default: - drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error'); - return false; - } //$proposal_data->approval_status - return false; -} -/*************************************************************************/ -/***** Function To convert only first charater of string in uppercase ****/ -/*************************************************************************/ -/*function ucname($string) -{ -$string = ucwords(strtolower($string)); -foreach (array( -'-', -'\'' -) as $delimiter) -{ -if (strpos($string, $delimiter) !== false) -{ -$string = implode($delimiter, array_map('ucfirst', explode($delimiter, $string))); -} //strpos($string, $delimiter) !== false -} //array( '-', '\'') as $delimiter -return $string; -}*/ -function _df_sentence_case($string) -{ - $string = ucwords(strtolower($string)); - foreach (array( - '-', - '\'', - ) as $delimiter) { - if (strpos($string, $delimiter) !== false) { - $string = implode($delimiter, array_map('ucfirst', explode($delimiter, $string))); - } //strpos($string, $delimiter) !== false - } //array( '-', '\'') as $delimiter - return $string; -} -function _df_list_of_states() -{ - $states = array( - 0 => '-Select-', - ); - $query = db_select('list_states_of_india'); - $query->fields('list_states_of_india'); - //$query->orderBy('', ''); - $states_list = $query->execute(); - while ($states_list_data = $states_list->fetchObject()) { - $states[$states_list_data->state] = $states_list_data->state; - } //$states_list_data = $states_list->fetchObject() - return $states; -} -function _df_list_of_cities() -{ - $city = array( - 0 => '-Select-', - ); - $query = db_select('list_cities_of_india'); - $query->fields('list_cities_of_india'); - $query->orderBy('city', 'ASC'); - $city_list = $query->execute(); - while ($city_list_data = $city_list->fetchObject()) { - $city[$city_list_data->city] = $city_list_data->city; - } //$city_list_data = $city_list->fetchObject() - return $city; -} -function _df_list_of_pincodes() -{ - $pincode = array( - 0 => '-Select-', - ); - $query = db_select('list_of_all_india_pincode'); - $query->fields('list_of_all_india_pincode'); - $query->orderBy('pincode', 'ASC'); - $pincode_list = $query->execute(); - while ($pincode_list_data = $pincode_list->fetchObject()) { - $pincode[$pincode_list_data->pincode] = $pincode_list_data->pincode; - } //$pincode_list_data = $pincode_list->fetchObject() - return $pincode; -} -function _df_list_of_departments() -{ - $department = array(); - $query = db_select('list_of_departments'); - $query->fields('list_of_departments'); - $query->orderBy('id', 'DESC'); - $department_list = $query->execute(); - while ($department_list_data = $department_list->fetchObject()) { - $department[$department_list_data->department] = $department_list_data->department; - } //$department_list_data = $department_list->fetchObject() - return $department; -} - -function _cs_list_of_case_studies() -{ - $existing_case_studies = array(); - $result = db_query("SELECT * from list_of_project_titles WHERE {project_title_name} NOT IN( SELECT project_title from case_study_proposal WHERE approval_status = 0 OR approval_status = 1 OR approval_status = 3)"); - while ($case_study_list_data = $result->fetchObject()) { - $existing_case_studies[$case_study_list_data->project_title_name] = $case_study_list_data->project_title_name; - } - return $existing_case_studies; -} - -function _cs_list_of_versions(){ - $versions = array(); - $query = db_select('case_study_software_version'); - $query->fields('case_study_software_version'); - $version_list = $query->execute(); - while($version_data = $version_list->fetchObject()){ - $versions[$version_data->id] = $version_data->case_study_version; - } - return $versions; -} - -function _cs_list_of_simulation_types(){ - $simulation_types = array(); - $query = db_select('case_study_simulation_type'); - $query->fields('case_study_simulation_type'); - $simulation_type_list = $query->execute(); - while ($simulation_type_data = $simulation_type_list->fetchObject()) { - $simulation_types[$simulation_type_data->id] = $simulation_type_data->simulation_type; - } - return $simulation_types; -} - -function _cs_list_of_solvers($simulation_id){ - $simulation_id = $simulation_id; - $solvers = array( - 0 => '-Select-', - ); - $query = db_select('case_study_solvers'); - $query->fields('case_study_solvers'); - $query->condition('simulation_type_id',$simulation_id); - $solvers_list = $query->execute(); - while($solvers_data = $solvers_list->fetchObject()){ - $solvers[$solvers_data->solver_name] = $solvers_data->solver_name; - } - return $solvers; -} - -function _df_dir_name($project, $proposar_name) -{ - $project_title = ucname($project); - $proposar_name = ucname($proposar_name); - $dir_name = $project_title . ' By ' . $proposar_name; - $directory_name = str_replace("__", "_", str_replace(" ", "_", str_replace("/", "_", trim($dir_name)))); - return $directory_name; -} -function cfd_case_study_document_path() -{ - return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'cfd_uploads/case_study_uploads/'; -} -function DF_RenameDir($proposal_id, $dir_name) -{ - $proposal_id = $proposal_id; - $dir_name = $dir_name; - $query = db_query("SELECT directory_name,id FROM case_study_proposal WHERE id = :proposal_id", array( - ':proposal_id' => $proposal_id, - )); - $result = $query->fetchObject(); - if ($result != null) { - $files = scandir(cfd_case_study_path()); - $files_id_dir = cfd_case_study_path() . $result->id; - //var_dump($files);die; - $file_dir = cfd_case_study_path() . $result->directory_name; - if (is_dir($file_dir)) { - $new_directory_name = rename(cfd_case_study_path() . $result->directory_name, cfd_case_study_path() . $dir_name); - return $new_directory_name; - } //is_dir($file_dir) - else if (is_dir($files_id_dir)) { - $new_directory_name = rename(cfd_case_study_path() . $result->id, cfd_case_study_path() . $dir_name); - return $new_directory_name; - } //is_dir($files_id_dir) - else { - drupal_set_message('Directory not available for rename.'); - return; - } - } //$result != NULL - else { - drupal_set_message('Project directory name not present in databse'); - return; - } - return; -} -function CreateReadmeFileCaseStudyProject($proposal_id) -{ - $result = db_query(" - SELECT * from case_study_proposal WHERE id = :proposal_id", array( - ":proposal_id" => $proposal_id, - )); - $proposal_data = $result->fetchObject(); - $root_path = cfd_case_study_path(); - $readme_file = fopen($root_path . $proposal_data->directory_name . "/README.txt", "w") or die("Unable to open file!"); - $txt = ""; - $txt .= "About the Case Study"; - $txt .= "\n" . "\n"; - $txt .= "Title Of The Case Study Project: " . $proposal_data->project_title . "\n"; - $txt .= "Proposar Name: " . $proposal_data->name_title . " " . $proposal_data->contributor_name . "\n"; - $txt .= "University: " . $proposal_data->university . "\n"; - $txt .= "\n" . "\n"; - $txt .= " Case Study Project By FOSSEE, IIT Bombay" . "\n"; - fwrite($readme_file, $txt); - fclose($readme_file); - return $txt; -} -function rrmdir_project($prop_id) -{ - $proposal_id = $prop_id; - $result = db_query("SELECT * from case_study_proposal WHERE id = :proposal_id", array( - ":proposal_id" => $proposal_id, - )); - $proposal_data = $result->fetchObject(); - $root_path = cfd_case_study_document_path(); - $dir = $root_path . $proposal_data->directory_name; - if ($proposal_data->id == $prop_id) { - if (is_dir($dir)) { - $objects = scandir($dir); - foreach ($objects as $object) { - if ($object != "." && $object != "..") { - if (filetype($dir . "/" . $object) == "dir") { - rrmdir($dir . "/" . $object); - } //filetype($dir . "/" . $object) == "dir" - else { - unlink($dir . "/" . $object); - } - } //$object != "." && $object != ".." - } //$objects as $object - reset($objects); - rmdir($dir); - $msg = drupal_set_message("Directory deleted successfully"); - return $msg; - } //is_dir($dir) - $msg = drupal_set_message("Directory not present"); - return $msg; - } //$proposal_data->id == $prop_id - else { - $msg = drupal_set_message("Data not found"); - return $msg; - } -} -function rrmdir($dir) -{ - if (is_dir($dir)) { - $objects = scandir($dir); - foreach ($objects as $object) { - if ($object != "." && $object != "..") { - if (filetype($dir . "/" . $object) == "dir") { - rrmdir($dir . "/" . $object); - } else { - unlink($dir . "/" . $object); - } - - } //$object != "." && $object != ".." - } //$objects as $object - reset($objects); - rmdir($dir); - } //is_dir($dir) -} diff --git a/cfd_case_study_details.inc b/cfd_case_study_details.inc deleted file mode 100755 index 4e6dbfb..0000000 --- a/cfd_case_study_details.inc +++ /dev/null @@ -1,105 +0,0 @@ -fields('case_study_proposal'); - $query->condition('approval_status', 3); - $query->orderBy('actual_completion_date', 'DESC'); - //$query->condition('is_completed', 1); - $result = $query->execute(); - - //var_dump($case_study_abstract);die; - if ($result->rowCount() == 0) - { - $output .= "Work has been completed for the following case study. We welcome your contributions." ."
1. What's exactly the license of FPDF? Are there any usage restrictions?
-FPDF is released under a permissive license: there is no usage restriction. You may embed it -freely in your application (commercial or not), with or without modifications. -2. I get the following error when I try to generate a PDF: Some data has already been output, can't send PDF file
-You must send nothing to the browser except the PDF itself: no HTML, no space, no carriage return. A common -case is having extra blank at the end of an included script file.ob_end_clean();
-3. Accented letters are replaced with some strange characters like é.
-Don't use UTF-8 with the standard fonts; they expect text encoded in ISO-8859-1 or windows-1252. -You can use utf8_decode() to perform a conversion to ISO-8859-1: -$str = utf8_decode($str);
-$str = iconv('UTF-8', 'windows-1252', $str);
-4. I try to display the Euro symbol but it doesn't work.
-The standard fonts have the Euro character at position 128. You can define a constant like this -for convenience: -define('EURO', chr(128));
-5. I try to display a variable in the Header method but nothing prints.
-You have to use theglobal
keyword to access global variables, for example:
-function Header()
-{
- global $title;
-
- $this->SetFont('Arial', 'B', 15);
- $this->Cell(0, 10, $title, 1, 1, 'C');
-}
-
-$title = 'My title';
-function Header()
-{
- $this->SetFont('Arial', 'B', 15);
- $this->Cell(0, 10, $this->title, 1, 1, 'C');
-}
-
-$pdf->title = 'My title';
-6. I have defined the Header and Footer methods in my PDF class but nothing shows.
-You have to create an object from the PDF class, not FPDF: -$pdf = new PDF();
-7. I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.
-You have to enclose your string with double quotes, not single ones. -8. I use jQuery to generate the PDF but it doesn't show.
-Don't use an AJAX request to retrieve the PDF. -9. I draw a frame with very precise dimensions, but when printed I notice some differences.
-To respect dimensions, select "None" for the Page Scaling setting instead of "Shrink to Printable Area" in the print dialog box. -10. I'd like to use the whole surface of the page, but when printed I always have some margins. How can I get rid of them?
-Printers have physical margins (different depending on the models); it is therefore impossible to remove -them and print on the whole surface of the paper. -11. How can I put a background in my PDF?
-For a picture, call Image() in the Header() method, before any other output. To set a background color, use Rect(). -12. How can I set a specific header or footer on the first page?
-Just test the page number: -function Header()
-{
- if($this->PageNo()==1)
- {
- //First page
- ...
- }
- else
- {
- //Other pages
- ...
- }
-}
-13. I'd like to use extensions provided by different scripts. How can I combine them?
-Use an inheritance chain. If you have two classes, say A in a.php: -require('fpdf.php');
-
-class A extends FPDF
-{
-...
-}
-require('fpdf.php');
-
-class B extends FPDF
-{
-...
-}
-require('a.php');
-
-class B extends A
-{
-...
-}
-require('b.php');
-
-class PDF extends B
-{
-...
-}
-
-$pdf = new PDF();
-14. How can I open the PDF in a new tab?
-Just do the same as you would for an HTML page or anything else: add a target="_blank" to your link or form. -15. How can I send the PDF by email?
-As for any other file, but an easy way is to use PHPMailer and -its in-memory attachment: -$mail = new PHPMailer();
-...
-$doc = $pdf->Output('S');
-$mail->AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
-$mail->Send();
-16. What's the limit of the file sizes I can generate with FPDF?
-There is no particular limit. There are some constraints, however: -17. Can I modify a PDF with FPDF?
-It's possible to import pages from an existing PDF document thanks to the -FPDI extension. -Then you can add some content to them. -18. I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?
-No. But a GPL C utility does exist, pdftotext, which is able to extract the textual content from a PDF. -It's provided with the Xpdf package. -19. Can I convert an HTML page to PDF with FPDF?
-Not real-world pages. But a GPL C utility does exist, HTMLDOC, -which allows to do it and gives good results. -20. Can I concatenate PDF files with FPDF?
-Not directly, but it's possible to use FPDI -to perform that task. Some free command-line tools also exist: -pdftk and -mbtPdfAsm. -__construct([string orientation [, string unit [, mixed size]]])
-orientation
P
or Portrait
L
or Landscape
P
.
-unit
pt
: pointmm
: millimetercm
: centimeterin
: inchmm
.
-size
A3
A4
A5
Letter
Legal
unit
).A4
.
-$pdf = new FPDF('P','mm',array(100,150));
-boolean AcceptPageBreak()
-class PDF extends FPDF
-{
-var $col = 0;
-
-function SetCol($col)
-{
- // Move position to a column
- $this->col = $col;
- $x = 10+$col*65;
- $this->SetLeftMargin($x);
- $this->SetX($x);
-}
-
-function AcceptPageBreak()
-{
- if($this->col<2)
- {
- // Go to next column
- $this->SetCol($this->col+1);
- $this->SetY(10);
- return false;
- }
- else
- {
- // Go back to first column and issue page break
- $this->SetCol(0);
- return true;
- }
-}
-}
-
-$pdf = new PDF();
-$pdf->AddPage();
-$pdf->SetFont('Arial','',12);
-for($i=1;$i<=300;$i++)
- $pdf->Cell(0,5,"Line $i",0,1);
-$pdf->Output();
-AddFont(string family [, string style [, string file]])
-family
style
B
: boldI
: italicBI
or IB
: bold italicfile
$pdf->AddFont('Comic','I');
-$pdf->AddFont('Comic','I','comici.php');
-int AddLink()
-AddPage([string orientation [, mixed size [, int rotation]]])
-orientation
P
or Portrait
L
or Landscape
size
A3
A4
A5
Letter
Legal
rotation
0
.
-AliasNbPages([string alias])
-alias
{nb}
.
-class PDF extends FPDF
-{
-function Footer()
-{
- // Go to 1.5 cm from bottom
- $this->SetY(-15);
- // Select Arial italic 8
- $this->SetFont('Arial','I',8);
- // Print current and total page numbers
- $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
-}
-}
-
-$pdf = new PDF();
-$pdf->AliasNbPages();
-Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])
-w
0
, the cell extends up to the right margin.
-h
0
.
-txt
border
0
: no border1
: frameL
: leftT
: topR
: rightB
: bottom0
.
-ln
0
: to the right1
: to the beginning of the next line2
: below1
is equivalent to putting 0
and calling Ln() just after.
-Default value: 0
.
-align
L
or empty string: left align (default value)C
: centerR
: right alignfill
true
) or transparent (false
).
-Default value: false
.
-link
// Set font
-$pdf->SetFont('Arial','B',16);
-// Move to 8 cm to the right
-$pdf->Cell(80);
-// Centered text in a framed 20*10 mm cell and line break
-$pdf->Cell(20,10,'Title',1,1,'C');
-Close()
-Error(string msg)
-msg
Footer()
-class PDF extends FPDF
-{
-function Footer()
-{
- // Go to 1.5 cm from bottom
- $this->SetY(-15);
- // Select Arial italic 8
- $this->SetFont('Arial','I',8);
- // Print centered page number
- $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
-}
-}
-FPDF([string orientation [, string unit [, mixed size]]])
-orientation
P
or Portrait
L
or Landscape
P
.
-unit
pt
: pointmm
: millimetercm
: centimeterin
: inchmm
.
-size
A3
A4
A5
Letter
Legal
unit
).A4
.
-$pdf = new FPDF('P','mm',array(100,150));
-float GetPageHeight()
-float GetPageWidth()
-float GetStringWidth(string s)
-s
float GetX()
-float GetY()
-Header()
-class PDF extends FPDF
-{
-function Header()
-{
- // Select Arial bold 15
- $this->SetFont('Arial','B',15);
- // Move to the right
- $this->Cell(80);
- // Framed title
- $this->Cell(30,10,'Title',1,0,'C');
- // Line break
- $this->Ln(20);
-}
-}
-Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]])
-file
x
null
, the current abscissa
-is used.
-y
null
, the current ordinate
-is used; moreover, a page break is triggered first if necessary (in case automatic page breaking is enabled)
-and, after the call, the current ordinate is moved to the bottom of the image.
-w
h
type
JPG
, JPEG
, PNG
and GIF
.
-If not specified, the type is inferred from the file extension.
-link
// Insert a logo in the top-left corner at 300 dpi
-$pdf->Image('logo.png',10,10,-300);
-// Insert a dynamic image from a URL
-$pdf->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World',60,30,90,0,'PNG');
-Line(float x1, float y1, float x2, float y2)
-x1
y1
x2
y2
Link(float x, float y, float w, float h, mixed link)
-x
y
w
h
link
Ln([float h])
-h
MultiCell(float w, float h, string txt [, mixed border [, string align [, boolean fill]]])
-w
0
, they extend up to the right margin of the page.
-h
txt
border
0
: no border1
: frameL
: leftT
: topR
: rightB
: bottom0
.
-align
L
: left alignmentC
: centerR
: right alignmentJ
: justification (default value)fill
true
) or transparent (false
).
-Default value: false
.
-string Output([string dest [, string name [, boolean isUTF8]]])
-dest
I
: send the file inline to the browser. The PDF viewer is used if available.D
: send to the browser and force a file download with the name given by name
.F
: save to a local file with the name given by name
(may include a path).S
: return the document as a string.I
.
-name
S
.doc.pdf
.
-isUTF8
name
is encoded in ISO-8859-1 (false
) or UTF-8 (true
).
-Only used for destinations I
and D
.false
.
-int PageNo()
-Rect(float x, float y, float w, float h [, string style])
-x
y
w
h
style
D
or empty string: draw. This is the default value.F
: fillDF
or FD
: draw and fillSetAuthor(string author [, boolean isUTF8])
-author
isUTF8
false
) or UTF-8 (true
).false
.
-SetAutoPageBreak(boolean auto [, float margin])
-auto
margin
SetCompression(boolean compress)
-compress
SetCreator(string creator [, boolean isUTF8])
-creator
isUTF8
false
) or UTF-8 (true
).false
.
-SetDisplayMode(mixed zoom [, string layout])
-zoom
fullpage
: displays the entire page on screenfullwidth
: uses maximum width of windowreal
: uses real size (equivalent to 100% zoom)default
: uses viewer default modelayout
single
: displays one page at oncecontinuous
: displays pages continuouslytwo
: displays two pages on two columnsdefault
: uses viewer default modedefault
.
-SetDrawColor(int r [, int g, int b])
-r
g
et b
are given, red component; if not, indicates the gray level.
-Value between 0 and 255.
-g
b
SetFillColor(int r [, int g, int b])
-r
g
and b
are given, red component; if not, indicates the gray level.
-Value between 0 and 255.
-g
b
SetFont(string family [, string style [, float size]])
-FPDF_FONTPATH
constant (if this constant is defined)font
directory located in the same directory as fpdf.php
(if it exists)include()
FPDF_FONTPATH
:
-define('FPDF_FONTPATH','/home/www/font');
-require('fpdf.php');
-family
Courier
(fixed-width)Helvetica
or Arial
(synonymous; sans serif)Times
(serif)Symbol
(symbolic)ZapfDingbats
(symbolic)style
B
: boldI
: italicU
: underlineSymbol
and ZapfDingbats
.
-size
// Times regular 12
-$pdf->SetFont('Times');
-// Arial bold 14
-$pdf->SetFont('Arial','B',14);
-// Removes bold
-$pdf->SetFont('');
-// Times bold, italic and underlined 14
-$pdf->SetFont('Times','BIU');
-SetFontSize(float size)
-size
SetKeywords(string keywords [, boolean isUTF8])
-keywords
isUTF8
false
) or UTF-8 (true
).false
.
-SetLeftMargin(float margin)
-margin
SetLineWidth(float width)
-width
SetLink(int link [, float y [, int page]])
-link
y
-1
indicates the current position.
-The default value is 0
(top of page).
-page
-1
indicates the current page. This is the default value.
-SetMargins(float left, float top [, float right])
-left
top
right
SetRightMargin(float margin)
-margin
SetSubject(string subject [, boolean isUTF8])
-subject
isUTF8
false
) or UTF-8 (true
).false
.
-SetTextColor(int r [, int g, int b])
-r
g
et b
are given, red component; if not, indicates the gray level.
-Value between 0 and 255.
-g
b
SetTitle(string title [, boolean isUTF8])
-title
isUTF8
false
) or UTF-8 (true
).false
.
-SetTopMargin(float margin)
-margin
SetX(float x)
-x
SetXY(float x, float y)
-x
y
SetY(float y [, boolean resetX])
-y
resetX
true
.
-Text(float x, float y, string txt)
-x
y
txt
Write(float h, string txt [, mixed link])
-h
txt
link
// Begin with regular font
-$pdf->SetFont('Arial','',14);
-$pdf->Write(5,'Visit ');
-// Then put a blue underlined link
-$pdf->SetTextColor(0,0,255);
-$pdf->SetFont('','U');
-$pdf->Write(5,'www.fpdf.org','http://www.fpdf.org');
-Path to the .ttf, .otf or .pfb file. Name of the encoding to use. Default value: Whether to embed the font or not. Default value: Whether to subset the font or not. Default value: "); //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=array();
- foreach($a2 as $v)
- {
- if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
- $attr[strtoupper($a3[1])]=$a3[2];
- }
- $this->OpenTag($tag,$attr);
- }
- }
- }
-}
-
-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;
- }
-}
-
-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;
- }
- }
-}
-
-function SetStyle($tag, $enable)
-{
- //Modify style and select corresponding font
- $this->$tag+=($enable ? 1 : -1);
- $style='';
- foreach(array('B','I','U') as $s)
- {
- if($this->$s>0)
- $style.=$s;
- }
- $this->SetFont('',$style);
-}
-
-function PutLink($URL, $txt)
-{
- //Put a hyperlink
- $this->SetTextColor(0,0,255);
- $this->SetStyle('U',true);
- $this->Write(5,$txt,$URL);
- $this->SetStyle('U',false);
- $this->SetTextColor(0);
-}
-
-}//end of class
-?>
diff --git a/pdf/fpdf/install.txt b/pdf/fpdf/install.txt
deleted file mode 100755
index 73ded64..0000000
--- a/pdf/fpdf/install.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-The FPDF library is made up of the following elements:
-
-- the main file, fpdf.php, which contains the class
-- the font definition files located in the font directory
-
-The font definition files are necessary as soon as you want to output some text in a document.
-If they are not accessible, the SetFont() method will produce the following error:
-
-FPDF error: Could not include font definition file
-
-
-Remarks:
-
-- Only the files corresponding to the fonts actually used are necessary
-- The tutorials provided in this package are ready to be executed
diff --git a/pdf/fpdf/license.txt b/pdf/fpdf/license.txt
deleted file mode 100755
index fd811c6..0000000
--- a/pdf/fpdf/license.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software to use, copy, modify, distribute, sublicense, and/or sell
-copies of the software, and to permit persons to whom the software is furnished
-to do so.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
\ No newline at end of file
diff --git a/pdf/fpdf/makefont/cp1250.map b/pdf/fpdf/makefont/cp1250.map
deleted file mode 100755
index ec110af..0000000
--- a/pdf/fpdf/makefont/cp1250.map
+++ /dev/null
@@ -1,251 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!89 U+2030 perthousand
-!8A U+0160 Scaron
-!8B U+2039 guilsinglleft
-!8C U+015A Sacute
-!8D U+0164 Tcaron
-!8E U+017D Zcaron
-!8F U+0179 Zacute
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9A U+0161 scaron
-!9B U+203A guilsinglright
-!9C U+015B sacute
-!9D U+0165 tcaron
-!9E U+017E zcaron
-!9F U+017A zacute
-!A0 U+00A0 space
-!A1 U+02C7 caron
-!A2 U+02D8 breve
-!A3 U+0141 Lslash
-!A4 U+00A4 currency
-!A5 U+0104 Aogonek
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+015E Scedilla
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+017B Zdotaccent
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+02DB ogonek
-!B3 U+0142 lslash
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+0105 aogonek
-!BA U+015F scedilla
-!BB U+00BB guillemotright
-!BC U+013D Lcaron
-!BD U+02DD hungarumlaut
-!BE U+013E lcaron
-!BF U+017C zdotaccent
-!C0 U+0154 Racute
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+0139 Lacute
-!C6 U+0106 Cacute
-!C7 U+00C7 Ccedilla
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0118 Eogonek
-!CB U+00CB Edieresis
-!CC U+011A Ecaron
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+010E Dcaron
-!D0 U+0110 Dcroat
-!D1 U+0143 Nacute
-!D2 U+0147 Ncaron
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+0150 Ohungarumlaut
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+0158 Rcaron
-!D9 U+016E Uring
-!DA U+00DA Uacute
-!DB U+0170 Uhungarumlaut
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+0162 Tcommaaccent
-!DF U+00DF germandbls
-!E0 U+0155 racute
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+013A lacute
-!E6 U+0107 cacute
-!E7 U+00E7 ccedilla
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+0119 eogonek
-!EB U+00EB edieresis
-!EC U+011B ecaron
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+010F dcaron
-!F0 U+0111 dcroat
-!F1 U+0144 nacute
-!F2 U+0148 ncaron
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+0151 ohungarumlaut
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+0159 rcaron
-!F9 U+016F uring
-!FA U+00FA uacute
-!FB U+0171 uhungarumlaut
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+0163 tcommaaccent
-!FF U+02D9 dotaccent
diff --git a/pdf/fpdf/makefont/cp1251.map b/pdf/fpdf/makefont/cp1251.map
deleted file mode 100755
index de6a198..0000000
--- a/pdf/fpdf/makefont/cp1251.map
+++ /dev/null
@@ -1,255 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0402 afii10051
-!81 U+0403 afii10052
-!82 U+201A quotesinglbase
-!83 U+0453 afii10100
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+20AC Euro
-!89 U+2030 perthousand
-!8A U+0409 afii10058
-!8B U+2039 guilsinglleft
-!8C U+040A afii10059
-!8D U+040C afii10061
-!8E U+040B afii10060
-!8F U+040F afii10145
-!90 U+0452 afii10099
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9A U+0459 afii10106
-!9B U+203A guilsinglright
-!9C U+045A afii10107
-!9D U+045C afii10109
-!9E U+045B afii10108
-!9F U+045F afii10193
-!A0 U+00A0 space
-!A1 U+040E afii10062
-!A2 U+045E afii10110
-!A3 U+0408 afii10057
-!A4 U+00A4 currency
-!A5 U+0490 afii10050
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+0401 afii10023
-!A9 U+00A9 copyright
-!AA U+0404 afii10053
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+0407 afii10056
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+0406 afii10055
-!B3 U+0456 afii10103
-!B4 U+0491 afii10098
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+0451 afii10071
-!B9 U+2116 afii61352
-!BA U+0454 afii10101
-!BB U+00BB guillemotright
-!BC U+0458 afii10105
-!BD U+0405 afii10054
-!BE U+0455 afii10102
-!BF U+0457 afii10104
-!C0 U+0410 afii10017
-!C1 U+0411 afii10018
-!C2 U+0412 afii10019
-!C3 U+0413 afii10020
-!C4 U+0414 afii10021
-!C5 U+0415 afii10022
-!C6 U+0416 afii10024
-!C7 U+0417 afii10025
-!C8 U+0418 afii10026
-!C9 U+0419 afii10027
-!CA U+041A afii10028
-!CB U+041B afii10029
-!CC U+041C afii10030
-!CD U+041D afii10031
-!CE U+041E afii10032
-!CF U+041F afii10033
-!D0 U+0420 afii10034
-!D1 U+0421 afii10035
-!D2 U+0422 afii10036
-!D3 U+0423 afii10037
-!D4 U+0424 afii10038
-!D5 U+0425 afii10039
-!D6 U+0426 afii10040
-!D7 U+0427 afii10041
-!D8 U+0428 afii10042
-!D9 U+0429 afii10043
-!DA U+042A afii10044
-!DB U+042B afii10045
-!DC U+042C afii10046
-!DD U+042D afii10047
-!DE U+042E afii10048
-!DF U+042F afii10049
-!E0 U+0430 afii10065
-!E1 U+0431 afii10066
-!E2 U+0432 afii10067
-!E3 U+0433 afii10068
-!E4 U+0434 afii10069
-!E5 U+0435 afii10070
-!E6 U+0436 afii10072
-!E7 U+0437 afii10073
-!E8 U+0438 afii10074
-!E9 U+0439 afii10075
-!EA U+043A afii10076
-!EB U+043B afii10077
-!EC U+043C afii10078
-!ED U+043D afii10079
-!EE U+043E afii10080
-!EF U+043F afii10081
-!F0 U+0440 afii10082
-!F1 U+0441 afii10083
-!F2 U+0442 afii10084
-!F3 U+0443 afii10085
-!F4 U+0444 afii10086
-!F5 U+0445 afii10087
-!F6 U+0446 afii10088
-!F7 U+0447 afii10089
-!F8 U+0448 afii10090
-!F9 U+0449 afii10091
-!FA U+044A afii10092
-!FB U+044B afii10093
-!FC U+044C afii10094
-!FD U+044D afii10095
-!FE U+044E afii10096
-!FF U+044F afii10097
diff --git a/pdf/fpdf/makefont/cp1252.map b/pdf/fpdf/makefont/cp1252.map
deleted file mode 100755
index dd490e5..0000000
--- a/pdf/fpdf/makefont/cp1252.map
+++ /dev/null
@@ -1,251 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8A U+0160 Scaron
-!8B U+2039 guilsinglleft
-!8C U+0152 OE
-!8E U+017D Zcaron
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9A U+0161 scaron
-!9B U+203A guilsinglright
-!9C U+0153 oe
-!9E U+017E zcaron
-!9F U+0178 Ydieresis
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+00D0 Eth
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+00DE Thorn
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+00F0 eth
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+00FE thorn
-!FF U+00FF ydieresis
diff --git a/pdf/fpdf/makefont/cp1253.map b/pdf/fpdf/makefont/cp1253.map
deleted file mode 100755
index 4bd826f..0000000
--- a/pdf/fpdf/makefont/cp1253.map
+++ /dev/null
@@ -1,239 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!A0 U+00A0 space
-!A1 U+0385 dieresistonos
-!A2 U+0386 Alphatonos
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+2015 afii00208
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+0384 tonos
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+0388 Epsilontonos
-!B9 U+0389 Etatonos
-!BA U+038A Iotatonos
-!BB U+00BB guillemotright
-!BC U+038C Omicrontonos
-!BD U+00BD onehalf
-!BE U+038E Upsilontonos
-!BF U+038F Omegatonos
-!C0 U+0390 iotadieresistonos
-!C1 U+0391 Alpha
-!C2 U+0392 Beta
-!C3 U+0393 Gamma
-!C4 U+0394 Delta
-!C5 U+0395 Epsilon
-!C6 U+0396 Zeta
-!C7 U+0397 Eta
-!C8 U+0398 Theta
-!C9 U+0399 Iota
-!CA U+039A Kappa
-!CB U+039B Lambda
-!CC U+039C Mu
-!CD U+039D Nu
-!CE U+039E Xi
-!CF U+039F Omicron
-!D0 U+03A0 Pi
-!D1 U+03A1 Rho
-!D3 U+03A3 Sigma
-!D4 U+03A4 Tau
-!D5 U+03A5 Upsilon
-!D6 U+03A6 Phi
-!D7 U+03A7 Chi
-!D8 U+03A8 Psi
-!D9 U+03A9 Omega
-!DA U+03AA Iotadieresis
-!DB U+03AB Upsilondieresis
-!DC U+03AC alphatonos
-!DD U+03AD epsilontonos
-!DE U+03AE etatonos
-!DF U+03AF iotatonos
-!E0 U+03B0 upsilondieresistonos
-!E1 U+03B1 alpha
-!E2 U+03B2 beta
-!E3 U+03B3 gamma
-!E4 U+03B4 delta
-!E5 U+03B5 epsilon
-!E6 U+03B6 zeta
-!E7 U+03B7 eta
-!E8 U+03B8 theta
-!E9 U+03B9 iota
-!EA U+03BA kappa
-!EB U+03BB lambda
-!EC U+03BC mu
-!ED U+03BD nu
-!EE U+03BE xi
-!EF U+03BF omicron
-!F0 U+03C0 pi
-!F1 U+03C1 rho
-!F2 U+03C2 sigma1
-!F3 U+03C3 sigma
-!F4 U+03C4 tau
-!F5 U+03C5 upsilon
-!F6 U+03C6 phi
-!F7 U+03C7 chi
-!F8 U+03C8 psi
-!F9 U+03C9 omega
-!FA U+03CA iotadieresis
-!FB U+03CB upsilondieresis
-!FC U+03CC omicrontonos
-!FD U+03CD upsilontonos
-!FE U+03CE omegatonos
diff --git a/pdf/fpdf/makefont/cp1254.map b/pdf/fpdf/makefont/cp1254.map
deleted file mode 100755
index 829473b..0000000
--- a/pdf/fpdf/makefont/cp1254.map
+++ /dev/null
@@ -1,249 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8A U+0160 Scaron
-!8B U+2039 guilsinglleft
-!8C U+0152 OE
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9A U+0161 scaron
-!9B U+203A guilsinglright
-!9C U+0153 oe
-!9F U+0178 Ydieresis
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+011E Gbreve
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0130 Idotaccent
-!DE U+015E Scedilla
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+011F gbreve
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0131 dotlessi
-!FE U+015F scedilla
-!FF U+00FF ydieresis
diff --git a/pdf/fpdf/makefont/cp1255.map b/pdf/fpdf/makefont/cp1255.map
deleted file mode 100755
index 079e10c..0000000
--- a/pdf/fpdf/makefont/cp1255.map
+++ /dev/null
@@ -1,233 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+20AA afii57636
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00D7 multiply
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD sfthyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 middot
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00F7 divide
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+05B0 afii57799
-!C1 U+05B1 afii57801
-!C2 U+05B2 afii57800
-!C3 U+05B3 afii57802
-!C4 U+05B4 afii57793
-!C5 U+05B5 afii57794
-!C6 U+05B6 afii57795
-!C7 U+05B7 afii57798
-!C8 U+05B8 afii57797
-!C9 U+05B9 afii57806
-!CB U+05BB afii57796
-!CC U+05BC afii57807
-!CD U+05BD afii57839
-!CE U+05BE afii57645
-!CF U+05BF afii57841
-!D0 U+05C0 afii57842
-!D1 U+05C1 afii57804
-!D2 U+05C2 afii57803
-!D3 U+05C3 afii57658
-!D4 U+05F0 afii57716
-!D5 U+05F1 afii57717
-!D6 U+05F2 afii57718
-!D7 U+05F3 gereshhebrew
-!D8 U+05F4 gershayimhebrew
-!E0 U+05D0 afii57664
-!E1 U+05D1 afii57665
-!E2 U+05D2 afii57666
-!E3 U+05D3 afii57667
-!E4 U+05D4 afii57668
-!E5 U+05D5 afii57669
-!E6 U+05D6 afii57670
-!E7 U+05D7 afii57671
-!E8 U+05D8 afii57672
-!E9 U+05D9 afii57673
-!EA U+05DA afii57674
-!EB U+05DB afii57675
-!EC U+05DC afii57676
-!ED U+05DD afii57677
-!EE U+05DE afii57678
-!EF U+05DF afii57679
-!F0 U+05E0 afii57680
-!F1 U+05E1 afii57681
-!F2 U+05E2 afii57682
-!F3 U+05E3 afii57683
-!F4 U+05E4 afii57684
-!F5 U+05E5 afii57685
-!F6 U+05E6 afii57686
-!F7 U+05E7 afii57687
-!F8 U+05E8 afii57688
-!F9 U+05E9 afii57689
-!FA U+05EA afii57690
-!FD U+200E afii299
-!FE U+200F afii300
diff --git a/pdf/fpdf/makefont/cp1257.map b/pdf/fpdf/makefont/cp1257.map
deleted file mode 100755
index 2f2ecfa..0000000
--- a/pdf/fpdf/makefont/cp1257.map
+++ /dev/null
@@ -1,244 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!8D U+00A8 dieresis
-!8E U+02C7 caron
-!8F U+00B8 cedilla
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!9D U+00AF macron
-!9E U+02DB ogonek
-!A0 U+00A0 space
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00D8 Oslash
-!A9 U+00A9 copyright
-!AA U+0156 Rcommaaccent
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00C6 AE
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00F8 oslash
-!B9 U+00B9 onesuperior
-!BA U+0157 rcommaaccent
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00E6 ae
-!C0 U+0104 Aogonek
-!C1 U+012E Iogonek
-!C2 U+0100 Amacron
-!C3 U+0106 Cacute
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+0118 Eogonek
-!C7 U+0112 Emacron
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0179 Zacute
-!CB U+0116 Edotaccent
-!CC U+0122 Gcommaaccent
-!CD U+0136 Kcommaaccent
-!CE U+012A Imacron
-!CF U+013B Lcommaaccent
-!D0 U+0160 Scaron
-!D1 U+0143 Nacute
-!D2 U+0145 Ncommaaccent
-!D3 U+00D3 Oacute
-!D4 U+014C Omacron
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+0172 Uogonek
-!D9 U+0141 Lslash
-!DA U+015A Sacute
-!DB U+016A Umacron
-!DC U+00DC Udieresis
-!DD U+017B Zdotaccent
-!DE U+017D Zcaron
-!DF U+00DF germandbls
-!E0 U+0105 aogonek
-!E1 U+012F iogonek
-!E2 U+0101 amacron
-!E3 U+0107 cacute
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+0119 eogonek
-!E7 U+0113 emacron
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+017A zacute
-!EB U+0117 edotaccent
-!EC U+0123 gcommaaccent
-!ED U+0137 kcommaaccent
-!EE U+012B imacron
-!EF U+013C lcommaaccent
-!F0 U+0161 scaron
-!F1 U+0144 nacute
-!F2 U+0146 ncommaaccent
-!F3 U+00F3 oacute
-!F4 U+014D omacron
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+0173 uogonek
-!F9 U+0142 lslash
-!FA U+015B sacute
-!FB U+016B umacron
-!FC U+00FC udieresis
-!FD U+017C zdotaccent
-!FE U+017E zcaron
-!FF U+02D9 dotaccent
diff --git a/pdf/fpdf/makefont/cp1258.map b/pdf/fpdf/makefont/cp1258.map
deleted file mode 100755
index fed915f..0000000
--- a/pdf/fpdf/makefont/cp1258.map
+++ /dev/null
@@ -1,247 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!8C U+0152 OE
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!9C U+0153 oe
-!9F U+0178 Ydieresis
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+0300 gravecomb
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+0110 Dcroat
-!D1 U+00D1 Ntilde
-!D2 U+0309 hookabovecomb
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+01A0 Ohorn
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+01AF Uhorn
-!DE U+0303 tildecomb
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+0301 acutecomb
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+0111 dcroat
-!F1 U+00F1 ntilde
-!F2 U+0323 dotbelowcomb
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+01A1 ohorn
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+01B0 uhorn
-!FE U+20AB dong
-!FF U+00FF ydieresis
diff --git a/pdf/fpdf/makefont/cp874.map b/pdf/fpdf/makefont/cp874.map
deleted file mode 100755
index 1006e6b..0000000
--- a/pdf/fpdf/makefont/cp874.map
+++ /dev/null
@@ -1,225 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!85 U+2026 ellipsis
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!A0 U+00A0 space
-!A1 U+0E01 kokaithai
-!A2 U+0E02 khokhaithai
-!A3 U+0E03 khokhuatthai
-!A4 U+0E04 khokhwaithai
-!A5 U+0E05 khokhonthai
-!A6 U+0E06 khorakhangthai
-!A7 U+0E07 ngonguthai
-!A8 U+0E08 chochanthai
-!A9 U+0E09 chochingthai
-!AA U+0E0A chochangthai
-!AB U+0E0B sosothai
-!AC U+0E0C chochoethai
-!AD U+0E0D yoyingthai
-!AE U+0E0E dochadathai
-!AF U+0E0F topatakthai
-!B0 U+0E10 thothanthai
-!B1 U+0E11 thonangmonthothai
-!B2 U+0E12 thophuthaothai
-!B3 U+0E13 nonenthai
-!B4 U+0E14 dodekthai
-!B5 U+0E15 totaothai
-!B6 U+0E16 thothungthai
-!B7 U+0E17 thothahanthai
-!B8 U+0E18 thothongthai
-!B9 U+0E19 nonuthai
-!BA U+0E1A bobaimaithai
-!BB U+0E1B poplathai
-!BC U+0E1C phophungthai
-!BD U+0E1D fofathai
-!BE U+0E1E phophanthai
-!BF U+0E1F fofanthai
-!C0 U+0E20 phosamphaothai
-!C1 U+0E21 momathai
-!C2 U+0E22 yoyakthai
-!C3 U+0E23 roruathai
-!C4 U+0E24 ruthai
-!C5 U+0E25 lolingthai
-!C6 U+0E26 luthai
-!C7 U+0E27 wowaenthai
-!C8 U+0E28 sosalathai
-!C9 U+0E29 sorusithai
-!CA U+0E2A sosuathai
-!CB U+0E2B hohipthai
-!CC U+0E2C lochulathai
-!CD U+0E2D oangthai
-!CE U+0E2E honokhukthai
-!CF U+0E2F paiyannoithai
-!D0 U+0E30 saraathai
-!D1 U+0E31 maihanakatthai
-!D2 U+0E32 saraaathai
-!D3 U+0E33 saraamthai
-!D4 U+0E34 saraithai
-!D5 U+0E35 saraiithai
-!D6 U+0E36 sarauethai
-!D7 U+0E37 saraueethai
-!D8 U+0E38 sarauthai
-!D9 U+0E39 sarauuthai
-!DA U+0E3A phinthuthai
-!DF U+0E3F bahtthai
-!E0 U+0E40 saraethai
-!E1 U+0E41 saraaethai
-!E2 U+0E42 saraothai
-!E3 U+0E43 saraaimaimuanthai
-!E4 U+0E44 saraaimaimalaithai
-!E5 U+0E45 lakkhangyaothai
-!E6 U+0E46 maiyamokthai
-!E7 U+0E47 maitaikhuthai
-!E8 U+0E48 maiekthai
-!E9 U+0E49 maithothai
-!EA U+0E4A maitrithai
-!EB U+0E4B maichattawathai
-!EC U+0E4C thanthakhatthai
-!ED U+0E4D nikhahitthai
-!EE U+0E4E yamakkanthai
-!EF U+0E4F fongmanthai
-!F0 U+0E50 zerothai
-!F1 U+0E51 onethai
-!F2 U+0E52 twothai
-!F3 U+0E53 threethai
-!F4 U+0E54 fourthai
-!F5 U+0E55 fivethai
-!F6 U+0E56 sixthai
-!F7 U+0E57 seventhai
-!F8 U+0E58 eightthai
-!F9 U+0E59 ninethai
-!FA U+0E5A angkhankhuthai
-!FB U+0E5B khomutthai
diff --git a/pdf/fpdf/makefont/iso-8859-1.map b/pdf/fpdf/makefont/iso-8859-1.map
deleted file mode 100755
index 61740a3..0000000
--- a/pdf/fpdf/makefont/iso-8859-1.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+00D0 Eth
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+00DE Thorn
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+00F0 eth
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+00FE thorn
-!FF U+00FF ydieresis
diff --git a/pdf/fpdf/makefont/iso-8859-11.map b/pdf/fpdf/makefont/iso-8859-11.map
deleted file mode 100755
index 9168812..0000000
--- a/pdf/fpdf/makefont/iso-8859-11.map
+++ /dev/null
@@ -1,248 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0E01 kokaithai
-!A2 U+0E02 khokhaithai
-!A3 U+0E03 khokhuatthai
-!A4 U+0E04 khokhwaithai
-!A5 U+0E05 khokhonthai
-!A6 U+0E06 khorakhangthai
-!A7 U+0E07 ngonguthai
-!A8 U+0E08 chochanthai
-!A9 U+0E09 chochingthai
-!AA U+0E0A chochangthai
-!AB U+0E0B sosothai
-!AC U+0E0C chochoethai
-!AD U+0E0D yoyingthai
-!AE U+0E0E dochadathai
-!AF U+0E0F topatakthai
-!B0 U+0E10 thothanthai
-!B1 U+0E11 thonangmonthothai
-!B2 U+0E12 thophuthaothai
-!B3 U+0E13 nonenthai
-!B4 U+0E14 dodekthai
-!B5 U+0E15 totaothai
-!B6 U+0E16 thothungthai
-!B7 U+0E17 thothahanthai
-!B8 U+0E18 thothongthai
-!B9 U+0E19 nonuthai
-!BA U+0E1A bobaimaithai
-!BB U+0E1B poplathai
-!BC U+0E1C phophungthai
-!BD U+0E1D fofathai
-!BE U+0E1E phophanthai
-!BF U+0E1F fofanthai
-!C0 U+0E20 phosamphaothai
-!C1 U+0E21 momathai
-!C2 U+0E22 yoyakthai
-!C3 U+0E23 roruathai
-!C4 U+0E24 ruthai
-!C5 U+0E25 lolingthai
-!C6 U+0E26 luthai
-!C7 U+0E27 wowaenthai
-!C8 U+0E28 sosalathai
-!C9 U+0E29 sorusithai
-!CA U+0E2A sosuathai
-!CB U+0E2B hohipthai
-!CC U+0E2C lochulathai
-!CD U+0E2D oangthai
-!CE U+0E2E honokhukthai
-!CF U+0E2F paiyannoithai
-!D0 U+0E30 saraathai
-!D1 U+0E31 maihanakatthai
-!D2 U+0E32 saraaathai
-!D3 U+0E33 saraamthai
-!D4 U+0E34 saraithai
-!D5 U+0E35 saraiithai
-!D6 U+0E36 sarauethai
-!D7 U+0E37 saraueethai
-!D8 U+0E38 sarauthai
-!D9 U+0E39 sarauuthai
-!DA U+0E3A phinthuthai
-!DF U+0E3F bahtthai
-!E0 U+0E40 saraethai
-!E1 U+0E41 saraaethai
-!E2 U+0E42 saraothai
-!E3 U+0E43 saraaimaimuanthai
-!E4 U+0E44 saraaimaimalaithai
-!E5 U+0E45 lakkhangyaothai
-!E6 U+0E46 maiyamokthai
-!E7 U+0E47 maitaikhuthai
-!E8 U+0E48 maiekthai
-!E9 U+0E49 maithothai
-!EA U+0E4A maitrithai
-!EB U+0E4B maichattawathai
-!EC U+0E4C thanthakhatthai
-!ED U+0E4D nikhahitthai
-!EE U+0E4E yamakkanthai
-!EF U+0E4F fongmanthai
-!F0 U+0E50 zerothai
-!F1 U+0E51 onethai
-!F2 U+0E52 twothai
-!F3 U+0E53 threethai
-!F4 U+0E54 fourthai
-!F5 U+0E55 fivethai
-!F6 U+0E56 sixthai
-!F7 U+0E57 seventhai
-!F8 U+0E58 eightthai
-!F9 U+0E59 ninethai
-!FA U+0E5A angkhankhuthai
-!FB U+0E5B khomutthai
diff --git a/pdf/fpdf/makefont/iso-8859-15.map b/pdf/fpdf/makefont/iso-8859-15.map
deleted file mode 100755
index 6c2b571..0000000
--- a/pdf/fpdf/makefont/iso-8859-15.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+20AC Euro
-!A5 U+00A5 yen
-!A6 U+0160 Scaron
-!A7 U+00A7 section
-!A8 U+0161 scaron
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+017D Zcaron
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+017E zcaron
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+0152 OE
-!BD U+0153 oe
-!BE U+0178 Ydieresis
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+00D0 Eth
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+00DE Thorn
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+00F0 eth
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+00FE thorn
-!FF U+00FF ydieresis
diff --git a/pdf/fpdf/makefont/iso-8859-16.map b/pdf/fpdf/makefont/iso-8859-16.map
deleted file mode 100755
index 202c8fe..0000000
--- a/pdf/fpdf/makefont/iso-8859-16.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0104 Aogonek
-!A2 U+0105 aogonek
-!A3 U+0141 Lslash
-!A4 U+20AC Euro
-!A5 U+201E quotedblbase
-!A6 U+0160 Scaron
-!A7 U+00A7 section
-!A8 U+0161 scaron
-!A9 U+00A9 copyright
-!AA U+0218 Scommaaccent
-!AB U+00AB guillemotleft
-!AC U+0179 Zacute
-!AD U+00AD hyphen
-!AE U+017A zacute
-!AF U+017B Zdotaccent
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+010C Ccaron
-!B3 U+0142 lslash
-!B4 U+017D Zcaron
-!B5 U+201D quotedblright
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+017E zcaron
-!B9 U+010D ccaron
-!BA U+0219 scommaaccent
-!BB U+00BB guillemotright
-!BC U+0152 OE
-!BD U+0153 oe
-!BE U+0178 Ydieresis
-!BF U+017C zdotaccent
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+0106 Cacute
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+0110 Dcroat
-!D1 U+0143 Nacute
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+0150 Ohungarumlaut
-!D6 U+00D6 Odieresis
-!D7 U+015A Sacute
-!D8 U+0170 Uhungarumlaut
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0118 Eogonek
-!DE U+021A Tcommaaccent
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+0107 cacute
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+0111 dcroat
-!F1 U+0144 nacute
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+0151 ohungarumlaut
-!F6 U+00F6 odieresis
-!F7 U+015B sacute
-!F8 U+0171 uhungarumlaut
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0119 eogonek
-!FE U+021B tcommaaccent
-!FF U+00FF ydieresis
diff --git a/pdf/fpdf/makefont/iso-8859-2.map b/pdf/fpdf/makefont/iso-8859-2.map
deleted file mode 100755
index 65ae09f..0000000
--- a/pdf/fpdf/makefont/iso-8859-2.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0104 Aogonek
-!A2 U+02D8 breve
-!A3 U+0141 Lslash
-!A4 U+00A4 currency
-!A5 U+013D Lcaron
-!A6 U+015A Sacute
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+0160 Scaron
-!AA U+015E Scedilla
-!AB U+0164 Tcaron
-!AC U+0179 Zacute
-!AD U+00AD hyphen
-!AE U+017D Zcaron
-!AF U+017B Zdotaccent
-!B0 U+00B0 degree
-!B1 U+0105 aogonek
-!B2 U+02DB ogonek
-!B3 U+0142 lslash
-!B4 U+00B4 acute
-!B5 U+013E lcaron
-!B6 U+015B sacute
-!B7 U+02C7 caron
-!B8 U+00B8 cedilla
-!B9 U+0161 scaron
-!BA U+015F scedilla
-!BB U+0165 tcaron
-!BC U+017A zacute
-!BD U+02DD hungarumlaut
-!BE U+017E zcaron
-!BF U+017C zdotaccent
-!C0 U+0154 Racute
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+0139 Lacute
-!C6 U+0106 Cacute
-!C7 U+00C7 Ccedilla
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0118 Eogonek
-!CB U+00CB Edieresis
-!CC U+011A Ecaron
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+010E Dcaron
-!D0 U+0110 Dcroat
-!D1 U+0143 Nacute
-!D2 U+0147 Ncaron
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+0150 Ohungarumlaut
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+0158 Rcaron
-!D9 U+016E Uring
-!DA U+00DA Uacute
-!DB U+0170 Uhungarumlaut
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+0162 Tcommaaccent
-!DF U+00DF germandbls
-!E0 U+0155 racute
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+013A lacute
-!E6 U+0107 cacute
-!E7 U+00E7 ccedilla
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+0119 eogonek
-!EB U+00EB edieresis
-!EC U+011B ecaron
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+010F dcaron
-!F0 U+0111 dcroat
-!F1 U+0144 nacute
-!F2 U+0148 ncaron
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+0151 ohungarumlaut
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+0159 rcaron
-!F9 U+016F uring
-!FA U+00FA uacute
-!FB U+0171 uhungarumlaut
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+0163 tcommaaccent
-!FF U+02D9 dotaccent
diff --git a/pdf/fpdf/makefont/iso-8859-4.map b/pdf/fpdf/makefont/iso-8859-4.map
deleted file mode 100755
index a7d87bf..0000000
--- a/pdf/fpdf/makefont/iso-8859-4.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0104 Aogonek
-!A2 U+0138 kgreenlandic
-!A3 U+0156 Rcommaaccent
-!A4 U+00A4 currency
-!A5 U+0128 Itilde
-!A6 U+013B Lcommaaccent
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+0160 Scaron
-!AA U+0112 Emacron
-!AB U+0122 Gcommaaccent
-!AC U+0166 Tbar
-!AD U+00AD hyphen
-!AE U+017D Zcaron
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+0105 aogonek
-!B2 U+02DB ogonek
-!B3 U+0157 rcommaaccent
-!B4 U+00B4 acute
-!B5 U+0129 itilde
-!B6 U+013C lcommaaccent
-!B7 U+02C7 caron
-!B8 U+00B8 cedilla
-!B9 U+0161 scaron
-!BA U+0113 emacron
-!BB U+0123 gcommaaccent
-!BC U+0167 tbar
-!BD U+014A Eng
-!BE U+017E zcaron
-!BF U+014B eng
-!C0 U+0100 Amacron
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+012E Iogonek
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0118 Eogonek
-!CB U+00CB Edieresis
-!CC U+0116 Edotaccent
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+012A Imacron
-!D0 U+0110 Dcroat
-!D1 U+0145 Ncommaaccent
-!D2 U+014C Omacron
-!D3 U+0136 Kcommaaccent
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+0172 Uogonek
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0168 Utilde
-!DE U+016A Umacron
-!DF U+00DF germandbls
-!E0 U+0101 amacron
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+012F iogonek
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+0119 eogonek
-!EB U+00EB edieresis
-!EC U+0117 edotaccent
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+012B imacron
-!F0 U+0111 dcroat
-!F1 U+0146 ncommaaccent
-!F2 U+014D omacron
-!F3 U+0137 kcommaaccent
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+0173 uogonek
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0169 utilde
-!FE U+016B umacron
-!FF U+02D9 dotaccent
diff --git a/pdf/fpdf/makefont/iso-8859-5.map b/pdf/fpdf/makefont/iso-8859-5.map
deleted file mode 100755
index f9cd4ed..0000000
--- a/pdf/fpdf/makefont/iso-8859-5.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0401 afii10023
-!A2 U+0402 afii10051
-!A3 U+0403 afii10052
-!A4 U+0404 afii10053
-!A5 U+0405 afii10054
-!A6 U+0406 afii10055
-!A7 U+0407 afii10056
-!A8 U+0408 afii10057
-!A9 U+0409 afii10058
-!AA U+040A afii10059
-!AB U+040B afii10060
-!AC U+040C afii10061
-!AD U+00AD hyphen
-!AE U+040E afii10062
-!AF U+040F afii10145
-!B0 U+0410 afii10017
-!B1 U+0411 afii10018
-!B2 U+0412 afii10019
-!B3 U+0413 afii10020
-!B4 U+0414 afii10021
-!B5 U+0415 afii10022
-!B6 U+0416 afii10024
-!B7 U+0417 afii10025
-!B8 U+0418 afii10026
-!B9 U+0419 afii10027
-!BA U+041A afii10028
-!BB U+041B afii10029
-!BC U+041C afii10030
-!BD U+041D afii10031
-!BE U+041E afii10032
-!BF U+041F afii10033
-!C0 U+0420 afii10034
-!C1 U+0421 afii10035
-!C2 U+0422 afii10036
-!C3 U+0423 afii10037
-!C4 U+0424 afii10038
-!C5 U+0425 afii10039
-!C6 U+0426 afii10040
-!C7 U+0427 afii10041
-!C8 U+0428 afii10042
-!C9 U+0429 afii10043
-!CA U+042A afii10044
-!CB U+042B afii10045
-!CC U+042C afii10046
-!CD U+042D afii10047
-!CE U+042E afii10048
-!CF U+042F afii10049
-!D0 U+0430 afii10065
-!D1 U+0431 afii10066
-!D2 U+0432 afii10067
-!D3 U+0433 afii10068
-!D4 U+0434 afii10069
-!D5 U+0435 afii10070
-!D6 U+0436 afii10072
-!D7 U+0437 afii10073
-!D8 U+0438 afii10074
-!D9 U+0439 afii10075
-!DA U+043A afii10076
-!DB U+043B afii10077
-!DC U+043C afii10078
-!DD U+043D afii10079
-!DE U+043E afii10080
-!DF U+043F afii10081
-!E0 U+0440 afii10082
-!E1 U+0441 afii10083
-!E2 U+0442 afii10084
-!E3 U+0443 afii10085
-!E4 U+0444 afii10086
-!E5 U+0445 afii10087
-!E6 U+0446 afii10088
-!E7 U+0447 afii10089
-!E8 U+0448 afii10090
-!E9 U+0449 afii10091
-!EA U+044A afii10092
-!EB U+044B afii10093
-!EC U+044C afii10094
-!ED U+044D afii10095
-!EE U+044E afii10096
-!EF U+044F afii10097
-!F0 U+2116 afii61352
-!F1 U+0451 afii10071
-!F2 U+0452 afii10099
-!F3 U+0453 afii10100
-!F4 U+0454 afii10101
-!F5 U+0455 afii10102
-!F6 U+0456 afii10103
-!F7 U+0457 afii10104
-!F8 U+0458 afii10105
-!F9 U+0459 afii10106
-!FA U+045A afii10107
-!FB U+045B afii10108
-!FC U+045C afii10109
-!FD U+00A7 section
-!FE U+045E afii10110
-!FF U+045F afii10193
diff --git a/pdf/fpdf/makefont/iso-8859-7.map b/pdf/fpdf/makefont/iso-8859-7.map
deleted file mode 100755
index e163796..0000000
--- a/pdf/fpdf/makefont/iso-8859-7.map
+++ /dev/null
@@ -1,250 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+2018 quoteleft
-!A2 U+2019 quoteright
-!A3 U+00A3 sterling
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AF U+2015 afii00208
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+0384 tonos
-!B5 U+0385 dieresistonos
-!B6 U+0386 Alphatonos
-!B7 U+00B7 periodcentered
-!B8 U+0388 Epsilontonos
-!B9 U+0389 Etatonos
-!BA U+038A Iotatonos
-!BB U+00BB guillemotright
-!BC U+038C Omicrontonos
-!BD U+00BD onehalf
-!BE U+038E Upsilontonos
-!BF U+038F Omegatonos
-!C0 U+0390 iotadieresistonos
-!C1 U+0391 Alpha
-!C2 U+0392 Beta
-!C3 U+0393 Gamma
-!C4 U+0394 Delta
-!C5 U+0395 Epsilon
-!C6 U+0396 Zeta
-!C7 U+0397 Eta
-!C8 U+0398 Theta
-!C9 U+0399 Iota
-!CA U+039A Kappa
-!CB U+039B Lambda
-!CC U+039C Mu
-!CD U+039D Nu
-!CE U+039E Xi
-!CF U+039F Omicron
-!D0 U+03A0 Pi
-!D1 U+03A1 Rho
-!D3 U+03A3 Sigma
-!D4 U+03A4 Tau
-!D5 U+03A5 Upsilon
-!D6 U+03A6 Phi
-!D7 U+03A7 Chi
-!D8 U+03A8 Psi
-!D9 U+03A9 Omega
-!DA U+03AA Iotadieresis
-!DB U+03AB Upsilondieresis
-!DC U+03AC alphatonos
-!DD U+03AD epsilontonos
-!DE U+03AE etatonos
-!DF U+03AF iotatonos
-!E0 U+03B0 upsilondieresistonos
-!E1 U+03B1 alpha
-!E2 U+03B2 beta
-!E3 U+03B3 gamma
-!E4 U+03B4 delta
-!E5 U+03B5 epsilon
-!E6 U+03B6 zeta
-!E7 U+03B7 eta
-!E8 U+03B8 theta
-!E9 U+03B9 iota
-!EA U+03BA kappa
-!EB U+03BB lambda
-!EC U+03BC mu
-!ED U+03BD nu
-!EE U+03BE xi
-!EF U+03BF omicron
-!F0 U+03C0 pi
-!F1 U+03C1 rho
-!F2 U+03C2 sigma1
-!F3 U+03C3 sigma
-!F4 U+03C4 tau
-!F5 U+03C5 upsilon
-!F6 U+03C6 phi
-!F7 U+03C7 chi
-!F8 U+03C8 psi
-!F9 U+03C9 omega
-!FA U+03CA iotadieresis
-!FB U+03CB upsilondieresis
-!FC U+03CC omicrontonos
-!FD U+03CD upsilontonos
-!FE U+03CE omegatonos
diff --git a/pdf/fpdf/makefont/iso-8859-9.map b/pdf/fpdf/makefont/iso-8859-9.map
deleted file mode 100755
index 48c123a..0000000
--- a/pdf/fpdf/makefont/iso-8859-9.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+011E Gbreve
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0130 Idotaccent
-!DE U+015E Scedilla
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+011F gbreve
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0131 dotlessi
-!FE U+015F scedilla
-!FF U+00FF ydieresis
diff --git a/pdf/fpdf/makefont/koi8-r.map b/pdf/fpdf/makefont/koi8-r.map
deleted file mode 100755
index 6ad5d05..0000000
--- a/pdf/fpdf/makefont/koi8-r.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+2500 SF100000
-!81 U+2502 SF110000
-!82 U+250C SF010000
-!83 U+2510 SF030000
-!84 U+2514 SF020000
-!85 U+2518 SF040000
-!86 U+251C SF080000
-!87 U+2524 SF090000
-!88 U+252C SF060000
-!89 U+2534 SF070000
-!8A U+253C SF050000
-!8B U+2580 upblock
-!8C U+2584 dnblock
-!8D U+2588 block
-!8E U+258C lfblock
-!8F U+2590 rtblock
-!90 U+2591 ltshade
-!91 U+2592 shade
-!92 U+2593 dkshade
-!93 U+2320 integraltp
-!94 U+25A0 filledbox
-!95 U+2219 periodcentered
-!96 U+221A radical
-!97 U+2248 approxequal
-!98 U+2264 lessequal
-!99 U+2265 greaterequal
-!9A U+00A0 space
-!9B U+2321 integralbt
-!9C U+00B0 degree
-!9D U+00B2 twosuperior
-!9E U+00B7 periodcentered
-!9F U+00F7 divide
-!A0 U+2550 SF430000
-!A1 U+2551 SF240000
-!A2 U+2552 SF510000
-!A3 U+0451 afii10071
-!A4 U+2553 SF520000
-!A5 U+2554 SF390000
-!A6 U+2555 SF220000
-!A7 U+2556 SF210000
-!A8 U+2557 SF250000
-!A9 U+2558 SF500000
-!AA U+2559 SF490000
-!AB U+255A SF380000
-!AC U+255B SF280000
-!AD U+255C SF270000
-!AE U+255D SF260000
-!AF U+255E SF360000
-!B0 U+255F SF370000
-!B1 U+2560 SF420000
-!B2 U+2561 SF190000
-!B3 U+0401 afii10023
-!B4 U+2562 SF200000
-!B5 U+2563 SF230000
-!B6 U+2564 SF470000
-!B7 U+2565 SF480000
-!B8 U+2566 SF410000
-!B9 U+2567 SF450000
-!BA U+2568 SF460000
-!BB U+2569 SF400000
-!BC U+256A SF540000
-!BD U+256B SF530000
-!BE U+256C SF440000
-!BF U+00A9 copyright
-!C0 U+044E afii10096
-!C1 U+0430 afii10065
-!C2 U+0431 afii10066
-!C3 U+0446 afii10088
-!C4 U+0434 afii10069
-!C5 U+0435 afii10070
-!C6 U+0444 afii10086
-!C7 U+0433 afii10068
-!C8 U+0445 afii10087
-!C9 U+0438 afii10074
-!CA U+0439 afii10075
-!CB U+043A afii10076
-!CC U+043B afii10077
-!CD U+043C afii10078
-!CE U+043D afii10079
-!CF U+043E afii10080
-!D0 U+043F afii10081
-!D1 U+044F afii10097
-!D2 U+0440 afii10082
-!D3 U+0441 afii10083
-!D4 U+0442 afii10084
-!D5 U+0443 afii10085
-!D6 U+0436 afii10072
-!D7 U+0432 afii10067
-!D8 U+044C afii10094
-!D9 U+044B afii10093
-!DA U+0437 afii10073
-!DB U+0448 afii10090
-!DC U+044D afii10095
-!DD U+0449 afii10091
-!DE U+0447 afii10089
-!DF U+044A afii10092
-!E0 U+042E afii10048
-!E1 U+0410 afii10017
-!E2 U+0411 afii10018
-!E3 U+0426 afii10040
-!E4 U+0414 afii10021
-!E5 U+0415 afii10022
-!E6 U+0424 afii10038
-!E7 U+0413 afii10020
-!E8 U+0425 afii10039
-!E9 U+0418 afii10026
-!EA U+0419 afii10027
-!EB U+041A afii10028
-!EC U+041B afii10029
-!ED U+041C afii10030
-!EE U+041D afii10031
-!EF U+041E afii10032
-!F0 U+041F afii10033
-!F1 U+042F afii10049
-!F2 U+0420 afii10034
-!F3 U+0421 afii10035
-!F4 U+0422 afii10036
-!F5 U+0423 afii10037
-!F6 U+0416 afii10024
-!F7 U+0412 afii10019
-!F8 U+042C afii10046
-!F9 U+042B afii10045
-!FA U+0417 afii10025
-!FB U+0428 afii10042
-!FC U+042D afii10047
-!FD U+0429 afii10043
-!FE U+0427 afii10041
-!FF U+042A afii10044
diff --git a/pdf/fpdf/makefont/koi8-u.map b/pdf/fpdf/makefont/koi8-u.map
deleted file mode 100755
index 40a7e4f..0000000
--- a/pdf/fpdf/makefont/koi8-u.map
+++ /dev/null
@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+2500 SF100000
-!81 U+2502 SF110000
-!82 U+250C SF010000
-!83 U+2510 SF030000
-!84 U+2514 SF020000
-!85 U+2518 SF040000
-!86 U+251C SF080000
-!87 U+2524 SF090000
-!88 U+252C SF060000
-!89 U+2534 SF070000
-!8A U+253C SF050000
-!8B U+2580 upblock
-!8C U+2584 dnblock
-!8D U+2588 block
-!8E U+258C lfblock
-!8F U+2590 rtblock
-!90 U+2591 ltshade
-!91 U+2592 shade
-!92 U+2593 dkshade
-!93 U+2320 integraltp
-!94 U+25A0 filledbox
-!95 U+2022 bullet
-!96 U+221A radical
-!97 U+2248 approxequal
-!98 U+2264 lessequal
-!99 U+2265 greaterequal
-!9A U+00A0 space
-!9B U+2321 integralbt
-!9C U+00B0 degree
-!9D U+00B2 twosuperior
-!9E U+00B7 periodcentered
-!9F U+00F7 divide
-!A0 U+2550 SF430000
-!A1 U+2551 SF240000
-!A2 U+2552 SF510000
-!A3 U+0451 afii10071
-!A4 U+0454 afii10101
-!A5 U+2554 SF390000
-!A6 U+0456 afii10103
-!A7 U+0457 afii10104
-!A8 U+2557 SF250000
-!A9 U+2558 SF500000
-!AA U+2559 SF490000
-!AB U+255A SF380000
-!AC U+255B SF280000
-!AD U+0491 afii10098
-!AE U+255D SF260000
-!AF U+255E SF360000
-!B0 U+255F SF370000
-!B1 U+2560 SF420000
-!B2 U+2561 SF190000
-!B3 U+0401 afii10023
-!B4 U+0404 afii10053
-!B5 U+2563 SF230000
-!B6 U+0406 afii10055
-!B7 U+0407 afii10056
-!B8 U+2566 SF410000
-!B9 U+2567 SF450000
-!BA U+2568 SF460000
-!BB U+2569 SF400000
-!BC U+256A SF540000
-!BD U+0490 afii10050
-!BE U+256C SF440000
-!BF U+00A9 copyright
-!C0 U+044E afii10096
-!C1 U+0430 afii10065
-!C2 U+0431 afii10066
-!C3 U+0446 afii10088
-!C4 U+0434 afii10069
-!C5 U+0435 afii10070
-!C6 U+0444 afii10086
-!C7 U+0433 afii10068
-!C8 U+0445 afii10087
-!C9 U+0438 afii10074
-!CA U+0439 afii10075
-!CB U+043A afii10076
-!CC U+043B afii10077
-!CD U+043C afii10078
-!CE U+043D afii10079
-!CF U+043E afii10080
-!D0 U+043F afii10081
-!D1 U+044F afii10097
-!D2 U+0440 afii10082
-!D3 U+0441 afii10083
-!D4 U+0442 afii10084
-!D5 U+0443 afii10085
-!D6 U+0436 afii10072
-!D7 U+0432 afii10067
-!D8 U+044C afii10094
-!D9 U+044B afii10093
-!DA U+0437 afii10073
-!DB U+0448 afii10090
-!DC U+044D afii10095
-!DD U+0449 afii10091
-!DE U+0447 afii10089
-!DF U+044A afii10092
-!E0 U+042E afii10048
-!E1 U+0410 afii10017
-!E2 U+0411 afii10018
-!E3 U+0426 afii10040
-!E4 U+0414 afii10021
-!E5 U+0415 afii10022
-!E6 U+0424 afii10038
-!E7 U+0413 afii10020
-!E8 U+0425 afii10039
-!E9 U+0418 afii10026
-!EA U+0419 afii10027
-!EB U+041A afii10028
-!EC U+041B afii10029
-!ED U+041C afii10030
-!EE U+041D afii10031
-!EF U+041E afii10032
-!F0 U+041F afii10033
-!F1 U+042F afii10049
-!F2 U+0420 afii10034
-!F3 U+0421 afii10035
-!F4 U+0422 afii10036
-!F5 U+0423 afii10037
-!F6 U+0416 afii10024
-!F7 U+0412 afii10019
-!F8 U+042C afii10046
-!F9 U+042B afii10045
-!FA U+0417 afii10025
-!FB U+0428 afii10042
-!FC U+042D afii10047
-!FD U+0429 afii10043
-!FE U+0427 afii10041
-!FF U+042A afii10044
diff --git a/pdf/fpdf/makefont/makefont.php b/pdf/fpdf/makefont/makefont.php
deleted file mode 100755
index fbe8dcf..0000000
--- a/pdf/fpdf/makefont/makefont.php
+++ /dev/null
@@ -1,447 +0,0 @@
-$severity: ";
- echo "$txt
";
- }
-}
-
-function Notice($txt)
-{
- Message($txt, 'Notice');
-}
-
-function Warning($txt)
-{
- Message($txt, 'Warning');
-}
-
-function Error($txt)
-{
- Message($txt, 'Error');
- exit;
-}
-
-function LoadMap($enc)
-{
- $file = dirname(__FILE__).'/'.strtolower($enc).'.map';
- $a = file($file);
- if(empty($a))
- Error('Encoding not found: '.$enc);
- $map = array_fill(0, 256, array('uv'=>-1, 'name'=>'.notdef'));
- foreach($a as $line)
- {
- $e = explode(' ', rtrim($line));
- $c = hexdec(substr($e[0],1));
- $uv = hexdec(substr($e[1],2));
- $name = $e[2];
- $map[$c] = array('uv'=>$uv, 'name'=>$name);
- }
- return $map;
-}
-
-function GetInfoFromTrueType($file, $embed, $subset, $map)
-{
- // Return information from a TrueType font
- try
- {
- $ttf = new TTFParser($file);
- $ttf->Parse();
- }
- catch(Exception $e)
- {
- Error($e->getMessage());
- }
- if($embed)
- {
- if(!$ttf->embeddable)
- Error('Font license does not allow embedding');
- if($subset)
- {
- $chars = array();
- foreach($map as $v)
- {
- if($v['name']!='.notdef')
- $chars[] = $v['uv'];
- }
- $ttf->Subset($chars);
- $info['Data'] = $ttf->Build();
- }
- else
- $info['Data'] = file_get_contents($file);
- $info['OriginalSize'] = strlen($info['Data']);
- }
- $k = 1000/$ttf->unitsPerEm;
- $info['FontName'] = $ttf->postScriptName;
- $info['Bold'] = $ttf->bold;
- $info['ItalicAngle'] = $ttf->italicAngle;
- $info['IsFixedPitch'] = $ttf->isFixedPitch;
- $info['Ascender'] = round($k*$ttf->typoAscender);
- $info['Descender'] = round($k*$ttf->typoDescender);
- $info['UnderlineThickness'] = round($k*$ttf->underlineThickness);
- $info['UnderlinePosition'] = round($k*$ttf->underlinePosition);
- $info['FontBBox'] = array(round($k*$ttf->xMin), round($k*$ttf->yMin), round($k*$ttf->xMax), round($k*$ttf->yMax));
- $info['CapHeight'] = round($k*$ttf->capHeight);
- $info['MissingWidth'] = round($k*$ttf->glyphs[0]['w']);
- $widths = array_fill(0, 256, $info['MissingWidth']);
- foreach($map as $c=>$v)
- {
- if($v['name']!='.notdef')
- {
- if(isset($ttf->chars[$v['uv']]))
- {
- $id = $ttf->chars[$v['uv']];
- $w = $ttf->glyphs[$id]['w'];
- $widths[$c] = round($k*$w);
- }
- else
- Warning('Character '.$v['name'].' is missing');
- }
- }
- $info['Widths'] = $widths;
- return $info;
-}
-
-function GetInfoFromType1($file, $embed, $map)
-{
- // Return information from a Type1 font
- if($embed)
- {
- $f = fopen($file, 'rb');
- if(!$f)
- Error('Can\'t open font file');
- // Read first segment
- $a = unpack('Cmarker/Ctype/Vsize', fread($f,6));
- if($a['marker']!=128)
- Error('Font file is not a valid binary Type1');
- $size1 = $a['size'];
- $data = fread($f, $size1);
- // Read second segment
- $a = unpack('Cmarker/Ctype/Vsize', fread($f,6));
- if($a['marker']!=128)
- Error('Font file is not a valid binary Type1');
- $size2 = $a['size'];
- $data .= fread($f, $size2);
- fclose($f);
- $info['Data'] = $data;
- $info['Size1'] = $size1;
- $info['Size2'] = $size2;
- }
-
- $afm = substr($file, 0, -3).'afm';
- if(!file_exists($afm))
- Error('AFM font file not found: '.$afm);
- $a = file($afm);
- if(empty($a))
- Error('AFM file empty or not readable');
- foreach($a as $line)
- {
- $e = explode(' ', rtrim($line));
- if(count($e)<2)
- continue;
- $entry = $e[0];
- if($entry=='C')
- {
- $w = $e[4];
- $name = $e[7];
- $cw[$name] = $w;
- }
- elseif($entry=='FontName')
- $info['FontName'] = $e[1];
- elseif($entry=='Weight')
- $info['Weight'] = $e[1];
- elseif($entry=='ItalicAngle')
- $info['ItalicAngle'] = (int)$e[1];
- elseif($entry=='Ascender')
- $info['Ascender'] = (int)$e[1];
- elseif($entry=='Descender')
- $info['Descender'] = (int)$e[1];
- elseif($entry=='UnderlineThickness')
- $info['UnderlineThickness'] = (int)$e[1];
- elseif($entry=='UnderlinePosition')
- $info['UnderlinePosition'] = (int)$e[1];
- elseif($entry=='IsFixedPitch')
- $info['IsFixedPitch'] = ($e[1]=='true');
- elseif($entry=='FontBBox')
- $info['FontBBox'] = array((int)$e[1], (int)$e[2], (int)$e[3], (int)$e[4]);
- elseif($entry=='CapHeight')
- $info['CapHeight'] = (int)$e[1];
- elseif($entry=='StdVW')
- $info['StdVW'] = (int)$e[1];
- }
-
- if(!isset($info['FontName']))
- Error('FontName missing in AFM file');
- if(!isset($info['Ascender']))
- $info['Ascender'] = $info['FontBBox'][3];
- if(!isset($info['Descender']))
- $info['Descender'] = $info['FontBBox'][1];
- $info['Bold'] = isset($info['Weight']) && preg_match('/bold|black/i', $info['Weight']);
- if(isset($cw['.notdef']))
- $info['MissingWidth'] = $cw['.notdef'];
- else
- $info['MissingWidth'] = 0;
- $widths = array_fill(0, 256, $info['MissingWidth']);
- foreach($map as $c=>$v)
- {
- if($v['name']!='.notdef')
- {
- if(isset($cw[$v['name']]))
- $widths[$c] = $cw[$v['name']];
- else
- Warning('Character '.$v['name'].' is missing');
- }
- }
- $info['Widths'] = $widths;
- return $info;
-}
-
-function MakeFontDescriptor($info)
-{
- // Ascent
- $fd = "array('Ascent'=>".$info['Ascender'];
- // Descent
- $fd .= ",'Descent'=>".$info['Descender'];
- // CapHeight
- if(!empty($info['CapHeight']))
- $fd .= ",'CapHeight'=>".$info['CapHeight'];
- else
- $fd .= ",'CapHeight'=>".$info['Ascender'];
- // Flags
- $flags = 0;
- if($info['IsFixedPitch'])
- $flags += 1<<0;
- $flags += 1<<5;
- if($info['ItalicAngle']!=0)
- $flags += 1<<6;
- $fd .= ",'Flags'=>".$flags;
- // FontBBox
- $fbb = $info['FontBBox'];
- $fd .= ",'FontBBox'=>'[".$fbb[0].' '.$fbb[1].' '.$fbb[2].' '.$fbb[3]."]'";
- // ItalicAngle
- $fd .= ",'ItalicAngle'=>".$info['ItalicAngle'];
- // StemV
- if(isset($info['StdVW']))
- $stemv = $info['StdVW'];
- elseif($info['Bold'])
- $stemv = 120;
- else
- $stemv = 70;
- $fd .= ",'StemV'=>".$stemv;
- // MissingWidth
- $fd .= ",'MissingWidth'=>".$info['MissingWidth'].')';
- return $fd;
-}
-
-function MakeWidthArray($widths)
-{
- $s = "array(\n\t";
- for($c=0;$c<=255;$c++)
- {
- if(chr($c)=="'")
- $s .= "'\\''";
- elseif(chr($c)=="\\")
- $s .= "'\\\\'";
- elseif($c>=32 && $c<=126)
- $s .= "'".chr($c)."'";
- else
- $s .= "chr($c)";
- $s .= '=>'.$widths[$c];
- if($c<255)
- $s .= ',';
- if(($c+1)%22==0)
- $s .= "\n\t";
- }
- $s .= ')';
- return $s;
-}
-
-function MakeFontEncoding($map)
-{
- // Build differences from reference encoding
- $ref = LoadMap('cp1252');
- $s = '';
- $last = 0;
- for($c=32;$c<=255;$c++)
- {
- if($map[$c]['name']!=$ref[$c]['name'])
- {
- if($c!=$last+1)
- $s .= $c.' ';
- $last = $c;
- $s .= '/'.$map[$c]['name'].' ';
- }
- }
- return rtrim($s);
-}
-
-function MakeUnicodeArray($map)
-{
- // Build mapping to Unicode values
- $ranges = array();
- foreach($map as $c=>$v)
- {
- $uv = $v['uv'];
- if($uv!=-1)
- {
- if(isset($range))
- {
- if($c==$range[1]+1 && $uv==$range[3]+1)
- {
- $range[1]++;
- $range[3]++;
- }
- else
- {
- $ranges[] = $range;
- $range = array($c, $c, $uv, $uv);
- }
- }
- else
- $range = array($c, $c, $uv, $uv);
- }
- }
- $ranges[] = $range;
-
- foreach($ranges as $range)
- {
- if(isset($s))
- $s .= ',';
- else
- $s = 'array(';
- $s .= $range[0].'=>';
- $nb = $range[1]-$range[0]+1;
- if($nb>1)
- $s .= 'array('.$range[2].','.$nb.')';
- else
- $s .= $range[2];
- }
- $s .= ')';
- return $s;
-}
-
-function SaveToFile($file, $s, $mode)
-{
- $f = fopen($file, 'w'.$mode);
- if(!$f)
- Error('Can\'t write to file '.$file);
- fwrite($f, $s);
- fclose($f);
-}
-
-function MakeDefinitionFile($file, $type, $enc, $embed, $subset, $map, $info)
-{
- $s = "\n";
- SaveToFile($file, $s, 't');
-}
-
-function MakeFont($fontfile, $enc='cp1252', $embed=true, $subset=true)
-{
- // Generate a font definition file
- if(!file_exists($fontfile))
- Error('Font file not found: '.$fontfile);
- $ext = strtolower(substr($fontfile,-3));
- if($ext=='ttf' || $ext=='otf')
- $type = 'TrueType';
- elseif($ext=='pfb')
- $type = 'Type1';
- else
- Error('Unrecognized font file extension: '.$ext);
-
- $map = LoadMap($enc);
-
- if($type=='TrueType')
- $info = GetInfoFromTrueType($fontfile, $embed, $subset, $map);
- else
- $info = GetInfoFromType1($fontfile, $embed, $map);
-
- $basename = substr(basename($fontfile), 0, -4);
- if($embed)
- {
- if(function_exists('gzcompress'))
- {
- $file = $basename.'.z';
- SaveToFile($file, gzcompress($info['Data']), 'b');
- $info['File'] = $file;
- Message('Font file compressed: '.$file);
- }
- else
- {
- $info['File'] = basename($fontfile);
- $subset = false;
- Notice('Font file could not be compressed (zlib extension not available)');
- }
- }
-
- MakeDefinitionFile($basename.'.php', $type, $enc, $embed, $subset, $map, $info);
- Message('Font definition file generated: '.$basename.'.php');
-}
-
-if(PHP_SAPI=='cli')
-{
- // Command-line interface
- ini_set('log_errors', '0');
- if($argc==1)
- die("Usage: php makefont.php fontfile [encoding] [embed] [subset]\n");
- $fontfile = $argv[1];
- if($argc>=3)
- $enc = $argv[2];
- else
- $enc = 'cp1252';
- if($argc>=4)
- $embed = ($argv[3]=='true' || $argv[3]=='1');
- else
- $embed = true;
- if($argc>=5)
- $subset = ($argv[4]=='true' || $argv[4]=='1');
- else
- $subset = true;
- MakeFont($fontfile, $enc, $embed, $subset);
-}
-?>
diff --git a/pdf/fpdf/makefont/ttfparser.php b/pdf/fpdf/makefont/ttfparser.php
deleted file mode 100755
index e6ba321..0000000
--- a/pdf/fpdf/makefont/ttfparser.php
+++ /dev/null
@@ -1,723 +0,0 @@
-f = fopen($file, 'rb');
- if(!$this->f)
- $this->Error('Can\'t open file: '.$file);
- }
-
- function __destruct()
- {
- if(is_resource($this->f))
- fclose($this->f);
- }
-
- function Parse()
- {
- $this->ParseOffsetTable();
- $this->ParseHead();
- $this->ParseHhea();
- $this->ParseMaxp();
- $this->ParseHmtx();
- $this->ParseLoca();
- $this->ParseGlyf();
- $this->ParseCmap();
- $this->ParseName();
- $this->ParseOS2();
- $this->ParsePost();
- }
-
- function ParseOffsetTable()
- {
- $version = $this->Read(4);
- if($version=='OTTO')
- $this->Error('OpenType fonts based on PostScript outlines are not supported');
- if($version!="\x00\x01\x00\x00")
- $this->Error('Unrecognized file format');
- $numTables = $this->ReadUShort();
- $this->Skip(3*2); // searchRange, entrySelector, rangeShift
- $this->tables = array();
- for($i=0;$i<$numTables;$i++)
- {
- $tag = $this->Read(4);
- $checkSum = $this->Read(4);
- $offset = $this->ReadULong();
- $length = $this->ReadULong(4);
- $this->tables[$tag] = array('offset'=>$offset, 'length'=>$length, 'checkSum'=>$checkSum);
- }
- }
-
- function ParseHead()
- {
- $this->Seek('head');
- $this->Skip(3*4); // version, fontRevision, checkSumAdjustment
- $magicNumber = $this->ReadULong();
- if($magicNumber!=0x5F0F3CF5)
- $this->Error('Incorrect magic number');
- $this->Skip(2); // flags
- $this->unitsPerEm = $this->ReadUShort();
- $this->Skip(2*8); // created, modified
- $this->xMin = $this->ReadShort();
- $this->yMin = $this->ReadShort();
- $this->xMax = $this->ReadShort();
- $this->yMax = $this->ReadShort();
- $this->Skip(3*2); // macStyle, lowestRecPPEM, fontDirectionHint
- $this->indexToLocFormat = $this->ReadShort();
- }
-
- function ParseHhea()
- {
- $this->Seek('hhea');
- $this->Skip(4+15*2);
- $this->numberOfHMetrics = $this->ReadUShort();
- }
-
- function ParseMaxp()
- {
- $this->Seek('maxp');
- $this->Skip(4);
- $this->numGlyphs = $this->ReadUShort();
- }
-
- function ParseHmtx()
- {
- $this->Seek('hmtx');
- $this->glyphs = array();
- for($i=0;$i<$this->numberOfHMetrics;$i++)
- {
- $advanceWidth = $this->ReadUShort();
- $lsb = $this->ReadShort();
- $this->glyphs[$i] = array('w'=>$advanceWidth, 'lsb'=>$lsb);
- }
- for($i=$this->numberOfHMetrics;$i<$this->numGlyphs;$i++)
- {
- $lsb = $this->ReadShort();
- $this->glyphs[$i] = array('w'=>$advanceWidth, 'lsb'=>$lsb);
- }
- }
-
- function ParseLoca()
- {
- $this->Seek('loca');
- $offsets = array();
- if($this->indexToLocFormat==0)
- {
- // Short format
- for($i=0;$i<=$this->numGlyphs;$i++)
- $offsets[] = 2*$this->ReadUShort();
- }
- else
- {
- // Long format
- for($i=0;$i<=$this->numGlyphs;$i++)
- $offsets[] = $this->ReadULong();
- }
- for($i=0;$i<$this->numGlyphs;$i++)
- {
- $this->glyphs[$i]['offset'] = $offsets[$i];
- $this->glyphs[$i]['length'] = $offsets[$i+1] - $offsets[$i];
- }
- }
-
- function ParseGlyf()
- {
- $tableOffset = $this->tables['glyf']['offset'];
- foreach($this->glyphs as &$glyph)
- {
- if($glyph['length']>0)
- {
- fseek($this->f, $tableOffset+$glyph['offset'], SEEK_SET);
- if($this->ReadShort()<0)
- {
- // Composite glyph
- $this->Skip(4*2); // xMin, yMin, xMax, yMax
- $offset = 5*2;
- $a = array();
- do
- {
- $flags = $this->ReadUShort();
- $index = $this->ReadUShort();
- $a[$offset+2] = $index;
- if($flags & 1) // ARG_1_AND_2_ARE_WORDS
- $skip = 2*2;
- else
- $skip = 2;
- if($flags & 8) // WE_HAVE_A_SCALE
- $skip += 2;
- elseif($flags & 64) // WE_HAVE_AN_X_AND_Y_SCALE
- $skip += 2*2;
- elseif($flags & 128) // WE_HAVE_A_TWO_BY_TWO
- $skip += 4*2;
- $this->Skip($skip);
- $offset += 2*2 + $skip;
- }
- while($flags & 32); // MORE_COMPONENTS
- $glyph['components'] = $a;
- }
- }
- }
- }
-
- function ParseCmap()
- {
- $this->Seek('cmap');
- $this->Skip(2); // version
- $numTables = $this->ReadUShort();
- $offset31 = 0;
- for($i=0;$i<$numTables;$i++)
- {
- $platformID = $this->ReadUShort();
- $encodingID = $this->ReadUShort();
- $offset = $this->ReadULong();
- if($platformID==3 && $encodingID==1)
- $offset31 = $offset;
- }
- if($offset31==0)
- $this->Error('No Unicode encoding found');
-
- $startCount = array();
- $endCount = array();
- $idDelta = array();
- $idRangeOffset = array();
- $this->chars = array();
- fseek($this->f, $this->tables['cmap']['offset']+$offset31, SEEK_SET);
- $format = $this->ReadUShort();
- if($format!=4)
- $this->Error('Unexpected subtable format: '.$format);
- $this->Skip(2*2); // length, language
- $segCount = $this->ReadUShort()/2;
- $this->Skip(3*2); // searchRange, entrySelector, rangeShift
- for($i=0;$i<$segCount;$i++)
- $endCount[$i] = $this->ReadUShort();
- $this->Skip(2); // reservedPad
- for($i=0;$i<$segCount;$i++)
- $startCount[$i] = $this->ReadUShort();
- for($i=0;$i<$segCount;$i++)
- $idDelta[$i] = $this->ReadShort();
- $offset = ftell($this->f);
- for($i=0;$i<$segCount;$i++)
- $idRangeOffset[$i] = $this->ReadUShort();
-
- for($i=0;$i<$segCount;$i++)
- {
- $c1 = $startCount[$i];
- $c2 = $endCount[$i];
- $d = $idDelta[$i];
- $ro = $idRangeOffset[$i];
- if($ro>0)
- fseek($this->f, $offset+2*$i+$ro, SEEK_SET);
- for($c=$c1;$c<=$c2;$c++)
- {
- if($c==0xFFFF)
- break;
- if($ro>0)
- {
- $gid = $this->ReadUShort();
- if($gid>0)
- $gid += $d;
- }
- else
- $gid = $c+$d;
- if($gid>=65536)
- $gid -= 65536;
- if($gid>0)
- $this->chars[$c] = $gid;
- }
- }
- }
-
- function ParseName()
- {
- $this->Seek('name');
- $tableOffset = $this->tables['name']['offset'];
- $this->postScriptName = '';
- $this->Skip(2); // format
- $count = $this->ReadUShort();
- $stringOffset = $this->ReadUShort();
- for($i=0;$i<$count;$i++)
- {
- $this->Skip(3*2); // platformID, encodingID, languageID
- $nameID = $this->ReadUShort();
- $length = $this->ReadUShort();
- $offset = $this->ReadUShort();
- if($nameID==6)
- {
- // PostScript name
- fseek($this->f, $tableOffset+$stringOffset+$offset, SEEK_SET);
- $s = $this->Read($length);
- $s = str_replace(chr(0), '', $s);
- $s = preg_replace('|[ \[\](){}<>/%]|', '', $s);
- $this->postScriptName = $s;
- break;
- }
- }
- if($this->postScriptName=='')
- $this->Error('PostScript name not found');
- }
-
- function ParseOS2()
- {
- $this->Seek('OS/2');
- $version = $this->ReadUShort();
- $this->Skip(3*2); // xAvgCharWidth, usWeightClass, usWidthClass
- $fsType = $this->ReadUShort();
- $this->embeddable = ($fsType!=2) && ($fsType & 0x200)==0;
- $this->Skip(11*2+10+4*4+4);
- $fsSelection = $this->ReadUShort();
- $this->bold = ($fsSelection & 32)!=0;
- $this->Skip(2*2); // usFirstCharIndex, usLastCharIndex
- $this->typoAscender = $this->ReadShort();
- $this->typoDescender = $this->ReadShort();
- if($version>=2)
- {
- $this->Skip(3*2+2*4+2);
- $this->capHeight = $this->ReadShort();
- }
- else
- $this->capHeight = 0;
- }
-
- function ParsePost()
- {
- $this->Seek('post');
- $version = $this->ReadULong();
- $this->italicAngle = $this->ReadShort();
- $this->Skip(2); // Skip decimal part
- $this->underlinePosition = $this->ReadShort();
- $this->underlineThickness = $this->ReadShort();
- $this->isFixedPitch = ($this->ReadULong()!=0);
- if($version==0x20000)
- {
- // Extract glyph names
- $this->Skip(4*4); // min/max usage
- $this->Skip(2); // numberOfGlyphs
- $glyphNameIndex = array();
- $names = array();
- $numNames = 0;
- for($i=0;$i<$this->numGlyphs;$i++)
- {
- $index = $this->ReadUShort();
- $glyphNameIndex[] = $index;
- if($index>=258 && $index-257>$numNames)
- $numNames = $index-257;
- }
- for($i=0;$i<$numNames;$i++)
- {
- $len = ord($this->Read(1));
- $names[] = $this->Read($len);
- }
- foreach($glyphNameIndex as $i=>$index)
- {
- if($index>=258)
- $this->glyphs[$i]['name'] = $names[$index-258];
- else
- $this->glyphs[$i]['name'] = $index;
- }
- $this->glyphNames = true;
- }
- else
- $this->glyphNames = false;
- }
-
- function Subset($chars)
- {
-/* $chars = array_keys($this->chars);
- $this->subsettedChars = $chars;
- $this->subsettedGlyphs = array();
- for($i=0;$i<$this->numGlyphs;$i++)
- {
- $this->subsettedGlyphs[] = $i;
- $this->glyphs[$i]['ssid'] = $i;
- }*/
-
- $this->AddGlyph(0);
- $this->subsettedChars = array();
- foreach($chars as $char)
- {
- if(isset($this->chars[$char]))
- {
- $this->subsettedChars[] = $char;
- $this->AddGlyph($this->chars[$char]);
- }
- }
- }
-
- function AddGlyph($id)
- {
- if(!isset($this->glyphs[$id]['ssid']))
- {
- $this->glyphs[$id]['ssid'] = count($this->subsettedGlyphs);
- $this->subsettedGlyphs[] = $id;
- if(isset($this->glyphs[$id]['components']))
- {
- foreach($this->glyphs[$id]['components'] as $cid)
- $this->AddGlyph($cid);
- }
- }
- }
-
- function Build()
- {
- $this->BuildCmap();
- $this->BuildHhea();
- $this->BuildHmtx();
- $this->BuildLoca();
- $this->BuildGlyf();
- $this->BuildMaxp();
- $this->BuildPost();
- return $this->BuildFont();
- }
-
- function BuildCmap()
- {
- if(!isset($this->subsettedChars))
- return;
-
- // Divide charset in contiguous segments
- $chars = $this->subsettedChars;
- sort($chars);
- $segments = array();
- $segment = array($chars[0], $chars[0]);
- for($i=1;$iTutorials
-
-
-
-
diff --git a/pdf/fpdf/tutorial/logo.png b/pdf/fpdf/tutorial/logo.png
deleted file mode 100755
index 284a007..0000000
Binary files a/pdf/fpdf/tutorial/logo.png and /dev/null differ
diff --git a/pdf/fpdf/tutorial/makefont.php b/pdf/fpdf/tutorial/makefont.php
deleted file mode 100755
index 285f27c..0000000
--- a/pdf/fpdf/tutorial/makefont.php
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/pdf/fpdf/tutorial/tuto1.htm b/pdf/fpdf/tutorial/tuto1.htm
deleted file mode 100755
index 36fabad..0000000
--- a/pdf/fpdf/tutorial/tuto1.htm
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-Minimal example
-Let's start with the classic example:
-
-<?php
-require('fpdf.php');
-
-$pdf = new FPDF();
-$pdf->AddPage();
-$pdf->SetFont('Arial','B',16);
-$pdf->Cell(40,10,'Hello World!');
-$pdf->Output();
-?>
-$pdf = new FPDF('P','mm','A4');
-
L
), other page sizes (such as Letter
and
-Legal
) and units (pt
, cm
, in
).
-
-
-There's no page at the moment, so we have to add one with AddPage(). The origin
-is at the upper-left corner and the current position is by default set at 1 cm from the
-borders; the margins can be changed with SetMargins().
-
-
-Before we can print text, it's mandatory to select a font with SetFont().
-We choose Arial bold 16:
-
-$pdf->SetFont('Arial','B',16);
-
-
-We can now print a cell with Cell(). A cell is a rectangular area, possibly framed,
-which contains a line of text. It is output at the current position. We specify its dimensions,
-its text (centered or aligned), if borders should be drawn, and where the current position
-moves after it (to the right, below or to the beginning of the next line). To add a frame, we would do this:
-
-$pdf->Cell(40,10,'Hello World !',1);
-
-$pdf->Cell(60,10,'Powered by FPDF.',0,1,'C');
-
-
-Finally, the document is closed and sent to the browser with Output(). We could have saved
-it to a file by passing the appropriate parameters.
-
-
-Caution: in case when the PDF is sent to the browser, nothing else must be output by the
-script, neither before nor after (no HTML, not even a space or a carriage return). If you send something
-before, you will get the error message: "Some data has already been output, can't send PDF file". If you
-send something after, the document might not display.
-
-
diff --git a/pdf/fpdf/tutorial/tuto1.php b/pdf/fpdf/tutorial/tuto1.php
deleted file mode 100755
index 14a0504..0000000
--- a/pdf/fpdf/tutorial/tuto1.php
+++ /dev/null
@@ -1,9 +0,0 @@
-AddPage();
-$pdf->SetFont('Arial','B',16);
-$pdf->Cell(40,10,'Hello World!');
-$pdf->Output();
-?>
diff --git a/pdf/fpdf/tutorial/tuto2.htm b/pdf/fpdf/tutorial/tuto2.htm
deleted file mode 100755
index b892d1d..0000000
--- a/pdf/fpdf/tutorial/tuto2.htm
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-Header, footer, page break and image
-Here's a two page example with header, footer and logo:
-
-<?php
-require('fpdf.php');
-
-class PDF extends FPDF
-{
-// Page header
-function Header()
-{
- // Logo
- $this->Image('logo.png',10,6,30);
- // Arial bold 15
- $this->SetFont('Arial','B',15);
- // Move to the right
- $this->Cell(80);
- // Title
- $this->Cell(30,10,'Title',1,0,'C');
- // Line break
- $this->Ln(20);
-}
-
-// Page footer
-function Footer()
-{
- // Position at 1.5 cm from bottom
- $this->SetY(-15);
- // Arial italic 8
- $this->SetFont('Arial','I',8);
- // Page number
- $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
-}
-}
-
-// Instanciation of inherited class
-$pdf = new PDF();
-$pdf->AliasNbPages();
-$pdf->AddPage();
-$pdf->SetFont('Times','',12);
-for($i=1;$i<=40;$i++)
- $pdf->Cell(0,10,'Printing line number '.$i,0,1);
-$pdf->Output();
-?>
-
-The logo is printed with the Image() method by specifying its upper-left corner and
-its width. The height is calculated automatically to respect the image proportions.
-
-
-To print the page number, a null value is passed as the cell width. It means that the cell
-should extend up to the right margin of the page; this is handy to center text. The current page
-number is returned by the PageNo() method; as for the total number of pages, it's obtained
-via the special value {nb}
which is substituted when the document is finished
-(provided you first called AliasNbPages()).
-
-Note the use of the SetY() method which allows to set position at an absolute location in
-the page, starting from the top or the bottom.
-
-
-Another interesting feature is used here: the automatic page breaking. As soon as a cell would
-cross a limit in the page (at 2 centimeters from the bottom by default), a break is issued
-and the font restored. Although the header and footer select their own font (Arial), the body
-continues with Times. This mechanism of automatic restoration also applies to colors and line
-width. The limit which triggers page breaks can be set with SetAutoPageBreak().
-
-
diff --git a/pdf/fpdf/tutorial/tuto2.php b/pdf/fpdf/tutorial/tuto2.php
deleted file mode 100755
index cc7d51c..0000000
--- a/pdf/fpdf/tutorial/tuto2.php
+++ /dev/null
@@ -1,41 +0,0 @@
-Image('logo.png',10,6,30);
- // Arial bold 15
- $this->SetFont('Arial','B',15);
- // Move to the right
- $this->Cell(80);
- // Title
- $this->Cell(30,10,'Title',1,0,'C');
- // Line break
- $this->Ln(20);
-}
-
-// Page footer
-function Footer()
-{
- // Position at 1.5 cm from bottom
- $this->SetY(-15);
- // Arial italic 8
- $this->SetFont('Arial','I',8);
- // Page number
- $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
-}
-}
-
-// Instanciation of inherited class
-$pdf = new PDF();
-$pdf->AliasNbPages();
-$pdf->AddPage();
-$pdf->SetFont('Times','',12);
-for($i=1;$i<=40;$i++)
- $pdf->Cell(0,10,'Printing line number '.$i,0,1);
-$pdf->Output();
-?>
diff --git a/pdf/fpdf/tutorial/tuto3.htm b/pdf/fpdf/tutorial/tuto3.htm
deleted file mode 100755
index fa58307..0000000
--- a/pdf/fpdf/tutorial/tuto3.htm
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-Line breaks and colors
-Let's continue with an example which prints justified paragraphs. It also illustrates the use
-of colors.
-
-<?php
-require('fpdf.php');
-
-class PDF extends FPDF
-{
-function Header()
-{
- global $title;
-
- // Arial bold 15
- $this->SetFont('Arial','B',15);
- // Calculate width of title and position
- $w = $this->GetStringWidth($title)+6;
- $this->SetX((210-$w)/2);
- // Colors of frame, background and text
- $this->SetDrawColor(0,80,180);
- $this->SetFillColor(230,230,0);
- $this->SetTextColor(220,50,50);
- // Thickness of frame (1 mm)
- $this->SetLineWidth(1);
- // Title
- $this->Cell($w,9,$title,1,1,'C',true);
- // Line break
- $this->Ln(10);
-}
-
-function Footer()
-{
- // Position at 1.5 cm from bottom
- $this->SetY(-15);
- // Arial italic 8
- $this->SetFont('Arial','I',8);
- // Text color in gray
- $this->SetTextColor(128);
- // Page number
- $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
-}
-
-function ChapterTitle($num, $label)
-{
- // Arial 12
- $this->SetFont('Arial','',12);
- // Background color
- $this->SetFillColor(200,220,255);
- // Title
- $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
- // Line break
- $this->Ln(4);
-}
-
-function ChapterBody($file)
-{
- // Read text file
- $txt = file_get_contents($file);
- // Times 12
- $this->SetFont('Times','',12);
- // Output justified text
- $this->MultiCell(0,5,$txt);
- // Line break
- $this->Ln();
- // Mention in italics
- $this->SetFont('','I');
- $this->Cell(0,5,'(end of excerpt)');
-}
-
-function PrintChapter($num, $title, $file)
-{
- $this->AddPage();
- $this->ChapterTitle($num,$title);
- $this->ChapterBody($file);
-}
-}
-
-$pdf = new PDF();
-$title = '20000 Leagues Under the Seas';
-$pdf->SetTitle($title);
-$pdf->SetAuthor('Jules Verne');
-$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
-$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
-$pdf->Output();
-?>
true
indicates that the background must
-be filled).
-
-
-The method used to print the paragraphs is MultiCell(). Each time a line reaches the
-right extremity of the cell or a carriage return character is met, a line break is issued
-and a new cell automatically created under the current one. Text is justified by default.
-
-
-Two document properties are defined: the title (SetTitle()) and the author (SetAuthor()).
-There are several ways to view them in Adobe Reader. The first one is to open the file directly with
-the reader, go to the File menu and choose the Properties option. The second one, also available from
-the plug-in, is to right-click and select Document Properties. The third method is to type the Ctrl+D
-key combination.
-
-
diff --git a/pdf/fpdf/tutorial/tuto3.php b/pdf/fpdf/tutorial/tuto3.php
deleted file mode 100755
index eade51c..0000000
--- a/pdf/fpdf/tutorial/tuto3.php
+++ /dev/null
@@ -1,81 +0,0 @@
-SetFont('Arial','B',15);
- // Calculate width of title and position
- $w = $this->GetStringWidth($title)+6;
- $this->SetX((210-$w)/2);
- // Colors of frame, background and text
- $this->SetDrawColor(0,80,180);
- $this->SetFillColor(230,230,0);
- $this->SetTextColor(220,50,50);
- // Thickness of frame (1 mm)
- $this->SetLineWidth(1);
- // Title
- $this->Cell($w,9,$title,1,1,'C',true);
- // Line break
- $this->Ln(10);
-}
-
-function Footer()
-{
- // Position at 1.5 cm from bottom
- $this->SetY(-15);
- // Arial italic 8
- $this->SetFont('Arial','I',8);
- // Text color in gray
- $this->SetTextColor(128);
- // Page number
- $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
-}
-
-function ChapterTitle($num, $label)
-{
- // Arial 12
- $this->SetFont('Arial','',12);
- // Background color
- $this->SetFillColor(200,220,255);
- // Title
- $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
- // Line break
- $this->Ln(4);
-}
-
-function ChapterBody($file)
-{
- // Read text file
- $txt = file_get_contents($file);
- // Times 12
- $this->SetFont('Times','',12);
- // Output justified text
- $this->MultiCell(0,5,$txt);
- // Line break
- $this->Ln();
- // Mention in italics
- $this->SetFont('','I');
- $this->Cell(0,5,'(end of excerpt)');
-}
-
-function PrintChapter($num, $title, $file)
-{
- $this->AddPage();
- $this->ChapterTitle($num,$title);
- $this->ChapterBody($file);
-}
-}
-
-$pdf = new PDF();
-$title = '20000 Leagues Under the Seas';
-$pdf->SetTitle($title);
-$pdf->SetAuthor('Jules Verne');
-$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
-$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
-$pdf->Output();
-?>
diff --git a/pdf/fpdf/tutorial/tuto4.htm b/pdf/fpdf/tutorial/tuto4.htm
deleted file mode 100755
index 7af730f..0000000
--- a/pdf/fpdf/tutorial/tuto4.htm
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-Multi-columns
-This example is a variant of the previous one showing how to lay the text across multiple
-columns.
-
-<?php
-require('fpdf.php');
-
-class PDF extends FPDF
-{
-protected $col = 0; // Current column
-protected $y0; // Ordinate of column start
-
-function Header()
-{
- // Page header
- global $title;
-
- $this->SetFont('Arial','B',15);
- $w = $this->GetStringWidth($title)+6;
- $this->SetX((210-$w)/2);
- $this->SetDrawColor(0,80,180);
- $this->SetFillColor(230,230,0);
- $this->SetTextColor(220,50,50);
- $this->SetLineWidth(1);
- $this->Cell($w,9,$title,1,1,'C',true);
- $this->Ln(10);
- // Save ordinate
- $this->y0 = $this->GetY();
-}
-
-function Footer()
-{
- // Page footer
- $this->SetY(-15);
- $this->SetFont('Arial','I',8);
- $this->SetTextColor(128);
- $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
-}
-
-function SetCol($col)
-{
- // Set position at a given column
- $this->col = $col;
- $x = 10+$col*65;
- $this->SetLeftMargin($x);
- $this->SetX($x);
-}
-
-function AcceptPageBreak()
-{
- // Method accepting or not automatic page break
- if($this->col<2)
- {
- // Go to next column
- $this->SetCol($this->col+1);
- // Set ordinate to top
- $this->SetY($this->y0);
- // Keep on page
- return false;
- }
- else
- {
- // Go back to first column
- $this->SetCol(0);
- // Page break
- return true;
- }
-}
-
-function ChapterTitle($num, $label)
-{
- // Title
- $this->SetFont('Arial','',12);
- $this->SetFillColor(200,220,255);
- $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
- $this->Ln(4);
- // Save ordinate
- $this->y0 = $this->GetY();
-}
-
-function ChapterBody($file)
-{
- // Read text file
- $txt = file_get_contents($file);
- // Font
- $this->SetFont('Times','',12);
- // Output text in a 6 cm width column
- $this->MultiCell(60,5,$txt);
- $this->Ln();
- // Mention
- $this->SetFont('','I');
- $this->Cell(0,5,'(end of excerpt)');
- // Go back to first column
- $this->SetCol(0);
-}
-
-function PrintChapter($num, $title, $file)
-{
- // Add chapter
- $this->AddPage();
- $this->ChapterTitle($num,$title);
- $this->ChapterBody($file);
-}
-}
-
-$pdf = new PDF();
-$title = '20000 Leagues Under the Seas';
-$pdf->SetTitle($title);
-$pdf->SetAuthor('Jules Verne');
-$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
-$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
-$pdf->Output();
-?>
-For the rest, not many changes; two properties have been added to the class to save the current
-column number and the position where columns begin, and the MultiCell() call specifies a
-6 centimeter width.
-
-
diff --git a/pdf/fpdf/tutorial/tuto4.php b/pdf/fpdf/tutorial/tuto4.php
deleted file mode 100755
index f5f4fa8..0000000
--- a/pdf/fpdf/tutorial/tuto4.php
+++ /dev/null
@@ -1,109 +0,0 @@
-SetFont('Arial','B',15);
- $w = $this->GetStringWidth($title)+6;
- $this->SetX((210-$w)/2);
- $this->SetDrawColor(0,80,180);
- $this->SetFillColor(230,230,0);
- $this->SetTextColor(220,50,50);
- $this->SetLineWidth(1);
- $this->Cell($w,9,$title,1,1,'C',true);
- $this->Ln(10);
- // Save ordinate
- $this->y0 = $this->GetY();
-}
-
-function Footer()
-{
- // Page footer
- $this->SetY(-15);
- $this->SetFont('Arial','I',8);
- $this->SetTextColor(128);
- $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
-}
-
-function SetCol($col)
-{
- // Set position at a given column
- $this->col = $col;
- $x = 10+$col*65;
- $this->SetLeftMargin($x);
- $this->SetX($x);
-}
-
-function AcceptPageBreak()
-{
- // Method accepting or not automatic page break
- if($this->col<2)
- {
- // Go to next column
- $this->SetCol($this->col+1);
- // Set ordinate to top
- $this->SetY($this->y0);
- // Keep on page
- return false;
- }
- else
- {
- // Go back to first column
- $this->SetCol(0);
- // Page break
- return true;
- }
-}
-
-function ChapterTitle($num, $label)
-{
- // Title
- $this->SetFont('Arial','',12);
- $this->SetFillColor(200,220,255);
- $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
- $this->Ln(4);
- // Save ordinate
- $this->y0 = $this->GetY();
-}
-
-function ChapterBody($file)
-{
- // Read text file
- $txt = file_get_contents($file);
- // Font
- $this->SetFont('Times','',12);
- // Output text in a 6 cm width column
- $this->MultiCell(60,5,$txt);
- $this->Ln();
- // Mention
- $this->SetFont('','I');
- $this->Cell(0,5,'(end of excerpt)');
- // Go back to first column
- $this->SetCol(0);
-}
-
-function PrintChapter($num, $title, $file)
-{
- // Add chapter
- $this->AddPage();
- $this->ChapterTitle($num,$title);
- $this->ChapterBody($file);
-}
-}
-
-$pdf = new PDF();
-$title = '20000 Leagues Under the Seas';
-$pdf->SetTitle($title);
-$pdf->SetAuthor('Jules Verne');
-$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
-$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
-$pdf->Output();
-?>
diff --git a/pdf/fpdf/tutorial/tuto5.htm b/pdf/fpdf/tutorial/tuto5.htm
deleted file mode 100755
index 03fdd54..0000000
--- a/pdf/fpdf/tutorial/tuto5.htm
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
-Tables
-This tutorial shows different ways to make tables.
-
-<?php
-require('fpdf.php');
-
-class PDF extends FPDF
-{
-// Load data
-function LoadData($file)
-{
- // Read file lines
- $lines = file($file);
- $data = array();
- foreach($lines as $line)
- $data[] = explode(';',trim($line));
- return $data;
-}
-
-// Simple table
-function BasicTable($header, $data)
-{
- // Header
- foreach($header as $col)
- $this->Cell(40,7,$col,1);
- $this->Ln();
- // Data
- foreach($data as $row)
- {
- foreach($row as $col)
- $this->Cell(40,6,$col,1);
- $this->Ln();
- }
-}
-
-// Better table
-function ImprovedTable($header, $data)
-{
- // Column widths
- $w = array(40, 35, 40, 45);
- // Header
- for($i=0;$i<count($header);$i++)
- $this->Cell($w[$i],7,$header[$i],1,0,'C');
- $this->Ln();
- // Data
- foreach($data as $row)
- {
- $this->Cell($w[0],6,$row[0],'LR');
- $this->Cell($w[1],6,$row[1],'LR');
- $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
- $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
- $this->Ln();
- }
- // Closing line
- $this->Cell(array_sum($w),0,'','T');
-}
-
-// Colored table
-function FancyTable($header, $data)
-{
- // Colors, line width and bold font
- $this->SetFillColor(255,0,0);
- $this->SetTextColor(255);
- $this->SetDrawColor(128,0,0);
- $this->SetLineWidth(.3);
- $this->SetFont('','B');
- // Header
- $w = array(40, 35, 40, 45);
- for($i=0;$i<count($header);$i++)
- $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
- $this->Ln();
- // Color and font restoration
- $this->SetFillColor(224,235,255);
- $this->SetTextColor(0);
- $this->SetFont('');
- // Data
- $fill = false;
- foreach($data as $row)
- {
- $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
- $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
- $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill);
- $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill);
- $this->Ln();
- $fill = !$fill;
- }
- // Closing line
- $this->Cell(array_sum($w),0,'','T');
-}
-}
-
-$pdf = new PDF();
-// Column headings
-$header = array('Country', 'Capital', 'Area (sq km)', 'Pop. (thousands)');
-// Data loading
-$data = $pdf->LoadData('countries.txt');
-$pdf->SetFont('Arial','',14);
-$pdf->AddPage();
-$pdf->BasicTable($header,$data);
-$pdf->AddPage();
-$pdf->ImprovedTable($header,$data);
-$pdf->AddPage();
-$pdf->FancyTable($header,$data);
-$pdf->Output();
-?>
-
-The second table brings some improvements: each column has its own width, headings are centered,
-and numbers right aligned. Moreover, horizontal lines have been removed. This is done by means
-of the border
parameter of the Cell() method, which specifies which sides of the
-cell must be drawn. Here we want the left (L
) and right (R
) ones. It remains
-the problem of the horizontal line to finish the table. There are two possibilities: either
-check for the last line in the loop, in which case we use LRB
for the border
-parameter; or, as done here, add the line once the loop is over.
-
-
-The third table is similar to the second one but uses colors. Fill, text and line colors are
-simply specified. Alternate coloring for rows is obtained by using alternatively transparent
-and filled cells.
-
-
diff --git a/pdf/fpdf/tutorial/tuto5.php b/pdf/fpdf/tutorial/tuto5.php
deleted file mode 100755
index f1b64a2..0000000
--- a/pdf/fpdf/tutorial/tuto5.php
+++ /dev/null
@@ -1,102 +0,0 @@
-Cell(40,7,$col,1);
- $this->Ln();
- // Data
- foreach($data as $row)
- {
- foreach($row as $col)
- $this->Cell(40,6,$col,1);
- $this->Ln();
- }
-}
-
-// Better table
-function ImprovedTable($header, $data)
-{
- // Column widths
- $w = array(40, 35, 40, 45);
- // Header
- for($i=0;$iLinks and flowing text
-This tutorial explains how to insert links (internal and external) and shows a new text writing
-mode. It also contains a basic HTML parser.
-
-<?php
-require('fpdf.php');
-
-class PDF extends FPDF
-{
-protected $B = 0;
-protected $I = 0;
-protected $U = 0;
-protected $HREF = '';
-
-function WriteHTML($html)
-{
- // HTML parser
- $html = str_replace("\n",' ',$html);
- $a = preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
- foreach($a as $i=>$e)
- {
- if($i%2==0)
- {
- // Text
- if($this->HREF)
- $this->PutLink($this->HREF,$e);
- else
- $this->Write(5,$e);
- }
- else
- {
- // Tag
- if($e[0]=='/')
- $this->CloseTag(strtoupper(substr($e,1)));
- else
- {
- // Extract attributes
- $a2 = explode(' ',$e);
- $tag = strtoupper(array_shift($a2));
- $attr = array();
- foreach($a2 as $v)
- {
- if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
- $attr[strtoupper($a3[1])] = $a3[2];
- }
- $this->OpenTag($tag,$attr);
- }
- }
- }
-}
-
-function OpenTag($tag, $attr)
-{
- // Opening tag
- if($tag=='B' || $tag=='I' || $tag=='U')
- $this->SetStyle($tag,true);
- if($tag=='A')
- $this->HREF = $attr['HREF'];
- if($tag=='BR')
- $this->Ln(5);
-}
-
-function CloseTag($tag)
-{
- // Closing tag
- if($tag=='B' || $tag=='I' || $tag=='U')
- $this->SetStyle($tag,false);
- if($tag=='A')
- $this->HREF = '';
-}
-
-function SetStyle($tag, $enable)
-{
- // Modify style and select corresponding font
- $this->$tag += ($enable ? 1 : -1);
- $style = '';
- foreach(array('B', 'I', 'U') as $s)
- {
- if($this->$s>0)
- $style .= $s;
- }
- $this->SetFont('',$style);
-}
-
-function PutLink($URL, $txt)
-{
- // Put a hyperlink
- $this->SetTextColor(0,0,255);
- $this->SetStyle('U',true);
- $this->Write(5,$txt,$URL);
- $this->SetStyle('U',false);
- $this->SetTextColor(0);
-}
-}
-
-$html = 'You can now easily print text mixing different styles: <b>bold</b>, <i>italic</i>,
-<u>underlined</u>, or <b><i><u>all at once</u></i></b>!<br><br>You can also insert links on
-text, such as <a href="http://www.fpdf.org">www.fpdf.org</a>, or on an image: click on the logo.';
-
-$pdf = new PDF();
-// First page
-$pdf->AddPage();
-$pdf->SetFont('Arial','',20);
-$pdf->Write(5,"To find out what's new in this tutorial, click ");
-$pdf->SetFont('','U');
-$link = $pdf->AddLink();
-$pdf->Write(5,'here',$link);
-$pdf->SetFont('');
-// Second page
-$pdf->AddPage();
-$pdf->SetLink($link);
-$pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org');
-$pdf->SetLeftMargin(45);
-$pdf->SetFontSize(14);
-$pdf->WriteHTML($html);
-$pdf->Output();
-?>
-
-So it allows to write a chunk of text, alter the font style, then continue from the exact
-place we left it. On the other hand, you cannot justify it.
-
-
-The method is used on the first page to put a link pointing to the second one. The beginning of
-the sentence is written in regular style, then we switch to underline and finish it. The link
-is created with AddLink(), which returns a link identifier. The identifier is
-passed as third parameter of Write(). Once the second page is created, we use SetLink() to
-make the link point to the beginning of the current page.
-
-
-Then we put an image with an external link on it. An external link is just a URL. It's passed as
-last parameter of Image().
-
-
-Finally, the left margin is moved after the image with SetLeftMargin() and some text in
-HTML format is output. A very simple HTML parser is used for this, based on regular expressions.
-Recognized tags are <b>, <i>, <u>, <a> and <br>; the others are
-ignored. The parser also makes use of the Write() method. An external link is put the same way as
-an internal one (third parameter of Write()). Note that Cell() also allows to put links.
-
-
diff --git a/pdf/fpdf/tutorial/tuto6.php b/pdf/fpdf/tutorial/tuto6.php
deleted file mode 100755
index 66580e9..0000000
--- a/pdf/fpdf/tutorial/tuto6.php
+++ /dev/null
@@ -1,113 +0,0 @@
-/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
- foreach($a as $i=>$e)
- {
- if($i%2==0)
- {
- // Text
- if($this->HREF)
- $this->PutLink($this->HREF,$e);
- else
- $this->Write(5,$e);
- }
- else
- {
- // Tag
- if($e[0]=='/')
- $this->CloseTag(strtoupper(substr($e,1)));
- else
- {
- // Extract attributes
- $a2 = explode(' ',$e);
- $tag = strtoupper(array_shift($a2));
- $attr = array();
- foreach($a2 as $v)
- {
- if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
- $attr[strtoupper($a3[1])] = $a3[2];
- }
- $this->OpenTag($tag,$attr);
- }
- }
- }
-}
-
-function OpenTag($tag, $attr)
-{
- // Opening tag
- if($tag=='B' || $tag=='I' || $tag=='U')
- $this->SetStyle($tag,true);
- if($tag=='A')
- $this->HREF = $attr['HREF'];
- if($tag=='BR')
- $this->Ln(5);
-}
-
-function CloseTag($tag)
-{
- // Closing tag
- if($tag=='B' || $tag=='I' || $tag=='U')
- $this->SetStyle($tag,false);
- if($tag=='A')
- $this->HREF = '';
-}
-
-function SetStyle($tag, $enable)
-{
- // Modify style and select corresponding font
- $this->$tag += ($enable ? 1 : -1);
- $style = '';
- foreach(array('B', 'I', 'U') as $s)
- {
- if($this->$s>0)
- $style .= $s;
- }
- $this->SetFont('',$style);
-}
-
-function PutLink($URL, $txt)
-{
- // Put a hyperlink
- $this->SetTextColor(0,0,255);
- $this->SetStyle('U',true);
- $this->Write(5,$txt,$URL);
- $this->SetStyle('U',false);
- $this->SetTextColor(0);
-}
-}
-
-$html = 'You can now easily print text mixing different styles: bold, italic,
-underlined, or all at once!
You can also insert links on
-text, such as www.fpdf.org, or on an image: click on the logo.';
-
-$pdf = new PDF();
-// First page
-$pdf->AddPage();
-$pdf->SetFont('Arial','',20);
-$pdf->Write(5,"To find out what's new in this tutorial, click ");
-$pdf->SetFont('','U');
-$link = $pdf->AddLink();
-$pdf->Write(5,'here',$link);
-$pdf->SetFont('');
-// Second page
-$pdf->AddPage();
-$pdf->SetLink($link);
-$pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org');
-$pdf->SetLeftMargin(45);
-$pdf->SetFontSize(14);
-$pdf->WriteHTML($html);
-$pdf->Output();
-?>
diff --git a/pdf/fpdf/tutorial/tuto7.htm b/pdf/fpdf/tutorial/tuto7.htm
deleted file mode 100755
index b42e552..0000000
--- a/pdf/fpdf/tutorial/tuto7.htm
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-Adding new fonts and encodings
-This tutorial explains how to use TrueType, OpenType and Type1 fonts so that you are not limited to the
-standard fonts anymore. The other benefit is that you can choose the text encoding, which allows you to
-use other languages than the Western ones (the standard fonts support only cp1252 aka windows-1252).
-
-
-For OpenType, only the format based on TrueType is supported (not the one based on Type1).
-For Type1, you will need the corresponding AFM file (it is usually provided with the font).
-
-
-Adding a new font requires two steps:
-
-
-
-Generation of the font definition file
-The first step consists in generating a PHP file containing all the information needed by FPDF;
-in addition, the font file is compressed. To do this, a helper script is provided in the makefont
-directory of the package: makefont.php. It contains the following function:
-
-
-MakeFont(string fontfile [, string enc [, boolean embed [, boolean subset]]])
-
-
-The first parameter is the name of the font file. The extension must be either .ttf, .otf or .pfb and
-determines the font type. If your Type1 font is in ASCII format (.pfa), you can convert it to binary
-(.pfb) with the help of t1utils.
-fontfile
enc
cp1252
.embed
true
.subset
true
.
-
-For Type1 fonts, the corresponding .afm file must be present in the same directory.
-
-
-The encoding defines the association between a code (from 0 to 255) and a character. The first 128 are
-always the same and correspond to ASCII; the following are variable. Encodings are stored in .map
-files. The available ones are:
-
-
-Of course, the font must contain the characters corresponding to the selected encoding.
-
-
-The third parameter indicates whether the font should be embedded in the PDF or not. When a font is
-not embedded, it is searched in the system. The advantage is that the PDF file is smaller; on the
-other hand, if it is not available, then a substitution font is used. So you should ensure that the
-needed font is installed on the client systems. Embedding is the recommended option to guarantee a
-correct rendering.
-
-
-The last parameter indicates whether subsetting should be used, that is to say, whether only
-the characters from the selected encoding should be kept in the embedded font. As a result,
-the size of the PDF file can be greatly reduced, especially if the original font was big.
-
-
-After you have called the function (create a new file for this and include makefont.php), a .php file
-is created, with the same name as the font file. You may rename it if you wish. If the case of embedding,
-the font file is compressed and gives a second file with .z as extension (except if the compression
-function is not available, it requires Zlib). You may rename it too, but in this case you have to change
-the variable $file
in the .php file accordingly.
-
-
-Example:
-
-<?php
-require('makefont/makefont.php');
-
-MakeFont('C:\\Windows\\Fonts\\comic.ttf','cp1252');
-?>
-
-Then copy the generated files to the font directory. If the font file could not be compressed, copy
-it directly instead of the .z version.
-
-
-Another way to call MakeFont() is through the command line:
-
-
-php makefont\makefont.php C:\Windows\Fonts\comic.ttf cp1252
-
-
-Finally, for TrueType and OpenType fonts, you can also generate the files
-online instead of doing it manually.
-
-Declaration of the font in the script
-The second step is simple. You just need to call the AddFont() method:
-
-$pdf->AddFont('Comic','','comic.php');
-
-$pdf->AddFont('Comic','B','comicbd.php');
-
Example
-Let's now see a complete example. We will use the font Calligrapher.
-The first step is the generation of the font files:
-
-<?php
-require('makefont/makefont.php');
-
-MakeFont('calligra.ttf','cp1252');
-?>
-
-Warning: character Euro is missing
-Warning: character zcaron is missing
-Font file compressed: calligra.z
-Font definition file generated: calligra.php
-
-The euro character is not present in the font (it's too old). Another character is missing too.
-
-
-Alternatively we could have used the command line:
-
-
-php makefont\makefont.php calligra.ttf cp1252
-
-
-or used the online generator.
-
-
-We can now copy the two generated files to the font directory and write the script:
-
-<?php
-require('fpdf.php');
-
-$pdf = new FPDF();
-$pdf->AddFont('Calligrapher','','calligra.php');
-$pdf->AddPage();
-$pdf->SetFont('Calligrapher','',35);
-$pdf->Write(10,'Enjoy new fonts with FPDF!');
-$pdf->Output();
-?>
- * @access public
- * @since 1.0.000
- */
- public function __construct($code, $eclevel = 'L') {
- $barcode_array = array();
- if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
- return false;
- }
- // set error correction level
- $this->level = array_search($eclevel, array('L', 'M', 'Q', 'H'));
- if ($this->level === false) {
- $this->level = QR_ECLEVEL_L;
- }
- if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) {
- return false;
- }
- if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) {
- return false;
- }
- $this->items = array();
- $this->encodeString($code);
- $qrTab = $this->binarize($this->data);
- $size = count($qrTab);
- $barcode_array['num_rows'] = $size;
- $barcode_array['num_cols'] = $size;
- $barcode_array['bcode'] = array();
- foreach ($qrTab as $line) {
- $arrAdd = array();
- foreach (str_split($line) as $char) {
- $arrAdd[] = ($char=='1')?1:0;
- }
- $barcode_array['bcode'][] = $arrAdd;
- }
- $this->barcode_array = $barcode_array;
- }
-
- /**
- * Returns a barcode array which is readable by TCPDF
- * @return array barcode array readable by TCPDF;
- * @access public
- */
- public function getBarcodeArray() {
- return $this->barcode_array;
- }
-
- /**
- * Convert the frame in binary form
- * @param array $frame array to binarize
- * @return array frame in binary form
- */
- protected function binarize($frame) {
- $len = count($frame);
- // the frame is square (width = height)
- foreach ($frame as &$frameLine) {
- for ($i=0; $i<$len; $i++) {
- $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
- }
- }
- return $frame;
- }
-
- /**
- * Encode the input string to QR code
- * @param string $string input string to encode
- */
- protected function encodeString($string) {
- $this->dataStr = $string;
- if (!$this->casesensitive) {
- $this->toUpper();
- }
- $ret = $this->splitString();
- if ($ret < 0) {
- return NULL;
- }
- $this->encodeMask(-1);
- }
-
- /**
- * Encode mask
- * @param int $mask masking mode
- */
- protected function encodeMask($mask) {
- $spec = array(0, 0, 0, 0, 0);
- $this->datacode = $this->getByteStream($this->items);
- if (is_null($this->datacode)) {
- return NULL;
- }
- $spec = $this->getEccSpec($this->version, $this->level, $spec);
- $this->b1 = $this->rsBlockNum1($spec);
- $this->dataLength = $this->rsDataLength($spec);
- $this->eccLength = $this->rsEccLength($spec);
- $this->ecccode = array_fill(0, $this->eccLength, 0);
- $this->blocks = $this->rsBlockNum($spec);
- $ret = $this->init($spec);
- if ($ret < 0) {
- return NULL;
- }
- $this->count = 0;
- $this->width = $this->getWidth($this->version);
- $this->frame = $this->newFrame($this->version);
- $this->x = $this->width - 1;
- $this->y = $this->width - 1;
- $this->dir = -1;
- $this->bit = -1;
- // inteleaved data and ecc codes
- for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) {
- $code = $this->getCode();
- $bit = 0x80;
- for ($j=0; $j<8; $j++) {
- $addr = $this->getNextPosition();
- $this->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
- $bit = $bit >> 1;
- }
- }
- // remainder bits
- $j = $this->getRemainder($this->version);
- for ($i=0; $i<$j; $i++) {
- $addr = $this->getNextPosition();
- $this->setFrameAt($addr, 0x02);
- }
- // masking
- $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
- if ($mask < 0) {
- if (QR_FIND_BEST_MASK) {
- $masked = $this->mask($this->width, $this->frame, $this->level);
- } else {
- $masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level);
- }
- } else {
- $masked = $this->makeMask($this->width, $this->frame, $mask, $this->level);
- }
- if ($masked == NULL) {
- return NULL;
- }
- $this->data = $masked;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // FrameFiller
-
- /**
- * Set frame value at specified position
- * @param array $at x,y position
- * @param int $val value of the character to set
- */
- protected function setFrameAt($at, $val) {
- $this->frame[$at['y']][$at['x']] = chr($val);
- }
-
- /**
- * Get frame value at specified position
- * @param array $at x,y position
- * @return value at specified position
- */
- protected function getFrameAt($at) {
- return ord($this->frame[$at['y']][$at['x']]);
- }
-
- /**
- * Return the next frame position
- * @return array of x,y coordinates
- */
- protected function getNextPosition() {
- do {
- if ($this->bit == -1) {
- $this->bit = 0;
- return array('x'=>$this->x, 'y'=>$this->y);
- }
- $x = $this->x;
- $y = $this->y;
- $w = $this->width;
- if ($this->bit == 0) {
- $x--;
- $this->bit++;
- } else {
- $x++;
- $y += $this->dir;
- $this->bit--;
- }
- if ($this->dir < 0) {
- if ($y < 0) {
- $y = 0;
- $x -= 2;
- $this->dir = 1;
- if ($x == 6) {
- $x--;
- $y = 9;
- }
- }
- } else {
- if ($y == $w) {
- $y = $w - 1;
- $x -= 2;
- $this->dir = -1;
- if ($x == 6) {
- $x--;
- $y -= 8;
- }
- }
- }
- if (($x < 0) OR ($y < 0)) {
- return NULL;
- }
- $this->x = $x;
- $this->y = $y;
- } while(ord($this->frame[$y][$x]) & 0x80);
- return array('x'=>$x, 'y'=>$y);
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRrawcode
-
- /**
- * Initialize code.
- * @param array $spec array of ECC specification
- * @return 0 in case of success, -1 in case of error
- */
- protected function init($spec) {
- $dl = $this->rsDataCodes1($spec);
- $el = $this->rsEccCodes1($spec);
- $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
- $blockNo = 0;
- $dataPos = 0;
- $eccPos = 0;
- $endfor = $this->rsBlockNum1($spec);
- for ($i=0; $i < $endfor; ++$i) {
- $ecc = array_slice($this->ecccode, $eccPos);
- $this->rsblocks[$blockNo] = array();
- $this->rsblocks[$blockNo]['dataLength'] = $dl;
- $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
- $this->rsblocks[$blockNo]['eccLength'] = $el;
- $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
- $this->rsblocks[$blockNo]['ecc'] = $ecc;
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
- if ($this->rsBlockNum2($spec) == 0) {
- return 0;
- }
- $dl = $this->rsDataCodes2($spec);
- $el = $this->rsEccCodes2($spec);
- $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
- if ($rs == NULL) {
- return -1;
- }
- $endfor = $this->rsBlockNum2($spec);
- for ($i=0; $i < $endfor; ++$i) {
- $ecc = array_slice($this->ecccode, $eccPos);
- $this->rsblocks[$blockNo] = array();
- $this->rsblocks[$blockNo]['dataLength'] = $dl;
- $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
- $this->rsblocks[$blockNo]['eccLength'] = $el;
- $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
- $this->rsblocks[$blockNo]['ecc'] = $ecc;
- $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
- return 0;
- }
-
- /**
- * Return Reed-Solomon block code.
- * @return array rsblocks
- */
- protected function getCode() {
- if ($this->count < $this->dataLength) {
- $row = $this->count % $this->blocks;
- $col = $this->count / $this->blocks;
- if ($col >= $this->rsblocks[0]['dataLength']) {
- $row += $this->b1;
- }
- $ret = $this->rsblocks[$row]['data'][$col];
- } elseif ($this->count < $this->dataLength + $this->eccLength) {
- $row = ($this->count - $this->dataLength) % $this->blocks;
- $col = ($this->count - $this->dataLength) / $this->blocks;
- $ret = $this->rsblocks[$row]['ecc'][$col];
- } else {
- return 0;
- }
- $this->count++;
- return $ret;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRmask
-
- /**
- * Write Format Information on frame and returns the number of black bits
- * @param int $width frame width
- * @param array $frame frame
- * @param array $mask masking mode
- * @param int $level error correction level
- * @return int blacks
- */
- protected function writeFormatInformation($width, &$frame, $mask, $level) {
- $blacks = 0;
- $format = $this->getFormatInfo($mask, $level);
- for ($i=0; $i<8; ++$i) {
- if ($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
- $frame[8][$width - 1 - $i] = chr($v);
- if ($i < 6) {
- $frame[$i][8] = chr($v);
- } else {
- $frame[$i + 1][8] = chr($v);
- }
- $format = $format >> 1;
- }
- for ($i=0; $i<7; ++$i) {
- if ($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
- $frame[$width - 7 + $i][8] = chr($v);
- if ($i == 0) {
- $frame[8][7] = chr($v);
- } else {
- $frame[8][6 - $i] = chr($v);
- }
- $format = $format >> 1;
- }
- return $blacks;
- }
-
- /**
- * mask0
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask0($x, $y) {
- return ($x + $y) & 1;
- }
-
- /**
- * mask1
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask1($x, $y) {
- return ($y & 1);
- }
-
- /**
- * mask2
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask2($x, $y) {
- return ($x % 3);
- }
-
- /**
- * mask3
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask3($x, $y) {
- return ($x + $y) % 3;
- }
-
- /**
- * mask4
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask4($x, $y) {
- return (((int)($y / 2)) + ((int)($x / 3))) & 1;
- }
-
- /**
- * mask5
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask5($x, $y) {
- return (($x * $y) & 1) + ($x * $y) % 3;
- }
-
- /**
- * mask6
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask6($x, $y) {
- return ((($x * $y) & 1) + ($x * $y) % 3) & 1;
- }
-
- /**
- * mask7
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask7($x, $y) {
- return ((($x * $y) % 3) + (($x + $y) & 1)) & 1;
- }
-
- /**
- * Return bitmask
- * @param int $maskNo mask number
- * @param int $width width
- * @param array $frame frame
- * @return array bitmask
- */
- protected function generateMaskNo($maskNo, $width, $frame) {
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
- for ($y=0; $y<$width; ++$y) {
- for ($x=0; $x<$width; ++$x) {
- if (ord($frame[$y][$x]) & 0x80) {
- $bitMask[$y][$x] = 0;
- } else {
- $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
- $bitMask[$y][$x] = ($maskFunc == 0)?1:0;
- }
- }
- }
- return $bitMask;
- }
-
- /**
- * makeMaskNo
- * @param int $maskNo
- * @param int $width
- * @param int $s
- * @param int $d
- * @param boolean $maskGenOnly
- * @return int b
- */
- protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) {
- $b = 0;
- $bitMask = array();
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- if ($maskGenOnly) {
- return;
- }
- $d = $s;
- for ($y=0; $y<$width; ++$y) {
- for ($x=0; $x<$width; ++$x) {
- if ($bitMask[$y][$x] == 1) {
- $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
- }
- $b += (int)(ord($d[$y][$x]) & 1);
- }
- }
- return $b;
- }
-
- /**
- * makeMask
- * @param int $width
- * @param array $frame
- * @param int $maskNo
- * @param int $level
- * @return array mask
- */
- protected function makeMask($width, $frame, $maskNo, $level) {
- $masked = array_fill(0, $width, str_repeat("\0", $width));
- $this->makeMaskNo($maskNo, $width, $frame, $masked);
- $this->writeFormatInformation($width, $masked, $maskNo, $level);
- return $masked;
- }
-
- /**
- * calcN1N3
- * @param int $length
- * @return int demerit
- */
- protected function calcN1N3($length) {
- $demerit = 0;
- for ($i=0; $i<$length; ++$i) {
- if ($this->runLength[$i] >= 5) {
- $demerit += (N1 + ($this->runLength[$i] - 5));
- }
- if ($i & 1) {
- if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) {
- $fact = (int)($this->runLength[$i] / 3);
- if (($this->runLength[$i-2] == $fact)
- AND ($this->runLength[$i-1] == $fact)
- AND ($this->runLength[$i+1] == $fact)
- AND ($this->runLength[$i+2] == $fact)) {
- if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) {
- $demerit += N3;
- } elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) {
- $demerit += N3;
- }
- }
- }
- }
- }
- return $demerit;
- }
-
- /**
- * evaluateSymbol
- * @param int $width
- * @param array $frame
- * @return int demerit
- */
- protected function evaluateSymbol($width, $frame) {
- $head = 0;
- $demerit = 0;
- for ($y=0; $y<$width; ++$y) {
- $head = 0;
- $this->runLength[0] = 1;
- $frameY = $frame[$y];
- if ($y > 0) {
- $frameYM = $frame[$y-1];
- }
- for ($x=0; $x<$width; ++$x) {
- if (($x > 0) AND ($y > 0)) {
- $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
- $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
- if (($b22 | ($w22 ^ 1)) & 1) {
- $demerit += N2;
- }
- }
- if (($x == 0) AND (ord($frameY[$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } elseif ($x > 0) {
- if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
- $demerit += $this->calcN1N3($head+1);
- }
- for ($x=0; $x<$width; ++$x) {
- $head = 0;
- $this->runLength[0] = 1;
- for ($y=0; $y<$width; ++$y) {
- if (($y == 0) AND (ord($frame[$y][$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } elseif ($y > 0) {
- if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
- $demerit += $this->calcN1N3($head+1);
- }
- return $demerit;
- }
-
- /**
- * mask
- * @param int $width
- * @param array $frame
- * @param int $level
- * @return array best mask
- */
- protected function mask($width, $frame, $level) {
- $minDemerit = PHP_INT_MAX;
- $bestMaskNum = 0;
- $bestMask = array();
- $checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7);
- if (QR_FIND_FROM_RANDOM !== false) {
- $howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9);
- for ($i = 0; $i < $howManuOut; ++$i) {
- $remPos = rand (0, count($checked_masks)-1);
- unset($checked_masks[$remPos]);
- $checked_masks = array_values($checked_masks);
- }
- }
- $bestMask = $frame;
- foreach ($checked_masks as $i) {
- $mask = array_fill(0, $width, str_repeat("\0", $width));
- $demerit = 0;
- $blacks = 0;
- $blacks = $this->makeMaskNo($i, $width, $frame, $mask);
- $blacks += $this->writeFormatInformation($width, $mask, $i, $level);
- $blacks = (int)(100 * $blacks / ($width * $width));
- $demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
- $demerit += $this->evaluateSymbol($width, $mask);
- if ($demerit < $minDemerit) {
- $minDemerit = $demerit;
- $bestMask = $mask;
- $bestMaskNum = $i;
- }
- }
- return $bestMask;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRsplit
-
- /**
- * Return true if the character at specified position is a number
- * @param string $str string
- * @param int $pos characted position
- * @return boolean true of false
- */
- protected function isdigitat($str, $pos) {
- if ($pos >= strlen($str)) {
- return false;
- }
- return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
- }
-
- /**
- * Return true if the character at specified position is an alphanumeric character
- * @param string $str string
- * @param int $pos characted position
- * @return boolean true of false
- */
- protected function isalnumat($str, $pos) {
- if ($pos >= strlen($str)) {
- return false;
- }
- return ($this->lookAnTable(ord($str[$pos])) >= 0);
- }
-
- /**
- * identifyMode
- * @param int $pos
- * @return int mode
- */
- protected function identifyMode($pos) {
- if ($pos >= strlen($this->dataStr)) {
- return QR_MODE_NL;
- }
- $c = $this->dataStr[$pos];
- if ($this->isdigitat($this->dataStr, $pos)) {
- return QR_MODE_NM;
- } elseif ($this->isalnumat($this->dataStr, $pos)) {
- return QR_MODE_AN;
- } elseif ($this->hint == QR_MODE_KJ) {
- if ($pos+1 < strlen($this->dataStr)) {
- $d = $this->dataStr[$pos+1];
- $word = (ord($c) << 8) | ord($d);
- if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) {
- return QR_MODE_KJ;
- }
- }
- }
- return QR_MODE_8B;
- }
-
- /**
- * eatNum
- * @return int run
- */
- protected function eatNum() {
- $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
- $p = 0;
- while($this->isdigitat($this->dataStr, $p)) {
- $p++;
- }
- $run = $p;
- $mode = $this->identifyMode($p);
- if ($mode == QR_MODE_8B) {
- $dif = $this->estimateBitsModeNum($run) + 4 + $ln
- + $this->estimateBitsMode8(1) // + 4 + l8
- - $this->estimateBitsMode8($run + 1); // - 4 - l8
- if ($dif > 0) {
- return $this->eat8();
- }
- }
- if ($mode == QR_MODE_AN) {
- $dif = $this->estimateBitsModeNum($run) + 4 + $ln
- + $this->estimateBitsModeAn(1) // + 4 + la
- - $this->estimateBitsModeAn($run + 1);// - 4 - la
- if ($dif > 0) {
- return $this->eatAn();
- }
- }
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * eatAn
- * @return int run
- */
- protected function eatAn() {
- $la = $this->lengthIndicator(QR_MODE_AN, $this->version);
- $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
- $p = 0;
- while($this->isalnumat($this->dataStr, $p)) {
- if ($this->isdigitat($this->dataStr, $p)) {
- $q = $p;
- while($this->isdigitat($this->dataStr, $q)) {
- $q++;
- }
- $dif = $this->estimateBitsModeAn($p) // + 4 + la
- + $this->estimateBitsModeNum($q - $p) + 4 + $ln
- - $this->estimateBitsModeAn($q); // - 4 - la
- if ($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
- $run = $p;
- if (!$this->isalnumat($this->dataStr, $p)) {
- $dif = $this->estimateBitsModeAn($run) + 4 + $la
- + $this->estimateBitsMode8(1) // + 4 + l8
- - $this->estimateBitsMode8($run + 1); // - 4 - l8
- if ($dif > 0) {
- return $this->eat8();
- }
- }
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * eatKanji
- * @return int run
- */
- protected function eatKanji() {
- $p = 0;
- while($this->identifyMode($p) == QR_MODE_KJ) {
- $p += 2;
- }
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * eat8
- * @return int run
- */
- protected function eat8() {
- $la = $this->lengthIndicator(QR_MODE_AN, $this->version);
- $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
- $p = 1;
- $dataStrLen = strlen($this->dataStr);
- while($p < $dataStrLen) {
- $mode = $this->identifyMode($p);
- if ($mode == QR_MODE_KJ) {
- break;
- }
- if ($mode == QR_MODE_NM) {
- $q = $p;
- while($this->isdigitat($this->dataStr, $q)) {
- $q++;
- }
- $dif = $this->estimateBitsMode8($p) // + 4 + l8
- + $this->estimateBitsModeNum($q - $p) + 4 + $ln
- - $this->estimateBitsMode8($q); // - 4 - l8
- if ($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } elseif ($mode == QR_MODE_AN) {
- $q = $p;
- while($this->isalnumat($this->dataStr, $q)) {
- $q++;
- }
- $dif = $this->estimateBitsMode8($p) // + 4 + l8
- + $this->estimateBitsModeAn($q - $p) + 4 + $la
- - $this->estimateBitsMode8($q); // - 4 - l8
- if ($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
- $run = $p;
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * splitString
- */
- protected function splitString() {
- while (strlen($this->dataStr) > 0) {
- if ($this->dataStr == '') {
- return 0;
- }
- $mode = $this->identifyMode(0);
- switch ($mode) {
- case QR_MODE_NM: {
- $length = $this->eatNum();
- break;
- }
- case QR_MODE_AN: {
- $length = $this->eatAn();
- break;
- }
- case QR_MODE_KJ: {
- if ($hint == QR_MODE_KJ) {
- $length = $this->eatKanji();
- } else {
- $length = $this->eat8();
- }
- break;
- }
- default: {
- $length = $this->eat8();
- break;
- }
- }
- if ($length == 0) {
- return 0;
- }
- if ($length < 0) {
- return -1;
- }
- $this->dataStr = substr($this->dataStr, $length);
- }
- }
-
- /**
- * toUpper
- */
- protected function toUpper() {
- $stringLen = strlen($this->dataStr);
- $p = 0;
- while ($p < $stringLen) {
- $mode = $this->identifyMode(substr($this->dataStr, $p), $this->hint);
- if ($mode == QR_MODE_KJ) {
- $p += 2;
- } else {
- if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) {
- $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
- }
- $p++;
- }
- }
- return $this->dataStr;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRinputItem
-
- /**
- * newInputItem
- * @param int $mode
- * @param int $size
- * @param array $data
- * @param array $bstream
- * @return array input item
- */
- protected function newInputItem($mode, $size, $data, $bstream=null) {
- $setData = array_slice($data, 0, $size);
- if (count($setData) < $size) {
- $setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0));
- }
- if (!$this->check($mode, $size, $setData)) {
- return NULL;
- }
- $inputitem = array();
- $inputitem['mode'] = $mode;
- $inputitem['size'] = $size;
- $inputitem['data'] = $setData;
- $inputitem['bstream'] = $bstream;
- return $inputitem;
- }
-
- /**
- * encodeModeNum
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeModeNum($inputitem, $version) {
- $words = (int)($inputitem['size'] / 3);
- $inputitem['bstream'] = array();
- $val = 0x1;
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']);
- for ($i=0; $i < $words; ++$i) {
- $val = (ord($inputitem['data'][$i*3 ]) - ord('0')) * 100;
- $val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10;
- $val += (ord($inputitem['data'][$i*3+2]) - ord('0'));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val);
- }
- if ($inputitem['size'] - $words * 3 == 1) {
- $val = ord($inputitem['data'][$words*3]) - ord('0');
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
- } elseif (($inputitem['size'] - ($words * 3)) == 2) {
- $val = (ord($inputitem['data'][$words*3 ]) - ord('0')) * 10;
- $val += (ord($inputitem['data'][$words*3+1]) - ord('0'));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val);
- }
- return $inputitem;
- }
-
- /**
- * encodeModeAn
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeModeAn($inputitem, $version) {
- $words = (int)($inputitem['size'] / 2);
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02);
- $inputitem['bstream'] = $this->appendNum(v, $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']);
- for ($i=0; $i < $words; ++$i) {
- $val = (int)$this->lookAnTable(ord($inputitem['data'][$i*2 ])) * 45;
- $val += (int)$this->lookAnTable(ord($inputitem['data'][$i*2+1]));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val);
- }
- if ($inputitem['size'] & 1) {
- $val = $this->lookAnTable(ord($inputitem['data'][($words * 2)]));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val);
- }
- return $inputitem;
- }
-
- /**
- * encodeMode8
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeMode8($inputitem, $version) {
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']);
- for ($i=0; $i < $inputitem['size']; ++$i) {
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i]));
- }
- return $inputitem;
- }
-
- /**
- * encodeModeKanji
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeModeKanji($inputitem, $version) {
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2));
- for ($i=0; $i<$inputitem['size']; $i+=2) {
- $val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]);
- if ($val <= 0x9ffc) {
- $val -= 0x8140;
- } else {
- $val -= 0xc140;
- }
- $h = ($val >> 8) * 0xc0;
- $val = ($val & 0xff) + $h;
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val);
- }
- return $inputitem;
- }
-
- /**
- * encodeModeStructure
- * @param array $inputitem
- * @return array input item
- */
- protected function encodeModeStructure($inputitem) {
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2]));
- return $inputitem;
- }
-
- /**
- * encodeBitStream
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeBitStream($inputitem, $version) {
- $inputitem['bstream'] = array();
- $words = $this->maximumWords($inputitem['mode'], $version);
- if ($inputitem['size'] > $words) {
- $st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']);
- $st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words));
- $st1 = $this->encodeBitStream($st1, $version);
- $st2 = $this->encodeBitStream($st2, $version);
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']);
- $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']);
- } else {
- switch($inputitem['mode']) {
- case QR_MODE_NM: {
- $inputitem = $this->encodeModeNum($inputitem, $version);
- break;
- }
- case QR_MODE_AN: {
- $inputitem = $this->encodeModeAn($inputitem, $version);
- break;
- }
- case QR_MODE_8B: {
- $inputitem = $this->encodeMode8($inputitem, $version);
- break;
- }
- case QR_MODE_KJ: {
- $inputitem = $this->encodeModeKanji($inputitem, $version);
- break;
- }
- case QR_MODE_ST: {
- $inputitem = $this->encodeModeStructure($inputitem);
- break;
- }
- default: {
- break;
- }
- }
- }
- return $inputitem;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRinput
-
- /**
- * Append data to an input object.
- * The data is copied and appended to the input object.
- * @param array items input items
- * @param int $mode encoding mode.
- * @param int $size size of data (byte).
- * @param array $data array of input data.
- * @return items
- *
- */
- protected function appendNewInputItem($items, $mode, $size, $data) {
- $items[] = $this->newInputItem($mode, $size, $data);
- return $items;
- }
-
- /**
- * insertStructuredAppendHeader
- * @param array $items
- * @param int $size
- * @param int $index
- * @param int $parity
- * @return array items
- */
- protected function insertStructuredAppendHeader($items, $size, $index, $parity) {
- if ($size > MAX_STRUCTURED_SYMBOLS) {
- return -1;
- }
- if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) {
- return -1;
- }
- $buf = array($size, $index, $parity);
- $entry = $this->newInputItem(QR_MODE_ST, 3, buf);
- array_unshift($items, $entry);
- return $items;
- }
-
- /**
- * calcParity
- * @param array $items
- * @return int parity
- */
- protected function calcParity($items) {
- $parity = 0;
- foreach ($items as $item) {
- if ($item['mode'] != QR_MODE_ST) {
- for ($i=$item['size']-1; $i>=0; --$i) {
- $parity ^= $item['data'][$i];
- }
- }
- }
- return $parity;
- }
-
- /**
- * checkModeNum
- * @param int $size
- * @param array $data
- * @return boolean true or false
- */
- protected function checkModeNum($size, $data) {
- for ($i=0; $i<$size; ++$i) {
- if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){
- return false;
- }
- }
- return true;
- }
-
- /**
- * estimateBitsModeNum
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsModeNum($size) {
- $w = (int)$size / 3;
- $bits = $w * 10;
- switch($size - $w * 3) {
- case 1: {
- $bits += 4;
- break;
- }
- case 2: {
- $bits += 7;
- break;
- }
- default: {
- break;
- }
- }
- return $bits;
- }
-
- /**
- * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19).
- * @param int $c character value
- * @return value
- */
- protected function lookAnTable($c) {
- return (($c > 127)?-1:$this->anTable[$c]);
- }
-
- /**
- * checkModeAn
- * @param int $size
- * @param array $data
- * @return boolean true or false
- */
- protected function checkModeAn($size, $data) {
- for ($i=0; $i<$size; ++$i) {
- if ($this->lookAnTable(ord($data[$i])) == -1) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * estimateBitsModeAn
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsModeAn($size) {
- $w = (int)($size / 2);
- $bits = $w * 11;
- if ($size & 1) {
- $bits += 6;
- }
- return $bits;
- }
-
- /**
- * estimateBitsMode8
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsMode8($size) {
- return $size * 8;
- }
-
- /**
- * estimateBitsModeKanji
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsModeKanji($size) {
- return (int)(($size / 2) * 13);
- }
-
- /**
- * checkModeKanji
- * @param int $size
- * @param array $data
- * @return boolean true or false
- */
- protected function checkModeKanji($size, $data) {
- if ($size & 1) {
- return false;
- }
- for ($i=0; $i<$size; $i+=2) {
- $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
- if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Validate the input data.
- * @param int $mode encoding mode.
- * @param int $size size of data (byte).
- * @param array data data to validate
- * @return boolean true in case of valid data, false otherwise
- */
- protected function check($mode, $size, $data) {
- if ($size <= 0) {
- return false;
- }
- switch($mode) {
- case QR_MODE_NM: {
- return $this->checkModeNum($size, $data);
- }
- case QR_MODE_AN: {
- return $this->checkModeAn($size, $data);
- }
- case QR_MODE_KJ: {
- return $this->checkModeKanji($size, $data);
- }
- case QR_MODE_8B: {
- return true;
- }
- case QR_MODE_ST: {
- return true;
- }
- default: {
- break;
- }
- }
- return false;
- }
-
- /**
- * estimateBitStreamSize
- * @param array $items
- * @param int $version
- * @return int bits
- */
- protected function estimateBitStreamSize($items, $version) {
- $bits = 0;
- if ($version == 0) {
- $version = 1;
- }
- foreach ($items as $item) {
- switch($item['mode']) {
- case QR_MODE_NM: {
- $bits = $this->estimateBitsModeNum($item['size']);
- break;
- }
- case QR_MODE_AN: {
- $bits = $this->estimateBitsModeAn($item['size']);
- break;
- }
- case QR_MODE_8B: {
- $bits = $this->estimateBitsMode8($item['size']);
- break;
- }
- case QR_MODE_KJ: {
- $bits = $this->estimateBitsModeKanji($item['size']);
- break;
- }
- case QR_MODE_ST: {
- return STRUCTURE_HEADER_BITS;
- }
- default: {
- return 0;
- }
- }
- $l = $this->lengthIndicator($item['mode'], $version);
- $m = 1 << $l;
- $num = (int)(($item['size'] + $m - 1) / $m);
- $bits += $num * (4 + $l);
- }
- return $bits;
- }
-
- /**
- * estimateVersion
- * @param array $items
- * @return int version
- */
- protected function estimateVersion($items) {
- $version = 0;
- $prev = 0;
- do {
- $prev = $version;
- $bits = $this->estimateBitStreamSize($items, $prev);
- $version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if ($version < 0) {
- return -1;
- }
- } while ($version > $prev);
- return $version;
- }
-
- /**
- * lengthOfCode
- * @param int $mode
- * @param int $version
- * @param int $bits
- * @return int size
- */
- protected function lengthOfCode($mode, $version, $bits) {
- $payload = $bits - 4 - $this->lengthIndicator($mode, $version);
- switch($mode) {
- case QR_MODE_NM: {
- $chunks = (int)($payload / 10);
- $remain = $payload - $chunks * 10;
- $size = $chunks * 3;
- if ($remain >= 7) {
- $size += 2;
- } elseif ($remain >= 4) {
- $size += 1;
- }
- break;
- }
- case QR_MODE_AN: {
- $chunks = (int)($payload / 11);
- $remain = $payload - $chunks * 11;
- $size = $chunks * 2;
- if ($remain >= 6) {
- ++$size;
- }
- break;
- }
- case QR_MODE_8B: {
- $size = (int)($payload / 8);
- break;
- }
- case QR_MODE_KJ: {
- $size = (int)(($payload / 13) * 2);
- break;
- }
- case QR_MODE_ST: {
- $size = (int)($payload / 8);
- break;
- }
- default: {
- $size = 0;
- break;
- }
- }
- $maxsize = $this->maximumWords($mode, $version);
- if ($size < 0) {
- $size = 0;
- }
- if ($size > $maxsize) {
- $size = $maxsize;
- }
- return $size;
- }
-
- /**
- * createBitStream
- * @param array $items
- * @return array of items and total bits
- */
- protected function createBitStream($items) {
- $total = 0;
- foreach ($items as $key => $item) {
- $items[$key] = $this->encodeBitStream($item, $this->version);
- $bits = count($items[$key]['bstream']);
- $total += $bits;
- }
- return array($items, $total);
- }
-
- /**
- * convertData
- * @param array $items
- * @return array items
- */
- protected function convertData($items) {
- $ver = $this->estimateVersion($items);
- if ($ver > $this->version) {
- $this->version = $ver;
- }
- for (;;) {
- $cbs = $this->createBitStream($items);
- $items = $cbs[0];
- $bits = $cbs[1];
- if ($bits < 0) {
- return -1;
- }
- $ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if ($ver < 0) {
- return -1;
- } elseif ($ver > $this->version) {
- $this->version = $ver;
- } else {
- break;
- }
- }
- return $items;
- }
-
- /**
- * Append Padding Bit to bitstream
- * @param array $bstream
- * @return array bitstream
- */
- protected function appendPaddingBit($bstream) {
- $bits = count($bstream);
- $maxwords = $this->getDataLength($this->version, $this->level);
- $maxbits = $maxwords * 8;
- if ($maxbits == $bits) {
- return 0;
- }
- if ($maxbits - $bits < 5) {
- return $this->appendNum($bstream, $maxbits - $bits, 0);
- }
- $bits += 4;
- $words = (int)(($bits + 7) / 8);
- $padding = array();
- $padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0);
- $padlen = $maxwords - $words;
- if ($padlen > 0) {
- $padbuf = array();
- for ($i=0; $i<$padlen; ++$i) {
- $padbuf[$i] = ($i&1)?0x11:0xec;
- }
- $padding = $this->appendBytes($padding, $padlen, $padbuf);
- }
- return $this->appendBitstream($bstream, $padding);
- }
-
- /**
- * mergeBitStream
- * @param array $bstream
- * @return array bitstream
- */
- protected function mergeBitStream($items) {
- $items = $this->convertData($items);
- $bstream = array();
- foreach ($items as $item) {
- $bstream = $this->appendBitstream($bstream, $item['bstream']);
- }
- return $bstream;
- }
-
- /**
- * Returns a stream of bits.
- * @param int $items
- * @return array padded merged byte stream
- */
- protected function getBitStream($items) {
- $bstream = $this->mergeBitStream($items);
- return $this->appendPaddingBit($bstream);
- }
-
- /**
- * Pack all bit streams padding bits into a byte array.
- * @param int $items
- * @return array padded merged byte stream
- */
- protected function getByteStream($items) {
- $bstream = $this->getBitStream($items);
- return $this->bitstreamToByte($bstream);
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRbitstream
-
- /**
- * Return an array with zeros
- * @param int $setLength array size
- * @return array
- */
- protected function allocate($setLength) {
- return array_fill(0, $setLength, 0);
- }
-
- /**
- * Return new bitstream from number
- * @param int $bits number of bits
- * @param int $num number
- * @return array bitstream
- */
- protected function newFromNum($bits, $num) {
- $bstream = $this->allocate($bits);
- $mask = 1 << ($bits - 1);
- for ($i=0; $i<$bits; ++$i) {
- if ($num & $mask) {
- $bstream[$i] = 1;
- } else {
- $bstream[$i] = 0;
- }
- $mask = $mask >> 1;
- }
- return $bstream;
- }
-
- /**
- * Return new bitstream from bytes
- * @param int $size size
- * @param array $data bytes
- * @return array bitstream
- */
- protected function newFromBytes($size, $data) {
- $bstream = $this->allocate($size * 8);
- $p=0;
- for ($i=0; $i<$size; ++$i) {
- $mask = 0x80;
- for ($j=0; $j<8; ++$j) {
- if ($data[$i] & $mask) {
- $bstream[$p] = 1;
- } else {
- $bstream[$p] = 0;
- }
- $p++;
- $mask = $mask >> 1;
- }
- }
- return $bstream;
- }
-
- /**
- * Append one bitstream to another
- * @param array $bitstream original bitstream
- * @param array $append bitstream to append
- * @return array bitstream
- */
- protected function appendBitstream($bitstream, $append) {
- if ((!is_array($append)) OR (count($append) == 0)) {
- return $bitstream;
- }
- if (count($bitstream) == 0) {
- return $append;
- }
- return array_values(array_merge($bitstream, $append));
- }
-
- /**
- * Append one bitstream created from number to another
- * @param array $bitstream original bitstream
- * @param int $bits number of bits
- * @param int $num number
- * @return array bitstream
- */
- protected function appendNum($bitstream, $bits, $num) {
- if ($bits == 0) {
- return 0;
- }
- $b = $this->newFromNum($bits, $num);
- return $this->appendBitstream($bitstream, $b);
- }
-
- /**
- * Append one bitstream created from bytes to another
- * @param array $bitstream original bitstream
- * @param int $size size
- * @param array $data bytes
- * @return array bitstream
- */
- protected function appendBytes($bitstream, $size, $data) {
- if ($size == 0) {
- return 0;
- }
- $b = $this->newFromBytes($size, $data);
- return $this->appendBitstream($bitstream, $b);
- }
-
- /**
- * Convert bitstream to bytes
- * @param array $bitstream original bitstream
- * @return array of bytes
- */
- protected function bitstreamToByte($bstream) {
- $size = count($bstream);
- if ($size == 0) {
- return array();
- }
- $data = array_fill(0, (int)(($size + 7) / 8), 0);
- $bytes = (int)($size / 8);
- $p = 0;
- for ($i=0; $i<$bytes; $i++) {
- $v = 0;
- for ($j=0; $j<8; $j++) {
- $v = $v << 1;
- $v |= $bstream[$p];
- $p++;
- }
- $data[$i] = $v;
- }
- if ($size & 7) {
- $v = 0;
- for ($j=0; $j<($size & 7); $j++) {
- $v = $v << 1;
- $v |= $bstream[$p];
- $p++;
- }
- $data[$bytes] = $v;
- }
- return $data;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRspec
-
- /**
- * Replace a value on the array at the specified position
- * @param array $srctab
- * @param int $x X position
- * @param int $y Y position
- * @param string $repl value to replace
- * @param int $replLen length of the repl string
- * @return array srctab
- */
- protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) {
- $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
- return $srctab;
- }
-
- /**
- * Return maximum data code length (bytes) for the version.
- * @param int $version version
- * @param int $level error correction level
- * @return int maximum size (bytes)
- */
- protected function getDataLength($version, $level) {
- return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level];
- }
-
- /**
- * Return maximum error correction code length (bytes) for the version.
- * @param int $version version
- * @param int $level error correction level
- * @return int ECC size (bytes)
- */
- protected function getECCLength($version, $level){
- return $this->capacity[$version][QRCAP_EC][$level];
- }
-
- /**
- * Return the width of the symbol for the version.
- * @param int $version version
- * @return int width
- */
- protected function getWidth($version) {
- return $this->capacity[$version][QRCAP_WIDTH];
- }
-
- /**
- * Return the numer of remainder bits.
- * @param int $version version
- * @return int number of remainder bits
- */
- protected function getRemainder($version) {
- return $this->capacity[$version][QRCAP_REMINDER];
- }
-
- /**
- * Return a version number that satisfies the input code length.
- * @param int $size input code length (byte)
- * @param int $level error correction level
- * @return int version number
- */
- protected function getMinimumVersion($size, $level) {
- for ($i=1; $i <= QRSPEC_VERSION_MAX; ++$i) {
- $words = $this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level];
- if ($words >= $size) {
- return $i;
- }
- }
- return -1;
- }
-
- /**
- * Return the size of length indicator for the mode and version.
- * @param int $mode encoding mode
- * @param int $version version
- * @return int the size of the appropriate length indicator (bits).
- */
- protected function lengthIndicator($mode, $version) {
- if ($mode == QR_MODE_ST) {
- return 0;
- }
- if ($version <= 9) {
- $l = 0;
- } elseif ($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
- return $this->lengthTableBits[$mode][$l];
- }
-
- /**
- * Return the maximum length for the mode and version.
- * @param int $mode encoding mode
- * @param int $version version
- * @return int the maximum length (bytes)
- */
- protected function maximumWords($mode, $version) {
- if ($mode == QR_MODE_ST) {
- return 3;
- }
- if ($version <= 9) {
- $l = 0;
- } else if ($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
- $bits = $this->lengthTableBits[$mode][$l];
- $words = (1 << $bits) - 1;
- if ($mode == QR_MODE_KJ) {
- $words *= 2; // the number of bytes is required
- }
- return $words;
- }
-
- /**
- * Return an array of ECC specification.
- * @param int $version version
- * @param int $level error correction level
- * @param array $spec an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code}
- * @return array spec
- */
- protected function getEccSpec($version, $level, $spec) {
- if (count($spec) < 5) {
- $spec = array(0, 0, 0, 0, 0);
- }
- $b1 = $this->eccTable[$version][$level][0];
- $b2 = $this->eccTable[$version][$level][1];
- $data = $this->getDataLength($version, $level);
- $ecc = $this->getECCLength($version, $level);
- if ($b2 == 0) {
- $spec[0] = $b1;
- $spec[1] = (int)($data / $b1);
- $spec[2] = (int)($ecc / $b1);
- $spec[3] = 0;
- $spec[4] = 0;
- } else {
- $spec[0] = $b1;
- $spec[1] = (int)($data / ($b1 + $b2));
- $spec[2] = (int)($ecc / ($b1 + $b2));
- $spec[3] = $b2;
- $spec[4] = $spec[1] + 1;
- }
- return $spec;
- }
-
- /**
- * Put an alignment marker.
- * @param array $frame frame
- * @param int $width width
- * @param int $ox X center coordinate of the pattern
- * @param int $oy Y center coordinate of the pattern
- * @return array frame
- */
- protected function putAlignmentMarker($frame, $ox, $oy) {
- $finder = array(
- "\xa1\xa1\xa1\xa1\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa0\xa1\xa0\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa1\xa1\xa1\xa1"
- );
- $yStart = $oy - 2;
- $xStart = $ox - 2;
- for ($y=0; $y < 5; $y++) {
- $frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]);
- }
- return $frame;
- }
-
- /**
- * Put an alignment pattern.
- * @param int $version version
- * @param array $fram frame
- * @param int $width width
- * @return array frame
- */
- protected function putAlignmentPattern($version, $frame, $width) {
- if ($version < 2) {
- return $frame;
- }
- $d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0];
- if ($d < 0) {
- $w = 2;
- } else {
- $w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2);
- }
- if ($w * $w - 3 == 1) {
- $x = $this->alignmentPattern[$version][0];
- $y = $this->alignmentPattern[$version][0];
- $frame = $this->putAlignmentMarker($frame, $x, $y);
- return $frame;
- }
- $cx = $this->alignmentPattern[$version][0];
- $wo = $w - 1;
- for ($x=1; $x < $wo; ++$x) {
- $frame = $this->putAlignmentMarker($frame, 6, $cx);
- $frame = $this->putAlignmentMarker($frame, $cx, 6);
- $cx += $d;
- }
- $cy = $this->alignmentPattern[$version][0];
- for ($y=0; $y < $wo; ++$y) {
- $cx = $this->alignmentPattern[$version][0];
- for ($x=0; $x < $wo; ++$x) {
- $frame = $this->putAlignmentMarker($frame, $cx, $cy);
- $cx += $d;
- }
- $cy += $d;
- }
- return $frame;
- }
-
- /**
- * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits.
- * @param int $version version
- * @return BCH encoded version information pattern
- */
- protected function getVersionPattern($version) {
- if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) {
- return 0;
- }
- return $this->versionPattern[($version - 7)];
- }
-
- /**
- * Return BCH encoded format information pattern.
- * @param array $mask
- * @param int $level error correction level
- * @return BCH encoded format information pattern
- */
- protected function getFormatInfo($mask, $level) {
- if (($mask < 0) OR ($mask > 7)) {
- return 0;
- }
- if (($level < 0) OR ($level > 3)) {
- return 0;
- }
- return $this->formatInfo[$level][$mask];
- }
-
- /**
- * Put a finder pattern.
- * @param array $frame frame
- * @param int $width width
- * @param int $ox X center coordinate of the pattern
- * @param int $oy Y center coordinate of the pattern
- * @return array frame
- */
- protected function putFinderPattern($frame, $ox, $oy) {
- $finder = array(
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
- );
- for ($y=0; $y < 7; $y++) {
- $frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]);
- }
- return $frame;
- }
-
- /**
- * Return a copy of initialized frame.
- * @param int $version version
- * @return Array of unsigned char.
- */
- protected function createFrame($version) {
- $width = $this->capacity[$version][QRCAP_WIDTH];
- $frameLine = str_repeat ("\0", $width);
- $frame = array_fill(0, $width, $frameLine);
- // Finder pattern
- $frame = $this->putFinderPattern($frame, 0, 0);
- $frame = $this->putFinderPattern($frame, $width - 7, 0);
- $frame = $this->putFinderPattern($frame, 0, $width - 7);
- // Separator
- $yOffset = $width - 7;
- for ($y=0; $y < 7; ++$y) {
- $frame[$y][7] = "\xc0";
- $frame[$y][$width - 8] = "\xc0";
- $frame[$yOffset][7] = "\xc0";
- ++$yOffset;
- }
- $setPattern = str_repeat("\xc0", 8);
- $frame = $this->qrstrset($frame, 0, 7, $setPattern);
- $frame = $this->qrstrset($frame, $width-8, 7, $setPattern);
- $frame = $this->qrstrset($frame, 0, $width - 8, $setPattern);
- // Format info
- $setPattern = str_repeat("\x84", 9);
- $frame = $this->qrstrset($frame, 0, 8, $setPattern);
- $frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8);
- $yOffset = $width - 8;
- for ($y=0; $y < 8; ++$y,++$yOffset) {
- $frame[$y][8] = "\x84";
- $frame[$yOffset][8] = "\x84";
- }
- // Timing pattern
- $wo = $width - 15;
- for ($i=1; $i < $wo; ++$i) {
- $frame[6][7+$i] = chr(0x90 | ($i & 1));
- $frame[7+$i][6] = chr(0x90 | ($i & 1));
- }
- // Alignment pattern
- $frame = $this->putAlignmentPattern($version, $frame, $width);
- // Version information
- if ($version >= 7) {
- $vinf = $this->getVersionPattern($version);
- $v = $vinf;
- for ($x=0; $x<6; ++$x) {
- for ($y=0; $y<3; ++$y) {
- $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
- $v = $vinf;
- for ($y=0; $y<6; ++$y) {
- for ($x=0; $x<3; ++$x) {
- $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
- }
- // and a little bit...
- $frame[$width - 8][8] = "\x81";
- return $frame;
- }
-
- /**
- * Set new frame for the specified version.
- * @param int $version version
- * @return Array of unsigned char.
- */
- protected function newFrame($version) {
- if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) {
- return NULL;
- }
- if (!isset($this->frames[$version])) {
- $this->frames[$version] = $this->createFrame($version);
- }
- if (is_null($this->frames[$version])) {
- return NULL;
- }
- return $this->frames[$version];
- }
-
- /**
- * Return block number 0
- * @param array $spec
- * @return int value
- */
- protected function rsBlockNum($spec) {
- return ($spec[0] + $spec[3]);
- }
-
- /**
- * Return block number 1
- * @param array $spec
- * @return int value
- */
- protected function rsBlockNum1($spec) {
- return $spec[0];
- }
-
- /**
- * Return data codes 1
- * @param array $spec
- * @return int value
- */
- protected function rsDataCodes1($spec) {
- return $spec[1];
- }
-
- /**
- * Return ecc codes 1
- * @param array $spec
- * @return int value
- */
- protected function rsEccCodes1($spec) {
- return $spec[2];
- }
-
- /**
- * Return block number 2
- * @param array $spec
- * @return int value
- */
- protected function rsBlockNum2($spec) {
- return $spec[3];
- }
-
- /**
- * Return data codes 2
- * @param array $spec
- * @return int value
- */
- protected function rsDataCodes2($spec) {
- return $spec[4];
- }
-
- /**
- * Return ecc codes 2
- * @param array $spec
- * @return int value
- */
- protected function rsEccCodes2($spec) {
- return $spec[2];
- }
-
- /**
- * Return data length
- * @param array $spec
- * @return int value
- */
- protected function rsDataLength($spec) {
- return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]);
- }
-
- /**
- * Return ecc length
- * @param array $spec
- * @return int value
- */
- protected function rsEccLength($spec) {
- return ($spec[0] + $spec[3]) * $spec[2];
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRrs
-
- /**
- * Initialize a Reed-Solomon codec and add it to existing rsitems
- * @param int $symsize symbol size, bits
- * @param int $gfpoly Field generator polynomial coefficients
- * @param int $fcr first root of RS code generator polynomial, index form
- * @param int $prim primitive element to generate polynomial roots
- * @param int $nroots RS code generator polynomial degree (number of roots)
- * @param int $pad padding bytes at front of shortened block
- * @return array Array of RS values:
.
- */
- protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
- foreach ($this->rsitems as $rs) {
- if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize)
- OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) {
- continue;
- }
- return $rs;
- }
- $rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
- array_unshift($this->rsitems, $rs);
- return $rs;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRrsItem
-
- /**
- * modnn
- * @param array RS values
- * @param int $x X position
- * @return int X osition
- */
- protected function modnn($rs, $x) {
- while ($x >= $rs['nn']) {
- $x -= $rs['nn'];
- $x = ($x >> $rs['mm']) + ($x & $rs['nn']);
- }
- return $x;
- }
-
- /**
- * Initialize a Reed-Solomon codec and returns an array of values.
- * @param int $symsize symbol size, bits
- * @param int $gfpoly Field generator polynomial coefficients
- * @param int $fcr first root of RS code generator polynomial, index form
- * @param int $prim primitive element to generate polynomial roots
- * @param int $nroots RS code generator polynomial degree (number of roots)
- * @param int $pad padding bytes at front of shortened block
- * @return array Array of RS values:
.
- */
- protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
- // Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2)
- $rs = null;
- // Check parameter ranges
- if (($symsize < 0) OR ($symsize > 8)) {
- return $rs;
- }
- if (($fcr < 0) OR ($fcr >= (1<<$symsize))) {
- return $rs;
- }
- if (($prim <= 0) OR ($prim >= (1<<$symsize))) {
- return $rs;
- }
- if (($nroots < 0) OR ($nroots >= (1<<$symsize))) {
- return $rs;
- }
- if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) {
- return $rs;
- }
- $rs = array();
- $rs['mm'] = $symsize;
- $rs['nn'] = (1 << $symsize) - 1;
- $rs['pad'] = $pad;
- $rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0);
- $rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0);
- // PHP style macro replacement ;)
- $NN =& $rs['nn'];
- $A0 =& $NN;
- // Generate Galois field lookup tables
- $rs['index_of'][0] = $A0; // log(zero) = -inf
- $rs['alpha_to'][$A0] = 0; // alpha**-inf = 0
- $sr = 1;
- for ($i=0; $i<$rs['nn']; ++$i) {
- $rs['index_of'][$sr] = $i;
- $rs['alpha_to'][$i] = $sr;
- $sr <<= 1;
- if ($sr & (1 << $symsize)) {
- $sr ^= $gfpoly;
- }
- $sr &= $rs['nn'];
- }
- if ($sr != 1) {
- // field generator polynomial is not primitive!
- return NULL;
- }
- // Form RS code generator polynomial from its roots
- $rs['genpoly'] = array_fill(0, ($nroots + 1), 0);
- $rs['fcr'] = $fcr;
- $rs['prim'] = $prim;
- $rs['nroots'] = $nroots;
- $rs['gfpoly'] = $gfpoly;
- // Find prim-th root of 1, used in decoding
- for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) {
- ; // intentional empty-body loop!
- }
- $rs['iprim'] = (int)($iprim / $prim);
- $rs['genpoly'][0] = 1;
-
-
- for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
- $rs['genpoly'][$i+1] = 1;
- // Multiply rs->genpoly[] by @**(root + x)
- for ($j = $i; $j > 0; --$j) {
- if ($rs['genpoly'][$j] != 0) {
- $rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)];
- } else {
- $rs['genpoly'][$j] = $rs['genpoly'][$j-1];
- }
- }
- // rs->genpoly[0] can never be zero
- $rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)];
- }
- // convert rs->genpoly[] to index form for quicker encoding
- for ($i = 0; $i <= $nroots; ++$i) {
- $rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]];
- }
- return $rs;
- }
-
- /**
- * Encode a Reed-Solomon codec and returns the parity array
- * @param array $rs RS values
- * @param array $data data
- * @param array $parity parity
- * @return parity array
- */
- protected function encode_rs_char($rs, $data, $parity) {
- $MM =& $rs['mm']; // bits per symbol
- $NN =& $rs['nn']; // the total number of symbols in a RS block
- $ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form
- $INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form
- $GENPOLY =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form
- $NROOTS =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block
- $FCR =& $rs['fcr']; // first consecutive root, index form
- $PRIM =& $rs['prim']; // primitive element, index form
- $IPRIM =& $rs['iprim']; // prim-th root of 1, index form
- $PAD =& $rs['pad']; // the number of pad symbols in a block
- $A0 =& $NN;
- $parity = array_fill(0, $NROOTS, 0);
- for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) {
- $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
- if ($feedback != $A0) {
- // feedback term is non-zero
- // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
- // always be for the polynomials constructed by init_rs()
- $feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback);
- for ($j=1; $j < $NROOTS; ++$j) {
- $parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])];
- }
- }
- // Shift
- array_shift($parity);
- if ($feedback != $A0) {
- array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]);
- } else {
- array_push($parity, 0);
- }
- }
- return $parity;
- }
-
- } // end QRcode class
-
-} // END OF "class_exists QRcode"
-?>
diff --git a/pdf/phpqrcode/phpqrcode.php b/pdf/phpqrcode/phpqrcode.php
deleted file mode 100755
index 80adb9d..0000000
--- a/pdf/phpqrcode/phpqrcode.php
+++ /dev/null
@@ -1,3312 +0,0 @@
-
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
-
-/*
- * Version: 1.1.4
- * Build: 2010100721
- */
-
-
-
-//---- qrconst.php -----------------------------
-
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Common constants
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
-
';
- }
-
- }
-
- //##########################################################################
-
- QRtools::markTime('start');
-
-
-
-
-//---- qrspec.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * QR Code specifications
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- ';
-
- foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) {
- if ($p > 0) {
- echo 'BENCHMARK ';
- } else {
- $startTime = $thisTime;
- }
-
- $p++;
- $lastTime = $thisTime;
- }
-
- echo '
- till '.$markerId.': '.number_format($thisTime-$lastTime, 6).'s
-
- TOTAL: '.number_format($lastTime-$startTime, 6).'s
';
- echo join("
", $frame);
- echo '
';
-
- } else {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join(' ', explode("\xc0", $frameLine));
- $frameLine = join('▒', explode("\xc1", $frameLine));
- $frameLine = join(' ', explode("\xa0", $frameLine));
- $frameLine = join('▒', explode("\xa1", $frameLine));
- $frameLine = join('◇', explode("\x84", $frameLine)); //format 0
- $frameLine = join('◆', explode("\x85", $frameLine)); //format 1
- $frameLine = join('☢', explode("\x81", $frameLine)); //special bit
- $frameLine = join(' ', explode("\x90", $frameLine)); //clock 0
- $frameLine = join('◷', explode("\x91", $frameLine)); //clock 1
- $frameLine = join(' ', explode("\x88", $frameLine)); //version
- $frameLine = join('▒', explode("\x89", $frameLine)); //version
- $frameLine = join('♦', explode("\x01", $frameLine));
- $frameLine = join('⋅', explode("\0", $frameLine));
- }
-
- ?>
-
- ";
- echo join("
", $frame);
- echo "";
-
- }
- }
-
- //----------------------------------------------------------------------
- public static function serial($frame)
- {
- return gzcompress(join("\n", $frame), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- return explode("\n", gzuncompress($code));
- }
-
- //----------------------------------------------------------------------
- public static function newFrame($version)
- {
- if($version < 1 || $version > QRSPEC_VERSION_MAX)
- return null;
-
- if(!isset(self::$frames[$version])) {
-
- $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- self::$frames[$version] = self::unserial(file_get_contents($fileName));
- } else {
- self::$frames[$version] = self::createFrame($version);
- file_put_contents($fileName, self::serial(self::$frames[$version]));
- }
- } else {
- self::$frames[$version] = self::createFrame($version);
- }
- }
-
- if(is_null(self::$frames[$version]))
- return null;
-
- return self::$frames[$version];
- }
-
- //----------------------------------------------------------------------
- public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; }
- public static function rsBlockNum1($spec) { return $spec[0]; }
- public static function rsDataCodes1($spec) { return $spec[1]; }
- public static function rsEccCodes1($spec) { return $spec[2]; }
- public static function rsBlockNum2($spec) { return $spec[3]; }
- public static function rsDataCodes2($spec) { return $spec[4]; }
- public static function rsEccCodes2($spec) { return $spec[2]; }
- public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); }
- public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; }
-
- }
-
-
-
-//---- qrimage.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Image output of code using GD2
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
';
- echo join("
", $frame);
- echo '
';
-
- } else {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join(' ', explode("\xc0", $frameLine));
- $frameLine = join('▒', explode("\xc1", $frameLine));
- $frameLine = join(' ', explode("\xa0", $frameLine));
- $frameLine = join('▒', explode("\xa1", $frameLine));
- $frameLine = join('◇', explode("\x84", $frameLine)); //format 0
- $frameLine = join('◆', explode("\x85", $frameLine)); //format 1
- $frameLine = join('☢', explode("\x81", $frameLine)); //special bit
- $frameLine = join(' ', explode("\x90", $frameLine)); //clock 0
- $frameLine = join('◷', explode("\x91", $frameLine)); //clock 1
- $frameLine = join(' ', explode("\x88", $frameLine)); //version
- $frameLine = join('▒', explode("\x89", $frameLine)); //version
- $frameLine = join('♦', explode("\x01", $frameLine));
- $frameLine = join('⋅', explode("\0", $frameLine));
- }
-
- ?>
-
- ";
- echo join("
", $frame);
- echo "";
-
- }
- }
-
- //----------------------------------------------------------------------
- public static function serial($frame)
- {
- return gzcompress(join("\n", $frame), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- return explode("\n", gzuncompress($code));
- }
-
- //----------------------------------------------------------------------
- public static function newFrame($version)
- {
- if($version < 1 || $version > QRSPEC_VERSION_MAX)
- return null;
-
- if(!isset(self::$frames[$version])) {
-
- $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- self::$frames[$version] = self::unserial(file_get_contents($fileName));
- } else {
- self::$frames[$version] = self::createFrame($version);
- file_put_contents($fileName, self::serial(self::$frames[$version]));
- }
- } else {
- self::$frames[$version] = self::createFrame($version);
- }
- }
-
- if(is_null(self::$frames[$version]))
- return null;
-
- return self::$frames[$version];
- }
-
- //----------------------------------------------------------------------
- public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; }
- public static function rsBlockNum1($spec) { return $spec[0]; }
- public static function rsDataCodes1($spec) { return $spec[1]; }
- public static function rsEccCodes1($spec) { return $spec[2]; }
- public static function rsBlockNum2($spec) { return $spec[3]; }
- public static function rsDataCodes2($spec) { return $spec[4]; }
- public static function rsEccCodes2($spec) { return $spec[2]; }
- public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); }
- public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; }
-
- }
\ No newline at end of file
diff --git a/pdf/phpqrcode/qrsplit.php b/pdf/phpqrcode/qrsplit.php
deleted file mode 100755
index d75b827..0000000
--- a/pdf/phpqrcode/qrsplit.php
+++ /dev/null
@@ -1,311 +0,0 @@
-
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
-
';
- }
-
- }
-
- //##########################################################################
-
- QRtools::markTime('start');
-
\ No newline at end of file
diff --git a/pdf/phpqrcode/tools/merge.bat b/pdf/phpqrcode/tools/merge.bat
deleted file mode 100755
index b60a485..0000000
--- a/pdf/phpqrcode/tools/merge.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-php ./merge.php
-pause
\ No newline at end of file
diff --git a/pdf/phpqrcode/tools/merge.php b/pdf/phpqrcode/tools/merge.php
deleted file mode 100755
index 19d338b..0000000
--- a/pdf/phpqrcode/tools/merge.php
+++ /dev/null
@@ -1,70 +0,0 @@
-
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- $QR_BASEDIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR;
- $QR_TOOLSDIR = dirname(__FILE__).DIRECTORY_SEPARATOR;
-
- $outputFile = $QR_BASEDIR.'phpqrcode.php';
-
- // Required libs
-
- $fileList = array(
- $QR_BASEDIR.'qrconst.php',
- $QR_TOOLSDIR.'merged_config.php',
- $QR_BASEDIR.'qrtools.php',
- $QR_BASEDIR.'qrspec.php',
- $QR_BASEDIR.'qrimage.php',
- $QR_BASEDIR.'qrinput.php',
- $QR_BASEDIR.'qrbitstream.php',
- $QR_BASEDIR.'qrsplit.php',
- $QR_BASEDIR.'qrrscode.php',
- $QR_BASEDIR.'qrmask.php',
- $QR_BASEDIR.'qrencode.php'
- );
-
- $headerFile = $QR_TOOLSDIR.'merged_header.php';
- $versionFile = $QR_BASEDIR.'VERSION';
-
- $outputCode = '';
-
- foreach($fileList as $fileName) {
- $outputCode .= "\n\n".'//---- '.basename($fileName).' -----------------------------'."\n\n";
- $anotherCode = file_get_contents($fileName);
- $anotherCode = preg_replace ('/^<\?php/', '', $anotherCode);
- $anotherCode = preg_replace ('/\?>\*$/', '', $anotherCode);
- $outputCode .= "\n\n".$anotherCode."\n\n";
- }
-
- $versionDataEx = explode("\n", file_get_contents($versionFile));
-
- $outputContents = file_get_contents($headerFile);
- $outputContents .= "\n\n/*\n * Version: ".trim($versionDataEx[0])."\n * Build: ".trim($versionDataEx[1])."\n */\n\n";
- $outputContents .= $outputCode;
-
- file_put_contents($outputFile, $outputContents);
-
-
\ No newline at end of file
diff --git a/pdf/phpqrcode/tools/merge.sh b/pdf/phpqrcode/tools/merge.sh
deleted file mode 100755
index e4c2fbc..0000000
--- a/pdf/phpqrcode/tools/merge.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-php ./merge.php
\ No newline at end of file
diff --git a/pdf/phpqrcode/tools/merged_config.php b/pdf/phpqrcode/tools/merged_config.php
deleted file mode 100755
index 55ddb45..0000000
--- a/pdf/phpqrcode/tools/merged_config.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
\ No newline at end of file
diff --git a/pdf/temp_certificate/sample_certificate.pdf b/pdf/temp_certificate/sample_certificate.pdf
deleted file mode 100755
index e69de29..0000000
diff --git a/pdf/temp_prcode/generated_qrcode.png b/pdf/temp_prcode/generated_qrcode.png
deleted file mode 100755
index 3d9b0d2..0000000
Binary files a/pdf/temp_prcode/generated_qrcode.png and /dev/null differ
diff --git a/pdf/temp_prcode/qrcode_name.png b/pdf/temp_prcode/qrcode_name.png
deleted file mode 100755
index 0e88581..0000000
Binary files a/pdf/temp_prcode/qrcode_name.png and /dev/null differ
diff --git a/pdf/verify_certificates.inc b/pdf/verify_certificates.inc
deleted file mode 100755
index 785ccda..0000000
--- a/pdf/verify_certificates.inc
+++ /dev/null
@@ -1,113 +0,0 @@
- 'markup',
- '#markup' => ''
- );
- $form["QR_code"] = array(
- "#type" => "textfield",
- "#title" => "Enter QR Code",
- "#default_value" => '',
- "#required" => TRUE
- );
- $form["submit"] = array(
- "#type" => "submit",
- "#value" => "Verify",
- '#ajax' => array(
- 'callback' => 'verify_certificates_form_submit',
- 'progress' => array(
- 'message' => ''
- )
- )
- );
- $form['displaytable'] = array(
- '#type' => 'markup',
- '#prefix' => '
- ';
-
- foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) {
- if ($p > 0) {
- echo 'BENCHMARK ';
- } else {
- $startTime = $thisTime;
- }
-
- $p++;
- $lastTime = $thisTime;
- }
-
- echo '
- till '.$markerId.': '.number_format($thisTime-$lastTime, 6).'s
-
- TOTAL: '.number_format($lastTime-$startTime, 6).'s Participation Details
";
- }
- else {
- $page_content = "";
- $page_content .= " ";
- $page_content .= "Name ";
- $page_content .= "" . $data3->contributor_name . " ";
- $page_content .= "Project ";
- $page_content .= "Case Study Project ";
- $page_content .= "Case Study completed ";
- $page_content .= "" . $data3->project_title . " ";
- $page_content .= "Project Guide ";
- $page_content .= "" . $data3->project_guide_name . " Participation Details
";
- }
-
- } //$proposal_id
- else
- {
- $page_content = "Sorry ! The serial number you entered seems to be invalid. Please try again ! ";
- }
- return $page_content;
-}
diff --git a/proposal.inc b/proposal.inc
index 7abd31a..8a0836d 100755
--- a/proposal.inc
+++ b/proposal.inc
@@ -21,7 +21,7 @@ case_study_solution : approval_status
1 - Approved
2 - Disapproved (delete it)
*/
-function cfd_case_study_proposal_form($form, &$form_state, $no_js_use = FALSE)
+function osdag_case_study_proposal_form($form, &$form_state, $no_js_use = FALSE)
{
global $user;
/************************ start approve book details ************************/
@@ -251,9 +251,9 @@ function cfd_case_study_proposal_form($form, &$form_state, $no_js_use = FALSE)
$list_case_study = _cs_list_of_case_studies();
if(!empty($list_case_study))
{
- $form['cfd_project_title_check'] = array(
+ $form['osdag_project_title_check'] = array(
'#type' => 'radios',
- '#title' => t('Is the proposed CFD Case study from the list of available CFD Case studies?'),
+ '#title' => t('Is the proposed osdag Case study from the list of available osdag Case studies?'),
'#options' => array(
'1' => 'Yes',
'0' => 'No',
@@ -261,15 +261,15 @@ function cfd_case_study_proposal_form($form, &$form_state, $no_js_use = FALSE)
'#required' => TRUE,
'#validated' => TRUE,
);
- $form['cfd_case_study_name_dropdown'] = array(
+ $form['osdag_case_study_name_dropdown'] = array(
'#type' => 'select',
- '#title' => t('Select the name of available cfd'),
+ '#title' => t('Select the name of available osdag'),
'#required' => TRUE,
'#options' => _cs_list_of_case_studies(),
'#validated' => TRUE,
'#states' => array(
'visible' => array(
- ':input[name="cfd_project_title_check"]' => array(
+ ':input[name="osdag_project_title_check"]' => array(
'value' => '1'
)
)
@@ -284,7 +284,7 @@ function cfd_case_study_proposal_form($form, &$form_state, $no_js_use = FALSE)
'#validated' => TRUE,
'#states' => array(
'visible' => array(
- ':input[name="cfd_project_title_check"]' => array(
+ ':input[name="osdag_project_title_check"]' => array(
'value' => '0'
)
)
@@ -424,12 +424,12 @@ function ajax_solver_used_callback($form, $form_state){
);
}
-function cfd_case_study_proposal_form_validate($form, &$form_state)
+function osdag_case_study_proposal_form_validate($form, &$form_state)
{
//var_dump($form_state['values']['solver_used']);die;
- if($form_state['values']['cfd_project_title_check'] == 1)
+ if($form_state['values']['osdag_project_title_check'] == 1)
{
- $project_title = $form_state['values']['cfd_case_study_name_dropdown'];
+ $project_title = $form_state['values']['osdag_case_study_name_dropdown'];
}
else{
@@ -575,6 +575,7 @@ if (isset($_FILES['files']))
if ($_FILES['files']['size'][$file_form_name] <= 0)
form_set_error($file_form_name, t('File size cannot be zero.'));
/* check if valid file name */
+
if (!textbook_companion_check_valid_filename($_FILES['files']['name'][$file_form_name]))
form_set_error($file_form_name, t('Invalid file name specified. Only alphabets and numbers are allowed as a valid filename.'));
} //$file_name
@@ -582,7 +583,7 @@ if (isset($_FILES['files']))
}
return $form_state;
}
-function cfd_case_study_proposal_form_submit($form, &$form_state)
+function osdag_case_study_proposal_form_submit($form, &$form_state)
{
global $user;
$root_path = case_study_path();
@@ -591,9 +592,9 @@ function cfd_case_study_proposal_form_submit($form, &$form_state)
drupal_set_message('It is mandatory to login on this website to access the proposal form', 'error');
return;
}
- if($form_state['values']['cfd_project_title_check'] == 1)
+ if($form_state['values']['osdag_project_title_check'] == 1)
{
- $project_title = $form_state['values']['cfd_case_study_name_dropdown'];
+ $project_title = $form_state['values']['osdag_case_study_name_dropdown'];
}
else{
@@ -785,7 +786,7 @@ function cfd_case_study_proposal_form_submit($form, &$form_state)
} //move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name])
else
{
- drupal_set_message('Error uploading file : ' . $dest_path . '/' . $file_name, 'error');
+ drupal_set_message('Error uploading file : ' . $dest_path . $file_name, 'error');
}
} //$file_name
} //$_FILES['files']['name'] as $file_form_name => $file_name
@@ -817,5 +818,7 @@ function cfd_case_study_proposal_form_submit($form, &$form_state)
}
function case_study_path() {
- return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'cfd_uploads/case_study_uploads/';
+ return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'osdag_uploads/case_study_uploads/';
+
}
+// var_dump($dest_path);die;
\ No newline at end of file
diff --git a/run.inc b/run.inc
index aaf9da7..1895005 100755
--- a/run.inc
+++ b/run.inc
@@ -1,5 +1,5 @@
'textfield',
@@ -71,11 +71,11 @@ function cfd_case_study_settings_form($form, $form_state)
);
return $form;
}
-function cfd_case_study_settings_form_validate($form, &$form_state)
+function osdag_case_study_settings_form_validate($form, &$form_state)
{
return;
}
-function cfd_case_study_settings_form_submit($form, &$form_state)
+function osdag_case_study_settings_form_submit($form, &$form_state)
{
variable_set('case_study_emails', $form_state['values']['emails']);
variable_set('case_study_cc_emails', $form_state['values']['cc_emails']);
diff --git a/upload_code.inc b/upload_code.inc
index 0cfa27f..8f175e1 100755
--- a/upload_code.inc
+++ b/upload_code.inc
@@ -1,10 +1,10 @@
';
return $return_html;
}
-function cfd_case_study_upload_abstract_code_form($form, &$form_state)
+function osdag_case_study_upload_abstract_code_form($form, &$form_state)
{
global $user;
$form['#attributes'] = array(
@@ -139,7 +139,7 @@ function cfd_case_study_upload_abstract_code_form($form, &$form_state)
'#type' => 'submit',
'#value' => t('Submit'),
'#submit' => array(
- 'cfd_case_study_upload_abstract_code_form_submit',
+ 'osdag_case_study_upload_abstract_code_form_submit',
),
);
$form['cancel'] = array(
@@ -150,7 +150,7 @@ function cfd_case_study_upload_abstract_code_form($form, &$form_state)
}
///////////////////////////////////////////////////////////////
-function cfd_case_study_upload_abstract_code_form_validate($form, &$form_state)
+function osdag_case_study_upload_abstract_code_form_validate($form, &$form_state)
{
//var_dump($form);die;
if (isset($_FILES['files'])) {
@@ -176,7 +176,7 @@ function cfd_case_study_upload_abstract_code_form_validate($form, &$form_state)
}
/* check if valid file name */
- if (!cfd_case_study_check_valid_filename($_FILES['files']['name'][$file_form_name])) {
+ if (!osdag_case_study_check_valid_filename($_FILES['files']['name'][$file_form_name])) {
form_set_error($file_form_name, t('Invalid file name specified. Only alphabets and numbers are allowed as a valid filename.'));
}
@@ -185,12 +185,12 @@ function cfd_case_study_upload_abstract_code_form_validate($form, &$form_state)
}
return $form_state;
}
-function cfd_case_study_upload_abstract_code_form_submit($form, &$form_state)
+function osdag_case_study_upload_abstract_code_form_submit($form, &$form_state)
{
global $user;
$v = $form_state['values'];
- $root_path = cfd_case_study_path();
- $proposal_data = cfd_case_study_get_proposal();
+ $root_path = osdag_case_study_path();
+ $proposal_data = osdag_case_study_get_proposal();
$proposal_id = $proposal_data->id;
if (!$proposal_data) {
drupal_goto('');
@@ -374,7 +374,7 @@ function default_value_for_uploaded_files($filetype, $proposal_id)
}
return;
}
-function cfd_case_study_edit_upload_abstract_code_form($form, &$form_state)
+function osdag_case_study_edit_upload_abstract_code_form($form, &$form_state)
{
global $user;
$form['#attributes'] = array(
@@ -446,7 +446,7 @@ function cfd_case_study_edit_upload_abstract_code_form($form, &$form_state)
'#type' => 'submit',
'#value' => t('Submit'),
'#submit' => array(
- 'cfd_case_study_edit_upload_abstract_code_form_submit',
+ 'osdag_case_study_edit_upload_abstract_code_form_submit',
),
);
$form['cancel'] = array(
@@ -456,7 +456,7 @@ function cfd_case_study_edit_upload_abstract_code_form($form, &$form_state)
return $form;
}
///////////////////////////////////////////////////////////////
-function cfd_case_study_edit_upload_abstract_code_form_validate($form, &$form_state)
+function osdag_case_study_edit_upload_abstract_code_form_validate($form, &$form_state)
{
if (!($_FILES['files']['name']['upload_case_study_abstract'] || $_FILES['files']['name']['upload_case_study_developed_process'])) {
@@ -498,7 +498,7 @@ function cfd_case_study_edit_upload_abstract_code_form_validate($form, &$form_st
}
/* check if valid file name */
- if (!cfd_case_study_check_valid_filename($_FILES['files']['name'][$file_form_name])) {
+ if (!osdag_case_study_check_valid_filename($_FILES['files']['name'][$file_form_name])) {
form_set_error($file_form_name, t('Invalid file name specified. Only alphabets and numbers are allowed as a valid filename.'));
}
@@ -510,11 +510,11 @@ function cfd_case_study_edit_upload_abstract_code_form_validate($form, &$form_st
}
}
-function cfd_case_study_edit_upload_abstract_code_form_submit($form, &$form_state)
+function osdag_case_study_edit_upload_abstract_code_form_submit($form, &$form_state)
{
global $user;
$v = $form_state['values'];
- $root_path = cfd_case_study_path();
+ $root_path = osdag_case_study_path();
$query = db_select('case_study_proposal');
$query->fields('case_study_proposal');
$query->condition('id', $v['prop_id']);
--
cgit
";
- $page_content .= "Name ";
- $page_content .= "" . $data3->contributor_name . " ";
- $page_content .= "Project ";
- $page_content .= "Case Study Project ";
- $page_content .= "Case Study completed ";
- $page_content .= "" . $data3->project_title . "