Update with command process
This commit is contained in:
parent
078e2e6060
commit
5be0866fe2
@ -49,7 +49,45 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
||||
Zend_Registry::set('firebug', $logger);
|
||||
}
|
||||
|
||||
protected function _initDb(){}
|
||||
protected function _initDb()
|
||||
{
|
||||
$c = new Zend_Config($this->getOptions());
|
||||
try {
|
||||
$db = Zend_Db::factory($c->profil->db->sdv1);
|
||||
$db->getConnection();
|
||||
} catch ( Exception $e ) {
|
||||
if (APPLICATION_ENV == 'development') {
|
||||
echo '<pre>'; print_r($e); echo '</pre>';
|
||||
} else {
|
||||
echo "Le service rencontre actuellement un problème technique.";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
protected function _initCache(){}
|
||||
/**
|
||||
* Set the default adapter to use with all model
|
||||
*/
|
||||
Zend_Db_Table::setDefaultAdapter($db);
|
||||
|
||||
/**
|
||||
* Set Firebug Database profiler
|
||||
*/
|
||||
if (APPLICATION_ENV == 'development') {
|
||||
$profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
|
||||
$profiler->setEnabled(true);
|
||||
$db->setProfiler($profiler);
|
||||
}
|
||||
}
|
||||
|
||||
protected function _initCache()
|
||||
{
|
||||
//MetadataCache pour la base de données
|
||||
$cache = Zend_Cache::factory(
|
||||
'Core',
|
||||
'Apc',
|
||||
array('lifetime' => 28800,'automatic_serialization' => true),
|
||||
array()
|
||||
);
|
||||
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
|
||||
}
|
||||
}
|
@ -13,6 +13,27 @@ resources.view.basePath = APPLICATION_PATH "/views"
|
||||
autoloaderNamespaces[] = "Application_"
|
||||
autoloaderNamespaces[] = "Scores_"
|
||||
|
||||
; Scores configuration
|
||||
profil.server.name = local
|
||||
profil.webservice.location = sdsrvdev01
|
||||
profil.mail.method = smtp
|
||||
profil.mail.smtp_host = smtp.free.fr
|
||||
profil.mail.email.support = supportdev@scores-decisions.com
|
||||
profil.mail.email.supportdev = supportdev@scores-decisions.com
|
||||
profil.mail.email.contact = supportdev@scores-decisions.com
|
||||
profil.mail.email.production = supportdev@scores-decisions.com
|
||||
profil.path.cache = APPLICATION_PATH "/../data/cache"
|
||||
profil.path.files = APPLICATION_PATH "/../data/files"
|
||||
profil.path.pages = APPLICATION_PATH "/../data/pages"
|
||||
profil.path.data = "c:\Users\mricois\www\data\partner"
|
||||
profil.wkhtmltopdf.path = "c:\Users\mricois\www\data\wkhtml\windows\wkhtmltopdf.exe"
|
||||
profil.db.sdv1.adapter=mysqli
|
||||
profil.db.sdv1.params.host=127.0.0.1
|
||||
profil.db.sdv1.params.username=root
|
||||
profil.db.sdv1.params.password=bj10sx
|
||||
profil.db.sdv1.params.dbname=partner
|
||||
profil.db.sdv1.params.driver_options.MYSQLI_INIT_COMMAND = "SET NAMES utf8"
|
||||
|
||||
[staging : production]
|
||||
resources.frontController.params.displayExceptions = 1
|
||||
|
||||
|
@ -1,34 +1,219 @@
|
||||
<?php
|
||||
class ReportController extends Zend_Controller_Action
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
//Override
|
||||
$this->view->inlineScript()
|
||||
->appendFile('/libs/jquery-2.0.3.min.js', 'text/javascript')
|
||||
->appendFile('/libs/bootstrap-v3.0.0/js/bootstrap.min.js', 'text/javascript');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
$this->_helper->layout()->disableLayout();
|
||||
|
||||
$request = $this->getRequest();
|
||||
|
||||
//Get parameters
|
||||
$siren = $request->getParam('siren');
|
||||
|
||||
//Define title
|
||||
|
||||
//Control the prestation with the database - inject additionnaly parameters
|
||||
|
||||
//Launch report
|
||||
|
||||
$report = new Scores_Partner_Report('indiscore3', '552144503', 'mricois', 'ju2loh6o');
|
||||
$html = $report->getContent();
|
||||
file_put_contents('test.html', $html);
|
||||
|
||||
//Write links to get the HTML and/or PDF
|
||||
//Get parameters
|
||||
$siren = $request->getParam('siren');
|
||||
$this->view->SirenExiste = false;
|
||||
if (intval($siren)>100) {
|
||||
//Vérifier que le SIREN existe en base
|
||||
require_once 'Scores/WsScores.php';
|
||||
$ws = new WsScores('mricois', 'ju2loh6o');
|
||||
$response = $ws->getIdentiteLight($siren);
|
||||
if ($response !== false) {
|
||||
$this->view->Siren = $response->Siren;
|
||||
$this->view->RaisonSociale = $response->Nom;
|
||||
$this->view->SirenExiste = true;
|
||||
$this->view->ButtonUrl = $this->view->url(array(
|
||||
'controller'=>'report',
|
||||
'action'=>'cmd',
|
||||
'siren'=>$response->Siren
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function cmdAction()
|
||||
{
|
||||
$this->_helper->layout()->disableLayout();
|
||||
|
||||
$request = $this->getRequest();
|
||||
|
||||
$siren = $request->getParam('siren');
|
||||
|
||||
//Affichage du formulaires
|
||||
$form = new Application_Form_Command();
|
||||
if ( $request->isPost() ) {
|
||||
|
||||
$values = $request->getPost();
|
||||
$form->populate($values);
|
||||
|
||||
if ( $form->isValid($values) ) {
|
||||
|
||||
//Sauvegarde des informations
|
||||
$commandM = new Application_Model_Command();
|
||||
try {
|
||||
$commandM->insert($form->getValues());
|
||||
//Passage à la page suivante
|
||||
$url = $this->view->url(array(
|
||||
'controller'=>'report',
|
||||
'action'=>'deliver',
|
||||
'id' => $form->getValue('cmdId'),
|
||||
));
|
||||
$this->redirect($url);
|
||||
} catch (Zend_Db_Adapter_Exception $e) {
|
||||
$this->view->msg = "Impossible de passer la commande.";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
if (intval($siren)>100) {
|
||||
//Get report
|
||||
$report = new Scores_Partner_Report('indiscore3', $siren, 'mricois', 'ju2loh6o');
|
||||
$html = $report->getContent();
|
||||
|
||||
if ( $html !== false ) {
|
||||
|
||||
$c = Zend_Registry::get('config');
|
||||
$pathCmd = $c->profil->path->data;
|
||||
|
||||
$id = uniqid();
|
||||
//Write the file (name with commande id)
|
||||
if ( file_put_contents($pathCmd . DIRECTORY_SEPARATOR . $id.'.html', $html) ) {
|
||||
|
||||
$this->view->CmdID = $id;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$this->view->form = $form;
|
||||
$this->view->siren = $siren;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function deliverAction()
|
||||
{
|
||||
$this->_helper->layout()->disableLayout();
|
||||
|
||||
$request = $this->getRequest();
|
||||
|
||||
$c = Zend_Registry::get('config');
|
||||
$pathCmd = $c->profil->path->data;
|
||||
|
||||
//Commande ID
|
||||
$cmdId = $request->getParam('id');
|
||||
|
||||
//Est ce que la commande existe
|
||||
$commandM = new Application_Model_Command();
|
||||
$where = $commandM->select()->where('cmdId=?', $cmdId);
|
||||
$row = $commandM->fetchRow($where);
|
||||
if ( $row!==null ) {
|
||||
|
||||
$infos = new stdClass();
|
||||
$infos->NumCommande = $row->cmdId;
|
||||
$infos->DateCommande = $row->dateInsert;
|
||||
$infos->RaisonSociale = $row->rs;
|
||||
$infos->NomPrenom = $row->nom . ' ' . $row->prenom;
|
||||
$infos->Adresse = $row->adresse;
|
||||
$infos->CpVille = $row->cp . ' ' . $row->ville;
|
||||
$infos->Tel = $row->tel;
|
||||
$infos->Mob = $row->mobile;
|
||||
|
||||
$this->view->Infos = $infos;
|
||||
|
||||
if ( file_exists($pathCmd . DIRECTORY_SEPARATOR . $row->cmdId . '.html') ) {
|
||||
//Define links to get the HTML and/or PDF
|
||||
$links = array(
|
||||
0 => array(
|
||||
'title' => 'Fichier PDF',
|
||||
'desc' => 'Télécharger le bilan financier',
|
||||
'url' => $this->view->url(array(
|
||||
'controller'=>'report',
|
||||
'action'=>'pdf',
|
||||
'id' => $row->cmdId
|
||||
))
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Display in blank page the html
|
||||
*/
|
||||
public function htmlAction()
|
||||
{
|
||||
$this->_helper->layout()->disableLayout();
|
||||
}
|
||||
|
||||
/**
|
||||
* Distribute pdf file
|
||||
*/
|
||||
public function pdfAction()
|
||||
{
|
||||
//Unlink the file
|
||||
$this->_helper->layout()->disableLayout();
|
||||
|
||||
//if HTML exist, make a pdf
|
||||
$request = $this->getRequest();
|
||||
|
||||
$file = false;
|
||||
|
||||
//Commande ID
|
||||
$cmdId = $request->getParam('id');
|
||||
|
||||
//Est ce que la commande existe
|
||||
$commandM = new Application_Model_Command();
|
||||
$where = $commandM->select()->where('cmdId=?', $cmdId);
|
||||
$row = $commandM->fetchRow($where);
|
||||
if ( $row !== null ) {
|
||||
|
||||
//Copy html from command directory to temporary storage
|
||||
$c = Zend_Registry::get('config');
|
||||
$source = $c->profil->path->data . DIRECTORY_SEPARATOR . $row->cmdId . '.html';
|
||||
$dest = $c->profil->path->pages . DIRECTORY_SEPARATOR . $row->cmdId . '.html';
|
||||
if ( copy($source, $dest) ) {
|
||||
$wkthml = new Scores_Wkhtml_Pdf();
|
||||
$file = $wkhtml->exec($dest);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Distribute it to the output
|
||||
|
||||
if ( $file ) {
|
||||
if( file_exists($file) && filesize($file)>0 ) {
|
||||
header('Content-Transfer-Encoding: none');
|
||||
header('Content-type: ' . $content_type.'');
|
||||
header('Content-Length: ' . filesize($file));
|
||||
header('Content-MD5: ' . base64_encode(md5_file($file)));
|
||||
header('Content-Disposition: filename="' . basename($file) . '"');
|
||||
header('Cache-Control: private, max-age=0, must-revalidate');
|
||||
header('Pragma: public');
|
||||
ini_set('zlib.output_compression', '0');
|
||||
echo file_get_contents($file);
|
||||
} else {
|
||||
echo "Erreur lors de l'affichage du fichier.";
|
||||
}
|
||||
} else {
|
||||
echo "Erreur lors de la génération du fichier.";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
5
application/models/Command.php
Normal file
5
application/models/Command.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
class Application_Model_Command extends Zend_Db_Table_Abstract
|
||||
{
|
||||
protected $_name = 'command';
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
<!-- Site footer -->
|
||||
<!-- Site footer -->
|
||||
<div class="footer">
|
||||
<p>© Scores & Décisions <?=date('Y')?></p>
|
||||
</div>
|
||||
|
155
application/views/scripts/report/cmd.phtml
Normal file
155
application/views/scripts/report/cmd.phtml
Normal file
@ -0,0 +1,155 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="viewport" content="width=device-width, initial-scale=1.0" >
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
|
||||
<meta http-equiv="Content-Language" content="fr-FR" >
|
||||
<title>Kompass - Achat Bilan Financier</title>
|
||||
<link href="/libs/bootstrap-v3.0.0/css/bootstrap.min.css" media="all" rel="stylesheet" type="text/css" >
|
||||
<link href="/themes/default/css/justified-nav.css" media="all" rel="stylesheet" type="text/css" >
|
||||
<!--[if lt IE 9]> <script type="text/javascript" src="/libs/html5shiv.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]> <script type="text/javascript" src="/libs/respond.min.js"></script><![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<div class="page-header">
|
||||
<h2>Achat Bilan Financier <small>Commande</small></h2>
|
||||
</div>
|
||||
|
||||
<?php if ( $this->siren && $this->CmdID ) {?>
|
||||
|
||||
<div><?=$this->msg?></div>
|
||||
|
||||
<form role="form" name="commande" action="<?=$this->form->getAction()?>" method="<?=$this->form->getMethod()?>">
|
||||
<input type="hidden" name="cmdId" value="<?=$this->CmdID?>" />
|
||||
<input type="hidden" name="siren" value="<?=$this->siren?>" />
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->email->getLabel()?></label>
|
||||
<input type="email" name="<?=$this->form->email->getName()?>" class="form-control" value="<?=$this->form->email->getValue()?>" placeholder="<?=$this->form->email->getDescription()?>">
|
||||
<?php if ($this->form->email->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->email->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->rs->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->rs->getName()?>" class="form-control" value="<?=$this->form->rs->getValue()?>" placeholder="<?=$this->form->rs->getDescription()?>">
|
||||
<?php if ($this->form->rs->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->rs->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->nom->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->nom->getName()?>" class="form-control" value="<?=$this->form->nom->getValue()?>" placeholder="<?=$this->form->nom->getDescription()?>">
|
||||
<?php if ($this->form->nom->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->nom->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->prenom->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->prenom->getName()?>" class="form-control" value="<?=$this->form->prenom->getValue()?>" placeholder="<?=$this->form->prenom->getDescription()?>">
|
||||
<?php if ($this->form->prenom->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->prenom->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->adresse->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->adresse->getName()?>" class="form-control" value="<?=$this->form->adresse->getValue()?>" placeholder="<?=$this->form->adresse->getDescription()?>">
|
||||
<?php if ($this->form->adresse->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->adresse->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->cp->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->cp->getName()?>" class="form-control" value="<?=$this->form->cp->getValue()?>" placeholder="<?=$this->form->cp->getDescription()?>">
|
||||
<?php if ($this->form->cp->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->cp->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->ville->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->ville->getName()?>" class="form-control" value="<?=$this->form->ville->getValue()?>" placeholder="<?=$this->form->ville->getDescription()?>">
|
||||
<?php if ($this->form->ville->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->ville->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->tel->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->tel->getName()?>" class="form-control" value="<?=$this->form->tel->getValue()?>" placeholder="<?=$this->form->tel->getDescription()?>">
|
||||
<?php if ($this->form->tel->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->tel->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?=$this->form->mobile->getLabel()?></label>
|
||||
<input type="text" name="<?=$this->form->mobile->getName()?>" class="form-control" value="<?=$this->form->mobile->getValue()?>" placeholder="<?=$this->form->mobile->getDescription()?>">
|
||||
<?php if ($this->form->mobile->hasErrors()) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php foreach($this->form->mobile->getMessages() as $msg) {?>
|
||||
<?=$msg?><br/>
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
</div>
|
||||
|
||||
<input type="submit" value="<?=$this->form->submit->getLabel()?>" class="btn btn-default" />
|
||||
</form>
|
||||
|
||||
<?php } else {?>
|
||||
|
||||
<div class="alert alert-danger"><strong>Erreur !</strong> </div>
|
||||
|
||||
<?php }?>
|
||||
|
||||
<!-- Site footer -->
|
||||
<div class="footer">
|
||||
<p>© Scores & Décisions <?=date('Y')?></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php echo $this->inlineScript(); ?>
|
||||
</body>
|
||||
</html>
|
||||
|
87
application/views/scripts/report/deliver.phtml
Normal file
87
application/views/scripts/report/deliver.phtml
Normal file
@ -0,0 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="viewport" content="width=device-width, initial-scale=1.0" >
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
|
||||
<meta http-equiv="Content-Language" content="fr-FR" >
|
||||
<title>Kompass - Achat Bilan Financier</title>
|
||||
<link href="/libs/bootstrap-v3.0.0/css/bootstrap.min.css" media="all" rel="stylesheet" type="text/css" >
|
||||
<link href="/themes/default/css/justified-nav.css" media="all" rel="stylesheet" type="text/css" >
|
||||
<!--[if lt IE 9]> <script type="text/javascript" src="/libs/html5shiv.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]> <script type="text/javascript" src="/libs/respond.min.js"></script><![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<div class="page-header">
|
||||
<h2>Achat Bilan Financier <small>Livraison</small></h2>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Détails de votre commande</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<address>
|
||||
<strong>Suivi commande</strong><br>
|
||||
N° de commande<br/>
|
||||
</address>
|
||||
|
||||
<address>
|
||||
<strong><?=$this->Infos->RaisonSociale?></strong><br>
|
||||
<?=$this->Infos->NomPrenom?><br>
|
||||
<?=$this->Infos->Adresse?><br>
|
||||
<?php if (!empty($this->Infos->Tel)) {?>
|
||||
<abbr title="Téléphone">Tel :</abbr> <?=$this->Infos->Tel?><br>
|
||||
<?php }?>
|
||||
<?php if (!empty($this->Infos->Mob)) {?>
|
||||
<abbr title="Mobile">Tel :</abbr> <?=$this->Infos->Mob?>
|
||||
<?php }?>
|
||||
</address>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Liste des fichiers</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<?php if ( count($this->links) ) {?>
|
||||
|
||||
<?php foreach ( $this->links as $link ) {?>
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item">
|
||||
<h4 class="list-group-item-heading"><?=$link['title']?></h4>
|
||||
<p class="list-group-item-text"><?=$link['desc']?></p>
|
||||
</a>
|
||||
</div>
|
||||
<?php }?>
|
||||
|
||||
<?php }?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Site footer -->
|
||||
<div class="footer">
|
||||
<p>© Scores & Décisions <?=date('Y')?></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php echo $this->inlineScript(); ?>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1 +1,43 @@
|
||||
<?php
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="viewport" content="width=device-width, initial-scale=1.0" >
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
|
||||
<meta http-equiv="Content-Language" content="fr-FR" >
|
||||
<title>Kompass - Achat Bilan Financier</title>
|
||||
<link href="/libs/bootstrap-v3.0.0/css/bootstrap.min.css" media="all" rel="stylesheet" type="text/css" >
|
||||
<link href="/themes/default/css/justified-nav.css" media="all" rel="stylesheet" type="text/css" >
|
||||
<!--[if lt IE 9]> <script type="text/javascript" src="/libs/html5shiv.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]> <script type="text/javascript" src="/libs/respond.min.js"></script><![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<div class="page-header">
|
||||
<h2>Achat Bilan Financier <small>Commande d'un bilan financier</small></h2>
|
||||
</div>
|
||||
|
||||
<?php if ( $this->SirenExiste === false ) {?>
|
||||
|
||||
<div class="alert alert-danger"><strong>Erreur !</strong> Impossible de trouver la société.</div>
|
||||
|
||||
<?php } else {?>
|
||||
|
||||
<div>Siren : <?=$this->Siren?></div>
|
||||
<div>Raison Sociale : <?=$this->RaisonSociale?></div>
|
||||
|
||||
<div><a type="button" class="btn btn-primary" href="<?=$this->ButtonUrl?>">Commander</a></div>
|
||||
|
||||
<?php }?>
|
||||
|
||||
<!-- Site footer -->
|
||||
<div class="footer">
|
||||
<p>© Scores & Décisions <?=date('Y')?></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php echo $this->inlineScript(); ?>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
87
library/Application/Form/Command.php
Normal file
87
library/Application/Form/Command.php
Normal file
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
class Application_Form_Command extends Zend_Form
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
$this->setName('commande');
|
||||
$this->setAction('/report/cmd');
|
||||
$this->setMethod('post');
|
||||
$this->addElement('hidden', 'cmdId', array(
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('hidden', 'siren', array(
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'email', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array('EmailAddress'),
|
||||
'label' => 'Email',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'rs', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => 'Raison Sociale',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'nom', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => 'Nom',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'prenom', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => 'Prénom',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'adresse', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => 'Adresse',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'cp', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => 'Code Postal',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'ville', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => 'Ville',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'tel', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => 'Téléphone',
|
||||
'Description' => '',
|
||||
'required' => true,
|
||||
)
|
||||
);
|
||||
$this->addElement('text', 'mobile', array(
|
||||
'filters' => array('StringTrim'),
|
||||
'label' => ' Téléphone Mobile',
|
||||
'Description' => '',
|
||||
'required' => false,
|
||||
)
|
||||
);
|
||||
$this->addElement('submit', 'submit',array(
|
||||
'label' => 'Commander',
|
||||
'ignore' => true,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
236
library/Scores/Finance/Liasse.php
Normal file
236
library/Scores/Finance/Liasse.php
Normal file
@ -0,0 +1,236 @@
|
||||
<?php
|
||||
class Scores_Finance_Liasse
|
||||
{
|
||||
|
||||
protected $postes = array();
|
||||
protected $info = array();
|
||||
protected $div;
|
||||
protected $unit = array (
|
||||
'E' => 1,
|
||||
'K' => 1000,
|
||||
'M' => 1000000,
|
||||
);
|
||||
|
||||
public function __construct($liasse, $unit = 'K')
|
||||
{
|
||||
$this->div = $this->unit[$unit];
|
||||
$this->setData($liasse);
|
||||
}
|
||||
|
||||
protected function setData($data)
|
||||
{
|
||||
$this->info = array(
|
||||
'dateFraicheBilan' => $data->DATE_FRAICHE_BILAN,
|
||||
'dateCloture' => $data->DATE_CLOTURE,
|
||||
'dateCloturePre' => $data->DATE_CLOTURE_PRE,
|
||||
'dureeMois' => $data->DUREE_MOIS,
|
||||
'dureeMoisPre' => $data->DUREE_MOIS_PRE,
|
||||
'monnaie' => $data->MONNAIE,
|
||||
'monnaieOri' => $data->MONNAIE_ORI,
|
||||
'monnaieLivUnite' => $data->MONNAIE_LIV_UNITE,
|
||||
'consolide' => $data->CONSOLIDE,
|
||||
'source' => $data->SOURCE,
|
||||
);
|
||||
|
||||
//Affectaction des postes
|
||||
foreach ($data->POSTES->item as $element){
|
||||
if (in_array($element->id, array(
|
||||
'YP', 'YP1', '376', // Effectifs 2033 et 2050
|
||||
'M2G', 'M2H', // Autres effectifs
|
||||
'ZK', 'ZK1', // Taux
|
||||
'IJ', 'JG', 'JH', 'JJ', 'ZR', // pour holding/ste mere
|
||||
'XP' //numero de centre de gestion agréé
|
||||
)))
|
||||
{
|
||||
$this->postes[$element->id] = number_format($element->val, 0, '', ' ');
|
||||
} else {
|
||||
$this->postes[$element->id] = $this->dMontant($element->val);
|
||||
}
|
||||
}
|
||||
|
||||
//Transformation Simplifié en Normal
|
||||
if ( $data->CONSOLIDE == 'S'){
|
||||
$this->postes = $this->bilanSimplifie2Normal($this->postes);
|
||||
}
|
||||
}
|
||||
|
||||
public function getInfo($key)
|
||||
{
|
||||
return $this->info[$key];
|
||||
}
|
||||
|
||||
public function getPostes()
|
||||
{
|
||||
return $this->postes;
|
||||
}
|
||||
|
||||
protected function dMontant($montant)
|
||||
{
|
||||
return number_format($montant/$this->div, 0, '', ' ');
|
||||
}
|
||||
|
||||
function bilanSimplifie2Normal($bilanRS)
|
||||
{
|
||||
$tabBS2BN = array(
|
||||
'AH'=>'010',
|
||||
'AI'=>'012',
|
||||
'AI1'=>'013',
|
||||
'AJ'=>'014',
|
||||
'AK'=>'016',
|
||||
'AK1'=>'017',
|
||||
'AT'=>'028',
|
||||
'AU'=>'030',
|
||||
'AU1'=>'031',
|
||||
'BH'=>'040',
|
||||
'BI'=>'042',
|
||||
'BI1'=>'043',
|
||||
'BJ'=>'044',
|
||||
'BK'=>'048',
|
||||
'BK1'=>'049',
|
||||
'BL'=>'050',
|
||||
'BM'=>'052',
|
||||
'BM1'=>'053',
|
||||
'BT'=>'060',
|
||||
'BU'=>'062',
|
||||
'BU1'=>'063',
|
||||
'BV'=>'064',
|
||||
'BW'=>'066',
|
||||
'BW1'=>'067',
|
||||
'BX'=>'068',
|
||||
'BY'=>'070',
|
||||
'BY1'=>'071',
|
||||
'BZ'=>'072',
|
||||
'CA'=>'074',
|
||||
'CA1'=>'075',
|
||||
'CD'=>'080',
|
||||
'CE'=>'082',
|
||||
'CE1'=>'083',
|
||||
'CF'=>'084',
|
||||
'CG'=>'086',
|
||||
'CG1'=>'087',
|
||||
'CH'=>'092',
|
||||
'CI'=>'094',
|
||||
'CI1'=>'095',
|
||||
'CJ'=>'096',
|
||||
'CK'=>'098',
|
||||
'CK1'=>'099',
|
||||
'CO'=>'110',
|
||||
'1A'=>'112',
|
||||
'1A1'=>'113',
|
||||
'DA'=>'120',
|
||||
'DC'=>'124',
|
||||
'DD'=>'126',
|
||||
'DF'=>'130',
|
||||
'DG'=>'132',
|
||||
'DH'=>'134',
|
||||
'DI'=>'136',
|
||||
'DK'=>'140',
|
||||
'DL'=>'142',
|
||||
'DR'=>'154',
|
||||
'DP'=>'154',
|
||||
'DU'=>'156',
|
||||
'DV'=>'169',
|
||||
'DW'=>'164',
|
||||
'DX'=>'166',
|
||||
'EA'=>'172-169',
|
||||
'EB'=>'174',
|
||||
'EC'=>'176',
|
||||
'EE'=>'180',
|
||||
'EH'=>'156-195',
|
||||
'FA'=>'210-209',
|
||||
'FB'=>'209',
|
||||
'FC'=>'210',
|
||||
'FD'=>'214-215',
|
||||
'FE'=>'215',
|
||||
'FF'=>'214',
|
||||
'FH'=>'217',
|
||||
'FI'=>'218',
|
||||
'FK'=>'209+215+217',
|
||||
'FL'=>'210+214+218',
|
||||
'FM'=>'222',
|
||||
'FN'=>'224',
|
||||
'FO'=>'226',
|
||||
'FQ'=>'230',
|
||||
'FR'=>'232',
|
||||
'FS'=>'234',
|
||||
'FT'=>'236',
|
||||
'FU'=>'238',
|
||||
'FV'=>'240',
|
||||
'FW'=>'242',
|
||||
'FX'=>'244',
|
||||
'FY'=>'250',
|
||||
'FZ'=>'252',
|
||||
'GA'=>'254',
|
||||
'GE'=>'262',
|
||||
'GF'=>'264',
|
||||
'GG'=>'270',
|
||||
'GP'=>'280',
|
||||
'GU'=>'294',
|
||||
'GW'=>'270+280+294',
|
||||
'HD'=>'290',
|
||||
'HH'=>'300',
|
||||
'HI'=>'290-300',
|
||||
'HK'=>'306',
|
||||
'HL'=>'232+280+290',
|
||||
'HM'=>'264+294+300+306',
|
||||
'HN'=>'310',
|
||||
'YY'=>'374',
|
||||
'YZ'=>'378',
|
||||
'YP'=>'376',
|
||||
|
||||
//@todo : Traiter N-1
|
||||
|
||||
|
||||
);
|
||||
|
||||
$bilanRN=array();
|
||||
foreach ($tabBS2BN as $posteRN => $formule) {
|
||||
if (preg_match('/\+|\-/', $formule)) {
|
||||
$tabTmp=preg_split('/\+|\-/', $formule, -1, PREG_SPLIT_OFFSET_CAPTURE);
|
||||
//$bilanRN[$posteRN]=0;
|
||||
$scalc='';
|
||||
foreach ($tabTmp as $i=>$tab) {
|
||||
if ($i==0) {
|
||||
$bilanRN[$posteRN]=$bilanRS[$tab[0]];
|
||||
$scalc.=$bilanRS[$tab[0]];
|
||||
}
|
||||
else {
|
||||
$signe=$formule[$tab[1]-1];
|
||||
$scalc.=$signe;
|
||||
if ($signe=='+') $bilanRN[$posteRN]+=$bilanRS[$tab[0]];
|
||||
elseif ($signe=='-') $bilanRN[$posteRN]-=$bilanRS[$tab[0]];
|
||||
$scalc.=$bilanRS[$tab[0]];
|
||||
}
|
||||
}
|
||||
$bilanRN[$posteRN]=$bilanRN[$posteRN];
|
||||
}
|
||||
else $bilanRN[$posteRN]=$bilanRS[$formule];
|
||||
}
|
||||
if ($bilanRS['240']<>0) {
|
||||
$bilanRN['BL']=$bilanRS['050'];
|
||||
$bilanRN['BM']=$bilanRS['052'];
|
||||
} else {
|
||||
$bilanRN['BN']=$bilanRS['050'];
|
||||
$bilanRN['BO']=$bilanRS['052'];
|
||||
}
|
||||
|
||||
if ($bilanRS['070']<>0 || $bilanRS['074']<>0 || $bilanRS['052']<>0 || $bilanRS['062']<>0)
|
||||
$bilanRN['GC']=$bilanRS['256'];
|
||||
elseif ($bilanRS['070']==0 && $bilanRS['074']==0 && $bilanRS['052']==0 && $bilanRS['062']==0 && $bilanRS['254']<>0)
|
||||
$bilanRN['GD']=$bilanRS['256'];
|
||||
|
||||
if ($bilanRS['584']<>0) {
|
||||
$bilanRN['HB']=$bilanRS['584'];
|
||||
$bilanRN['HA']=$bilanRS['290']-$bilanRS['584'];
|
||||
} else
|
||||
$bilanRN['HA']=$bilanRS['290'];
|
||||
|
||||
if ($bilanRS['582']<>0) {
|
||||
$bilanRN['HF']=$bilanRS['582'];
|
||||
$bilanRN['HE']=$bilanRS['582']-$bilanRS['300'];
|
||||
} else
|
||||
$bilanRN['HE']=$bilanRS['300'];
|
||||
|
||||
return $bilanRN;
|
||||
}
|
||||
}
|
126
library/Scores/Finance/Liasse/XLS.php
Normal file
126
library/Scores/Finance/Liasse/XLS.php
Normal file
@ -0,0 +1,126 @@
|
||||
<?php
|
||||
class Scores_Finance_Liasse_XLS
|
||||
{
|
||||
protected $path;
|
||||
protected $mode;
|
||||
protected $modele;
|
||||
protected $writerMode = array(
|
||||
'Excel5' => '.xls',
|
||||
'Excel2007' => '.xlsx',
|
||||
);
|
||||
protected $assoc = array();
|
||||
protected $values = array();
|
||||
|
||||
/**
|
||||
*
|
||||
* Enter description here ...
|
||||
* @param string $modele
|
||||
* Nom du modèle
|
||||
* @param string $mode
|
||||
* Type de fichier excel pour l'ecriture (Excel5 | Excel2007)
|
||||
*/
|
||||
public function __construct($modele = '', $mode = 'Excel5')
|
||||
{
|
||||
$c = Zend_Registry::get('config');
|
||||
$this->path = $c->profil->path->files . '/';
|
||||
if (!is_dir($this->path)){
|
||||
mkdir($this->path);
|
||||
}
|
||||
$this->modele = $modele;
|
||||
if (empty($this->modele)){
|
||||
$this->modele = 'bdf_liasse_template';
|
||||
}
|
||||
$this->mode = $mode;
|
||||
}
|
||||
|
||||
public function dataModel($siren, $raisonSociale, $values)
|
||||
{
|
||||
switch($this->modele)
|
||||
{
|
||||
case 'bdf_liasse_template':
|
||||
//Ajout champs spéciaux
|
||||
$values['TEXTE_SIRET'] = 'Siret : '.$siren;
|
||||
$values['TEXTE_RS'] = 'Société : '.$raisonSociale;
|
||||
$values['TEXTE_DATEN'] = 'Date de clôture : le ' .
|
||||
substr($values['DATE_CLOTURE'],6,2) . '/' .
|
||||
substr($values['DATE_CLOTURE'],4,2) . '/' .
|
||||
substr($values['DATE_CLOTURE'],0,4) .
|
||||
' sur ' . $values['DUREE_MOIS'] . ' mois';
|
||||
break;
|
||||
//Bilan Normal Cerfa
|
||||
case 'liasse_2050':
|
||||
$values['TEXTE_SIRET'] = $siren;
|
||||
$values['TEXTE_RS'] = $raisonSociale;
|
||||
$values['TEXTE_DATEN'] =
|
||||
substr($values['DATE_CLOTURE'],6,2) . '/' .
|
||||
substr($values['DATE_CLOTURE'],4,2) . '/' .
|
||||
substr($values['DATE_CLOTURE'],0,4);
|
||||
$values['TEXTE_DATEN1'] =
|
||||
substr($values['DATE_CLOTURE_PRE'],6,2) . '/' .
|
||||
substr($values['DATE_CLOTURE_PRE'],4,2) . '/' .
|
||||
substr($values['DATE_CLOTURE_PRE'],0,4);
|
||||
$values['TEXTE_DUREEN'] = $values['DUREE_MOIS'];
|
||||
$values['TEXTE_DUREEN1'] = $values['DUREE_MOIS_PRE'];
|
||||
break;
|
||||
//Bilan Simplifié Cerfa
|
||||
case 'liasse_2033':
|
||||
$values['TEXTE_SIRET'] = $siren;
|
||||
$values['TEXTE_RS'] = $raisonSociale;
|
||||
$values['TEXTE_DATEN'] =
|
||||
substr($values['DATE_CLOTURE'],6,2) . '/' .
|
||||
substr($values['DATE_CLOTURE'],4,2) . '/' .
|
||||
substr($values['DATE_CLOTURE'],0,4);
|
||||
$values['TEXTE_DATEN1'] =
|
||||
substr($values['DATE_CLOTURE_PRE'],6,2) . '/' .
|
||||
substr($values['DATE_CLOTURE_PRE'],4,2) . '/' .
|
||||
substr($values['DATE_CLOTURE_PRE'],0,4);
|
||||
$values['TEXTE_DUREEN'] = $values['DUREE_MOIS'];
|
||||
$values['TEXTE_DUREEN1'] = $values['DUREE_MOIS_PRE'];
|
||||
break;
|
||||
}
|
||||
|
||||
//Association
|
||||
$dataAssoc = parse_ini_file(realpath(dirname(__FILE__)).'/models/'.$this->modele.'.ini', true);
|
||||
$assoc = array();
|
||||
foreach($dataAssoc as $sheet => $dataCell)
|
||||
{
|
||||
foreach($dataCell as $key => $cell)
|
||||
{
|
||||
$assoc[$key] = array($sheet, $cell);
|
||||
}
|
||||
}
|
||||
$this->assoc = $assoc;
|
||||
$this->values = $values;
|
||||
}
|
||||
|
||||
public function dataFile($file)
|
||||
{
|
||||
require_once 'Vendors/phpexcel/PHPExcel.php';
|
||||
$objPHPexcel = PHPExcel_IOFactory::load(realpath(dirname(__FILE__)).'/models/'.$this->modele.'.xls');
|
||||
foreach( $this->assoc as $key => $position )
|
||||
{
|
||||
$sheet = $position[0];
|
||||
$cell = $position[1];
|
||||
if (array_key_exists($key, $this->values))
|
||||
{
|
||||
$objWorksheet = $objPHPexcel->getSheet($sheet);
|
||||
$objWorksheet->getCell($cell)->setValue($this->values[$key]);
|
||||
}
|
||||
/*
|
||||
else
|
||||
{
|
||||
$objWorksheet = $objPHPexcel->getSheet($sheet);
|
||||
$objWorksheet->getCell($cell)->setValue('_');
|
||||
//echo "La clé $key n'a pas de valeur!<br/>";
|
||||
}
|
||||
*/
|
||||
}
|
||||
$objPHPexcel->setActiveSheetIndex(0);
|
||||
$objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, $this->mode);
|
||||
$objWriter->save($this->path.'/'.$file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
?>
|
400
library/Scores/Finance/Liasse/models/bdf_liasse_template.ini
Normal file
400
library/Scores/Finance/Liasse/models/bdf_liasse_template.ini
Normal file
@ -0,0 +1,400 @@
|
||||
[0]
|
||||
AA = "C5"
|
||||
AB = "C6"
|
||||
AC = "E6"
|
||||
AD = "C7"
|
||||
AE = "E7"
|
||||
AF = "C8"
|
||||
AG = "E8"
|
||||
AH = "C9"
|
||||
AI = "E9"
|
||||
AJ = "C10"
|
||||
AK = "E10"
|
||||
AL = "C11"
|
||||
AM = "E11"
|
||||
AN = "C12"
|
||||
AO = "E12"
|
||||
AP = "C13"
|
||||
AQ = "E13"
|
||||
AR = "C14"
|
||||
AS = "E14"
|
||||
AT = "C15"
|
||||
AU = "E15"
|
||||
AV = "C16"
|
||||
AW = "E16"
|
||||
AX = "C17"
|
||||
AY = "E17"
|
||||
CS = "C18"
|
||||
CT = "E18"
|
||||
CU = "C19"
|
||||
CV = "E19"
|
||||
BB = "C20"
|
||||
BC = "E20"
|
||||
BD = "C21"
|
||||
BE = "E21"
|
||||
BF = "C22"
|
||||
BG = "E22"
|
||||
BH = "C23"
|
||||
BI = "E23"
|
||||
BJ = "C24"
|
||||
BK = "E24"
|
||||
BL = "C25"
|
||||
BM = "E25"
|
||||
BN = "C26"
|
||||
BO = "E26"
|
||||
BP = "C27"
|
||||
BQ = "E27"
|
||||
BR = "C28"
|
||||
BS = "E28"
|
||||
BT = "C29"
|
||||
BU = "E29"
|
||||
BV = "C30"
|
||||
BW = "E30"
|
||||
BX = "C31"
|
||||
BY = "E31"
|
||||
BZ = "C32"
|
||||
CA = "E32"
|
||||
CB = "C33"
|
||||
CC = "E33"
|
||||
CD = "C34"
|
||||
CE = "E34"
|
||||
CF = "C35"
|
||||
CG = "E35"
|
||||
CH = "C36"
|
||||
CI = "E36"
|
||||
CJ = "C37"
|
||||
CK = "E37"
|
||||
CL = "C38"
|
||||
CM = "C39"
|
||||
CN = "C40"
|
||||
CO = "C41"
|
||||
1A = "E41"
|
||||
TEXTE_SIRET = "A1"
|
||||
TEXTE_RS = "A2"
|
||||
TEXTE_DATEN = "A3"
|
||||
|
||||
[1]
|
||||
DA = "C5"
|
||||
DB = "C6"
|
||||
DC = "C7"
|
||||
DD = "C8"
|
||||
DE = "C9"
|
||||
DF = "C10"
|
||||
DG = "C11"
|
||||
DH = "C12"
|
||||
DI = "C13"
|
||||
DJ = "C14"
|
||||
DK = "C15"
|
||||
DL = "C16"
|
||||
DM = "C17"
|
||||
DN = "C18"
|
||||
DO = "C19"
|
||||
DP = "C20"
|
||||
DQ = "C21"
|
||||
DR = "C22"
|
||||
DS = "C23"
|
||||
DT = "C24"
|
||||
DU = "C25"
|
||||
DV = "C26"
|
||||
DW = "C27"
|
||||
DX = "C28"
|
||||
DY = "C29"
|
||||
DZ = "C30"
|
||||
EA = "C31"
|
||||
EB = "C32"
|
||||
EC = "C33"
|
||||
ED = "C34"
|
||||
EE = "C35"
|
||||
1B = "C37"
|
||||
1C = "C38"
|
||||
1D = "C39"
|
||||
1E = "C40"
|
||||
EF = "C41"
|
||||
EJ = "C42"
|
||||
EG = "C43"
|
||||
EH = "C44"
|
||||
EI = "C45"
|
||||
|
||||
[2]
|
||||
FA = "C7"
|
||||
FB = "E7"
|
||||
FC = "G7"
|
||||
FD = "C8"
|
||||
FE = "E8"
|
||||
FF = "G8"
|
||||
FG = "C9"
|
||||
FH = "E9"
|
||||
FI = "G9"
|
||||
FJ = "C10"
|
||||
FK = "E10"
|
||||
FL = "G10"
|
||||
FM = "G11"
|
||||
FN = "G12"
|
||||
FO = "G13"
|
||||
FP = "G14"
|
||||
FQ = "G14"
|
||||
FR = "G16"
|
||||
FS = "G17"
|
||||
FT = "G18"
|
||||
FU = "G19"
|
||||
FV = "G20"
|
||||
FW = "G21"
|
||||
FX = "G22"
|
||||
FY = "G23"
|
||||
FZ = "G24"
|
||||
GA = "G25"
|
||||
GB = "G27"
|
||||
GC = "G28"
|
||||
GD = "G29"
|
||||
GE = "G30"
|
||||
GF = "G31"
|
||||
GG = "G32"
|
||||
GH = "G33"
|
||||
GI = "G34"
|
||||
GJ = "G35"
|
||||
GK = "G36"
|
||||
GL = "G37"
|
||||
GM = "G38"
|
||||
GN = "G39"
|
||||
GO = "G40"
|
||||
GP = "G41"
|
||||
GQ = "G42"
|
||||
GR = "G43"
|
||||
GS = "G44"
|
||||
GT = "G45"
|
||||
GU = "G46"
|
||||
GV = "G47"
|
||||
GW = "G48"
|
||||
HA = "G49"
|
||||
HB = "G50"
|
||||
HC = "G51"
|
||||
HD = "G52"
|
||||
HE = "G53"
|
||||
HF = "G54"
|
||||
HG = "G55"
|
||||
HH = "G56"
|
||||
HI = "G57"
|
||||
HJ = "G58"
|
||||
HK = "G59"
|
||||
HL = "G60"
|
||||
HM = "G61"
|
||||
HN = "G62"
|
||||
HO = "G63"
|
||||
HY = "G64"
|
||||
1G = "G66"
|
||||
HP = "G67"
|
||||
HQ = "G69"
|
||||
1H = "G70"
|
||||
1J = "G71"
|
||||
1K = "G72"
|
||||
HX = "G73"
|
||||
|
||||
[3]
|
||||
ZE = "D5"
|
||||
YQ = "D8"
|
||||
YR = "D9"
|
||||
YS = "D10"
|
||||
YT = "D11"
|
||||
YU = "D13"
|
||||
YV = "D15"
|
||||
ZJ = "D17"
|
||||
YW = "D18"
|
||||
9Z = "D19"
|
||||
YX = "D20"
|
||||
YY = "D21"
|
||||
YZ = "D22"
|
||||
ZA = "D23"
|
||||
0B = "D24"
|
||||
0S = "D25"
|
||||
YP = "D27"
|
||||
|
||||
[4]
|
||||
3T = "D5"
|
||||
3U = "D6"
|
||||
3V = "D7"
|
||||
3W = "D8"
|
||||
3X = "D9"
|
||||
IA = "D10"
|
||||
IE = "D11"
|
||||
IJ = "D12"
|
||||
3Y = "D13"
|
||||
3Z = "D14"
|
||||
4A = "D15"
|
||||
4E = "D16"
|
||||
4J = "D17"
|
||||
4N = "D18"
|
||||
4T = "D19"
|
||||
4X = "D20"
|
||||
5B = "D21"
|
||||
5F = "D22"
|
||||
5L = "D23"
|
||||
5R = "D24"
|
||||
5V = "D25"
|
||||
5Z = "D26"
|
||||
6A = "D27"
|
||||
6E = "D28"
|
||||
02 = "D29"
|
||||
9U = "D30"
|
||||
06 = "D31"
|
||||
6N = "D32"
|
||||
6T = "D33"
|
||||
6X = "D34"
|
||||
7B = "D35"
|
||||
7C = "D36"
|
||||
TA = "F5"
|
||||
TD = "F6"
|
||||
TG = "F7"
|
||||
TJ = "F8"
|
||||
TM = "F9"
|
||||
IB = "F10"
|
||||
IF = "F11"
|
||||
IK = "F12"
|
||||
TP = "F13"
|
||||
TS = "F14"
|
||||
4B = "F15"
|
||||
4F = "F16"
|
||||
4K = "F17"
|
||||
4P = "F18"
|
||||
4U = "F19"
|
||||
4Y = "F20"
|
||||
5C = "F21"
|
||||
5H = "F22"
|
||||
5M = "F23"
|
||||
5S = "F24"
|
||||
5W = "F25"
|
||||
TV = "F26"
|
||||
6B = "F27"
|
||||
6F = "F28"
|
||||
03 = "F29"
|
||||
9V = "F30"
|
||||
07 = "F31"
|
||||
6P = "F32"
|
||||
6U = "F33"
|
||||
6Y = "F34"
|
||||
TY = "F35"
|
||||
UB = "F36"
|
||||
UE = "F37"
|
||||
UG = "F38"
|
||||
UJ = "F39"
|
||||
TB = "H5"
|
||||
TE = "H6"
|
||||
TH = "H7"
|
||||
TK = "H8"
|
||||
TN = "H9"
|
||||
IC = "H10"
|
||||
IG = "H11"
|
||||
IL = "H12"
|
||||
TQ = "H13"
|
||||
TT = "H14"
|
||||
4C = "H15"
|
||||
4G = "H16"
|
||||
4L = "H17"
|
||||
4R = "H18"
|
||||
4V = "H19"
|
||||
4Z = "H20"
|
||||
5D = "H21"
|
||||
5J = "H22"
|
||||
5N = "H23"
|
||||
5T = "H24"
|
||||
5X = "H25"
|
||||
TW = "H26"
|
||||
6C = "H27"
|
||||
6G = "H28"
|
||||
04 = "H29"
|
||||
9W = "H30"
|
||||
08 = "H31"
|
||||
6R = "H32"
|
||||
6V = "H33"
|
||||
6Z = "H34"
|
||||
TZ = "H35"
|
||||
UC = "H36"
|
||||
UF = "H37"
|
||||
UH = "H38"
|
||||
UK = "H39"
|
||||
TC = "J5"
|
||||
TF = "J6"
|
||||
TI = "J7"
|
||||
TL = "J8"
|
||||
TO = "J9"
|
||||
ID = "J10"
|
||||
IH = "J11"
|
||||
IM = "J12"
|
||||
TR = "J13"
|
||||
TU = "J14"
|
||||
4D = "J15"
|
||||
4H = "J16"
|
||||
4M = "J17"
|
||||
4S = "J18"
|
||||
4W = "J19"
|
||||
5A = "J20"
|
||||
5E = "J21"
|
||||
5K = "J22"
|
||||
5P = "J23"
|
||||
5U = "J24"
|
||||
5Y = "J25"
|
||||
TX = "J26"
|
||||
6D = "J27"
|
||||
6H = "J28"
|
||||
05 = "J29"
|
||||
9X = "J30"
|
||||
09 = "J31"
|
||||
6S = "J32"
|
||||
6W = "J33"
|
||||
7A = "J34"
|
||||
UA = "J35"
|
||||
UD = "J36"
|
||||
10 = "J40"
|
||||
|
||||
[5]
|
||||
UQ = "E11"
|
||||
UL = "G6"
|
||||
UP = "G7"
|
||||
UT = "G8"
|
||||
VA = "G9"
|
||||
UX = "G10"
|
||||
UU = "G11"
|
||||
UY = "G12"
|
||||
UZ = "G13"
|
||||
VM = "G14"
|
||||
VB = "G15"
|
||||
VN = "G16"
|
||||
VP = "G17"
|
||||
VC = "G18"
|
||||
VR = "G19"
|
||||
VS = "G20"
|
||||
VT = "G21"
|
||||
VD = "G22"
|
||||
VE = "G23"
|
||||
VF = "G24"
|
||||
UM = "I6"
|
||||
UR = "I7"
|
||||
UV = "I8"
|
||||
VU = "I21"
|
||||
UN = "K6"
|
||||
US = "K7"
|
||||
UW = "K8"
|
||||
VV = "K21"
|
||||
7Y = "E27"
|
||||
7Z = "E28"
|
||||
VG = "E29"
|
||||
VH = "E30"
|
||||
8A = "E31"
|
||||
8B = "E32"
|
||||
8C = "E33"
|
||||
8D = "E34"
|
||||
8E = "E35"
|
||||
VW = "E36"
|
||||
VX = "E37"
|
||||
VQ = "E38"
|
||||
8J = "E39"
|
||||
VI = "E40"
|
||||
8K = "E41"
|
||||
SZ = "E42"
|
||||
8L = "E43"
|
||||
VY = "E44"
|
||||
VZ = "G44"
|
||||
VZ3 = "H44"
|
||||
VZ4 = "I44"
|
||||
VJ = "E45"
|
||||
VK = "E46"
|
||||
VL = "K45"
|
BIN
library/Scores/Finance/Liasse/models/bdf_liasse_template.xls
Normal file
BIN
library/Scores/Finance/Liasse/models/bdf_liasse_template.xls
Normal file
Binary file not shown.
352
library/Scores/Finance/Liasse/models/liasse_2033.ini
Normal file
352
library/Scores/Finance/Liasse/models/liasse_2033.ini
Normal file
@ -0,0 +1,352 @@
|
||||
;2033 ACTIF PASSIF
|
||||
[0]
|
||||
TEXTE_SIRET = "D6"
|
||||
TEXTE_RS = "F4"
|
||||
TEXTE_DATEN = "W10"
|
||||
TEXTE_DATEN1 = "Z10"
|
||||
TEXTE_DUREEN = "G7"
|
||||
TEXTE_DUREEN1 = "S7"
|
||||
010 = "K12"
|
||||
014 = "K13"
|
||||
028 = "K14"
|
||||
040 = "K15"
|
||||
044 = "K16"
|
||||
050 = "K17"
|
||||
060 = "K18"
|
||||
064 = "K19"
|
||||
068 = "K20"
|
||||
072 = "K21"
|
||||
080 = "K22"
|
||||
084 = "K23"
|
||||
088 = "K24"
|
||||
092 = "K25"
|
||||
096 = "K26"
|
||||
110 = "K27"
|
||||
012 = "Q12"
|
||||
016 = "Q13"
|
||||
030 = "Q14"
|
||||
042 = "Q15"
|
||||
048 = "Q16"
|
||||
052 = "Q17"
|
||||
062 = "Q18"
|
||||
066 = "Q19"
|
||||
070 = "Q20"
|
||||
074 = "Q21"
|
||||
082 = "Q22"
|
||||
086 = "Q23"
|
||||
090 = "Q24"
|
||||
094 = "Q25"
|
||||
098 = "Q26"
|
||||
112 = "Q27"
|
||||
013 = "W12"
|
||||
017 = "W13"
|
||||
031 = "W14"
|
||||
043 = "W15"
|
||||
049 = "W16"
|
||||
053 = "W17"
|
||||
063 = "W18"
|
||||
067 = "W19"
|
||||
071 = "W20"
|
||||
075 = "W21"
|
||||
083 = "W22"
|
||||
087 = "W23"
|
||||
091 = "W24"
|
||||
095 = "W25"
|
||||
099 = "W26"
|
||||
113 = "W27"
|
||||
120 = "W29"
|
||||
124 = "W30"
|
||||
126 = "W31"
|
||||
130 = "W32"
|
||||
132 = "W33"
|
||||
134 = "W34"
|
||||
136 = "W35"
|
||||
140 = "W36"
|
||||
142 = "W37"
|
||||
154 = "W38"
|
||||
156 = "W39"
|
||||
164 = "W40"
|
||||
166 = "W41"
|
||||
172 = "W42"
|
||||
174 = "W43"
|
||||
176 = "W44"
|
||||
180 = "W45"
|
||||
195 = "Z46"
|
||||
182 = "Z47"
|
||||
184 = "Z48"
|
||||
N00 = "Z12"
|
||||
N01 = "Z13"
|
||||
N02 = "Z14"
|
||||
N03 = "Z15"
|
||||
N04 = "Z16"
|
||||
N05 = "Z17"
|
||||
N06 = "Z18"
|
||||
N07 = "Z19"
|
||||
N08 = "Z20"
|
||||
N09 = "Z21"
|
||||
N10 = "Z22"
|
||||
N11 = "Z23"
|
||||
N12 = "Z24"
|
||||
N13 = "Z25"
|
||||
N14 = "Z26"
|
||||
N15 = "Z27"
|
||||
N16 = "Z29"
|
||||
N17 = "Z30"
|
||||
N18 = "Z31"
|
||||
N19 = "Z32"
|
||||
N20 = "Z33"
|
||||
N21 = "Z34"
|
||||
N22 = "Z35"
|
||||
N23 = "Z36"
|
||||
N24 = "Z37"
|
||||
N25 = "Z38"
|
||||
N26 = "Z39"
|
||||
N27 = "Z40"
|
||||
N28 = "Z41"
|
||||
N29 = "Z42"
|
||||
N30 = "Z43"
|
||||
N31 = "Z44"
|
||||
N32 = "Z45"
|
||||
|
||||
;2033 CDR
|
||||
[1]
|
||||
209 = "R8"
|
||||
215 = "R9"
|
||||
217 = "R10"
|
||||
24B = "K20"
|
||||
24A = "U20"
|
||||
243 = "R21"
|
||||
259 = "R26"
|
||||
247 = "H40"
|
||||
248 = "V40"
|
||||
981 = "U41"
|
||||
344 = "I42"
|
||||
346 = "T42"
|
||||
381 = "D48"
|
||||
382 = "T48"
|
||||
374 = "H49"
|
||||
376 = "S49"
|
||||
378 = "H50"
|
||||
210 = "AA8"
|
||||
214 = "AA9"
|
||||
218 = "AA10"
|
||||
222 = "AA11"
|
||||
224 = "AA12"
|
||||
226 = "AA13"
|
||||
230 = "AA14"
|
||||
232 = "AA15"
|
||||
234 = "AA16"
|
||||
236 = "AA17"
|
||||
238 = "AA18"
|
||||
240 = "AA19"
|
||||
242 = "AA20"
|
||||
244 = "AA21"
|
||||
250 = "AA22"
|
||||
252 = "AA23"
|
||||
254 = "AA24"
|
||||
256 = "AA25"
|
||||
262 = "AA26"
|
||||
264 = "AA27"
|
||||
270 = "AA28"
|
||||
280 = "AA29"
|
||||
290 = "AA30"
|
||||
294 = "AA31"
|
||||
300 = "AA32"
|
||||
306 = "AA33"
|
||||
310 = "AA34"
|
||||
312 = "AA35"
|
||||
316 = "AA36"
|
||||
318 = "AA37"
|
||||
322 = "AA38"
|
||||
324 = "AA39"
|
||||
330 = "AA40"
|
||||
352 = "AA43"
|
||||
356 = "AA44"
|
||||
366 = "AA46"
|
||||
370 = "AA47"
|
||||
380 = "Z50"
|
||||
N33 = "AD8"
|
||||
N34 = "AD9"
|
||||
N35 = "AD10"
|
||||
N36 = "AD11"
|
||||
N37 = "AD12"
|
||||
N38 = "AD13"
|
||||
N39 = "AD14"
|
||||
N40 = "AD15"
|
||||
N41 = "AD16"
|
||||
N42 = "AD17"
|
||||
N43 = "AD18"
|
||||
N44 = "AD19"
|
||||
N45 = "AD20"
|
||||
N46 = "AD21"
|
||||
N47 = "AD22"
|
||||
N48 = "AD23"
|
||||
N49 = "AD24"
|
||||
N50 = "AD25"
|
||||
N51 = "AD26"
|
||||
N52 = "AD27"
|
||||
N53 = "AD28"
|
||||
N54 = "AD29"
|
||||
N55 = "AD30"
|
||||
N56 = "AD31"
|
||||
N57 = "AD32"
|
||||
N58 = "AD33"
|
||||
N59 = "AD34"
|
||||
314 = "AE35"
|
||||
342 = "AE41"
|
||||
350 = "AE42"
|
||||
354 = "AE43"
|
||||
360 = "AE45"
|
||||
368 = "AE46"
|
||||
372 = "AE47"
|
||||
388 = "AE48"
|
||||
399 = "AE50"
|
||||
|
||||
|
||||
;2033 IMMO AMORT.
|
||||
[2]
|
||||
400 = "H9"
|
||||
410 = "H10"
|
||||
420 = "H11"
|
||||
430 = "H12"
|
||||
440 = "H13"
|
||||
450 = "H14"
|
||||
460 = "H15"
|
||||
470 = "H16"
|
||||
480 = "H17"
|
||||
490 = "H18"
|
||||
402 = "P9"
|
||||
412 = "P10"
|
||||
422 = "P11"
|
||||
432 = "P12"
|
||||
442 = "P13"
|
||||
452 = "P14"
|
||||
462 = "P15"
|
||||
472 = "P16"
|
||||
482 = "P17"
|
||||
492 = "P18"
|
||||
404 = "W9"
|
||||
414 = "W10"
|
||||
424 = "W11"
|
||||
434 = "W12"
|
||||
444 = "W13"
|
||||
454 = "W14"
|
||||
464 = "W15"
|
||||
474 = "W16"
|
||||
484 = "W17"
|
||||
494 = "W18"
|
||||
406 = "AD9"
|
||||
416 = "AD10"
|
||||
426 = "AD11"
|
||||
436 = "AD12"
|
||||
446 = "AD13"
|
||||
456 = "AD14"
|
||||
466 = "AD15"
|
||||
476 = "AD16"
|
||||
486 = "AD17"
|
||||
496 = "AD18"
|
||||
500 = "K21"
|
||||
510 = "K22"
|
||||
520 = "K23"
|
||||
530 = "K24"
|
||||
540 = "K25"
|
||||
550 = "K26"
|
||||
560 = "K27"
|
||||
570 = "K28"
|
||||
502 = "T21"
|
||||
512 = "T22"
|
||||
522 = "T23"
|
||||
532 = "T24"
|
||||
543 = "T25"
|
||||
552 = "T26"
|
||||
562 = "T27"
|
||||
572 = "T28"
|
||||
504 = "AE21"
|
||||
514 = "AE22"
|
||||
524 = "AE23"
|
||||
534 = "AE24"
|
||||
544 = "AE25"
|
||||
554 = "AE26"
|
||||
564 = "AE27"
|
||||
574 = "AE28"
|
||||
506 = "AJ21"
|
||||
516 = "AJ22"
|
||||
526 = "AJ23"
|
||||
536 = "AJ24"
|
||||
546 = "AJ25"
|
||||
556 = "AJ26"
|
||||
566 = "AJ27"
|
||||
576 = "AJ28"
|
||||
578 = "I42"
|
||||
580 = "O42"
|
||||
582 = "U42"
|
||||
584 = "Z42"
|
||||
586 = "AG42"
|
||||
588 = "AM42"
|
||||
590 = "AG43"
|
||||
592 = "AM43"
|
||||
593 = "AM44"
|
||||
596 = "AG45"
|
||||
598 = "AM45"
|
||||
|
||||
;2033 PROVISIONS
|
||||
[3]
|
||||
610 = "H9"
|
||||
601 = "H10"
|
||||
610 = "H11"
|
||||
620 = "H12"
|
||||
630 = "H13"
|
||||
640 = "H14"
|
||||
650 = "H15"
|
||||
660 = "H16"
|
||||
680 = "H17"
|
||||
602 = "P9"
|
||||
603 = "P10"
|
||||
612 = "P11"
|
||||
622 = "P12"
|
||||
632 = "P13"
|
||||
642 = "P14"
|
||||
652 = "P15"
|
||||
662 = "P16"
|
||||
682 = "P17"
|
||||
604 = "W9"
|
||||
605 = "W10"
|
||||
614 = "W11"
|
||||
624 = "W12"
|
||||
634 = "W13"
|
||||
644 = "W14"
|
||||
654 = "W15"
|
||||
664 = "W16"
|
||||
684 = "W17"
|
||||
606 = "AD9"
|
||||
607 = "AD10"
|
||||
616 = "AD11"
|
||||
626 = "AD12"
|
||||
636 = "AD13"
|
||||
646 = "AD14"
|
||||
656 = "AD15"
|
||||
666 = "AD16"
|
||||
686 = "AD17"
|
||||
700 = "G20"
|
||||
710 = "G21"
|
||||
720 = "G22"
|
||||
730 = "G23"
|
||||
740 = "G24"
|
||||
750 = "G25"
|
||||
760 = "G26"
|
||||
770 = "G27"
|
||||
705 = "K20"
|
||||
715 = "K21"
|
||||
725 = "K22"
|
||||
735 = "K23"
|
||||
745 = "K24"
|
||||
755 = "K25"
|
||||
765 = "K26"
|
||||
775 = "K27"
|
||||
780 = "AJ27"
|
||||
982 = "AJ29"
|
||||
983 = "AJ30"
|
||||
984 = "AJ31"
|
||||
860 = "AJ32"
|
||||
870 = "AJ33"
|
||||
|
BIN
library/Scores/Finance/Liasse/models/liasse_2033.xls
Normal file
BIN
library/Scores/Finance/Liasse/models/liasse_2033.xls
Normal file
Binary file not shown.
BIN
library/Scores/Finance/Liasse/models/liasse_2033_ori.xls
Normal file
BIN
library/Scores/Finance/Liasse/models/liasse_2033_ori.xls
Normal file
Binary file not shown.
1067
library/Scores/Finance/Liasse/models/liasse_2050.ini
Normal file
1067
library/Scores/Finance/Liasse/models/liasse_2050.ini
Normal file
File diff suppressed because it is too large
Load Diff
BIN
library/Scores/Finance/Liasse/models/liasse_2050.xls
Normal file
BIN
library/Scores/Finance/Liasse/models/liasse_2050.xls
Normal file
Binary file not shown.
BIN
library/Scores/Finance/Liasse/models/liasse_2050_ori.xls
Normal file
BIN
library/Scores/Finance/Liasse/models/liasse_2050_ori.xls
Normal file
Binary file not shown.
362
library/Scores/Finance/Ratios/Data.php
Normal file
362
library/Scores/Finance/Ratios/Data.php
Normal file
@ -0,0 +1,362 @@
|
||||
<?php
|
||||
class Scores_Finance_Ratios_Data
|
||||
{
|
||||
protected $ratiosInfos;
|
||||
protected $bilansInfo;
|
||||
protected $ratiosEntrep;
|
||||
protected $ratiosEntrepEvol;
|
||||
protected $ratiosSecteur;
|
||||
|
||||
protected $nbBilanN = 0;
|
||||
protected $nbBilanS = 0;
|
||||
protected $nbBilanC = 0;
|
||||
protected $nbBilanA = 0;
|
||||
protected $nbBilanB = 0;
|
||||
|
||||
public function __construct($ratios)
|
||||
{
|
||||
//Organisation des ratios secteurs
|
||||
if (count($ratios->RatiosSecteur->item)>0){
|
||||
foreach($ratios->RatiosSecteur->item as $item){
|
||||
foreach($item->liste->item as $ratiosItem){
|
||||
$this->ratiosSecteur[$item->annee][$ratiosItem->id] = $ratiosItem->val;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Orgnaisation des informations des ratios
|
||||
foreach($ratios->RatiosInfos->item as $item){ //@todo : protection
|
||||
$this->ratiosInfos[$item->id] = $item;
|
||||
}
|
||||
|
||||
//Orgnaisation RatiosEntrep et RatiosEntrepEvol
|
||||
if (count($ratios->BilansInfos->item)>0){
|
||||
foreach($ratios->BilansInfos->item as $item)
|
||||
{
|
||||
$typeBilan = $item->typeBilan;
|
||||
if ($typeBilan == 'S') $typeBilan = 'N';
|
||||
|
||||
$this->bilansInfo[$typeBilan][$item->dateCloture] = $item;
|
||||
foreach($item->RatiosEntrep->item as $ratiosItem){
|
||||
$this->ratiosEntrep[$typeBilan][$item->dateCloture][$ratiosItem->id] = $ratiosItem->val;
|
||||
}
|
||||
foreach($item->RatiosEntrepEvol->item as $ratiosItem){
|
||||
$this->ratiosEntrepEvol[$typeBilan][$item->dateCloture][$ratiosItem->id] = $ratiosItem->val;
|
||||
}
|
||||
//Comptage de bilans
|
||||
$this->{'nbBilan'.$typeBilan}++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getNbBilan($type)
|
||||
{
|
||||
return $this->{'nbBilan'.$type};
|
||||
}
|
||||
|
||||
/**
|
||||
* Renvoi le ratio de l'entité
|
||||
* @param string $type
|
||||
* @param string $dateCloture
|
||||
* @param string $id
|
||||
*/
|
||||
function dRatio($type, $dateCloture, $id){
|
||||
$ratio = $this->ratiosEntrep[$type][$dateCloture][$id];
|
||||
$return = '';
|
||||
$formatRatio = TRUE;
|
||||
if ($ratio=='NS' || $ratio==0) {
|
||||
$return.= 'NS';
|
||||
$formatRatio = FALSE;
|
||||
}elseif(substr($ratio,0,1)=='<' ){
|
||||
$return.= '< ';
|
||||
$ratio = substr($ratio,1)*1;
|
||||
}elseif(substr($ratio,0,1)=='>'){
|
||||
$return.= '> ';
|
||||
$ratio = substr($ratio,1)*1;
|
||||
}elseif($ratio==NULL){
|
||||
$return.= '-';
|
||||
$formatRatio = FALSE;
|
||||
}
|
||||
|
||||
if($formatRatio == TRUE) {
|
||||
if ( ($this->ratiosInfos[$id]->unite=='EUR') && ((abs($ratio)/1000)>0) ){
|
||||
$return.= number_format($ratio/1000, 0, '', ' ').' K€';
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='EUR') && ((abs($ratio)/1000)<0)) {
|
||||
$return.= number_format($ratio, 0, '', ' ').' €';
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='Jours')) {
|
||||
$return.= number_format($ratio, 0, '', ' ').' '.$this->ratiosInfos[$id]->unite;
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='AN')) {
|
||||
$return.= round($ratio, 2).' '.$this->ratiosInfos[$id]->unite;
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='%')) {
|
||||
$return.= round($ratio).' '.$this->ratiosInfos[$id]->unite;
|
||||
}else{
|
||||
$return.= $ratio.' '.$this->ratiosInfos[$id]->unite;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renvoi le ratio secteur
|
||||
* @param string $dateCloture
|
||||
* @param string $id
|
||||
*/
|
||||
function dSecteur($dateCloture, $id){
|
||||
$ratio = $this->ratiosSecteur[substr($dateCloture,0,4)][$id];
|
||||
$return = '';
|
||||
$formatRatio = TRUE;
|
||||
if ($ratio=='NS') {
|
||||
$return.= 'NS';
|
||||
$formatRatio = FALSE;
|
||||
}elseif(substr($ratio,0,1)=='<' ){
|
||||
$return.= '< ';
|
||||
$ratio = substr($ratio,1)*1;
|
||||
}elseif(substr($ratio,0,1)=='>'){
|
||||
$return.= '> ';
|
||||
$ratio = substr($ratio,1)*1;
|
||||
}elseif($ratio==NULL){
|
||||
$return.= '-';
|
||||
$formatRatio = FALSE;
|
||||
}
|
||||
|
||||
if($formatRatio == TRUE) {
|
||||
if ( ($this->ratiosInfos[$id]->unite=='EUR') && ((abs($ratio)/1000)>0) ){
|
||||
$return.= number_format($ratio/1000, 0, '', ' ').' K€';
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='EUR') && ((abs($ratio)/1000)<0)) {
|
||||
$return.= number_format($ratio, 0, '', ' ').' €';
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='Jours')) {
|
||||
$return.= number_format($ratio, 0, '', ' ').' '.$this->ratiosInfos[$id]->unite;
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='AN')) {
|
||||
$return.= round($ratio, 2).' '.$this->ratiosInfos[$id]->unite;
|
||||
}elseif (($this->ratiosInfos[$id]->unite=='%')) {
|
||||
$return.= round($ratio).' '.$this->ratiosInfos[$id]->unite;
|
||||
}else{
|
||||
$return.= $ratio.' '.$this->ratiosInfos[$id]->unite;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renvoi la position de l'entité en comparant son ratio avec le ratio secteur
|
||||
* Enter description here ...
|
||||
* @param string $type
|
||||
* @param string $dateCloture
|
||||
* @param string $id
|
||||
* @param string $compare
|
||||
* @return string
|
||||
*/
|
||||
function dPosition($type, $dateCloture, $id, $compare)
|
||||
{
|
||||
$ratioS = $this->ratiosSecteur[substr($dateCloture,0,4)][$id];
|
||||
$ratioE = $this->ratiosEntrep[$type][$dateCloture][$id];
|
||||
$ecart = 1/100;
|
||||
|
||||
if( $ratioS=='NS' || $ratioE=='NS' || $ratioS==NULL || $ratioE==NULL){
|
||||
$return = '-';
|
||||
}elseif($compare=='>'){
|
||||
if( $ratioE+$ecart > $ratioS ){
|
||||
$return = '<img src="/themes/default/images/finance/ratios_bon.png" />';
|
||||
}elseif( ($ratioS-($ratioS*$ecart))<$ratioE && ($ratioS+($ratioS*$ecart))>$ratioE){
|
||||
$return = '-';
|
||||
}else{
|
||||
$return = '<img src="/themes/default/images/finance/ratios_mauvais.png" />';
|
||||
}
|
||||
}elseif($compare=='<'){
|
||||
if($ratioE < $ratioS){
|
||||
$return = '<img src="/themes/default/images/finance/ratios_bon.png" />';
|
||||
}elseif( ($ratioS-($ratioS*$ecart))<$ratioE && ($ratioS+($ratioS*$ecart))>$ratioE){
|
||||
$return = '-';
|
||||
}else{
|
||||
$return = '<img src="/themes/default/images/finance/ratios_mauvais.png" />';
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Affiche l'évolution d'un ratio.
|
||||
* @param string $type
|
||||
* @param string $dateCloture
|
||||
* @param string $id
|
||||
*/
|
||||
function dEvol($type, $dateCloture, $id){
|
||||
$ratio = $this->ratiosEntrepEvol[$type][$dateCloture][$id];
|
||||
if ($ratio=='NS') {
|
||||
return 'NS';
|
||||
}elseif($ratio==NULL){
|
||||
return '-';
|
||||
}else{
|
||||
return $ratio.' %';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter description here ...
|
||||
* @param unknown_type $type
|
||||
* @param unknown_type $dateCloture
|
||||
* @param unknown_type $id
|
||||
* @param unknown_type $totalRatio
|
||||
* @return string
|
||||
*/
|
||||
function dTotal($type, $dateCloture, $id, $totalRatio)
|
||||
{
|
||||
$ratio = isset($this->ratiosEntrep[$type][$dateCloture][$id]) ?
|
||||
$this->ratiosEntrep[$type][$dateCloture][$id] : 0;
|
||||
$total = isset($this->ratiosEntrep[$type][$dateCloture][$totalRatio]) ?
|
||||
$this->ratiosEntrep[$type][$dateCloture][$totalRatio] : 0;
|
||||
if($total!=0){
|
||||
return number_format($ratio*100/$total, 2);
|
||||
}else{
|
||||
return '-';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le tableau pour l'affichage des graphiques d'évolution
|
||||
* @param string $type
|
||||
* @param string $id
|
||||
*/
|
||||
function dGraph($type, $id)
|
||||
{
|
||||
$evol = array();
|
||||
$bilansInfo = $this->bilansInfo[$type];
|
||||
ksort($bilansInfo);
|
||||
foreach($bilansInfo as $item) {
|
||||
$dateCloture = $item->dateCloture;
|
||||
$div = 1;
|
||||
$ratioE = $this->ratiosEntrep[$type][$dateCloture][$id];
|
||||
$ratioS = $this->ratiosSecteur[substr($dateCloture,0,4)][$id];
|
||||
if ( ($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratioE)/1000)>0) ){
|
||||
$unite = 'KEURO';
|
||||
$div = 1000;
|
||||
}else{
|
||||
$unite = $this->ratiosInfos[$id]->unite;
|
||||
}
|
||||
//Données pour les graphiques évolutions
|
||||
$data[] = array(
|
||||
'date' => $dateCloture,
|
||||
'entreprise' => (($ratioE!='NS') ? $ratioE/$div : 0 ),
|
||||
'secteur' => (($ratioS!='NS') ? $ratioS/$div : 0 ),
|
||||
);
|
||||
}
|
||||
$evol = array('data' => $data, 'unite' => $unite);
|
||||
return $evol;
|
||||
}
|
||||
|
||||
/**
|
||||
* Affiche le pourcentage d'un ratio par rapport au total.
|
||||
* @param string $type
|
||||
* @param string $dateCloture
|
||||
* @param string $id
|
||||
* @param string $totalRatio
|
||||
* @return mixed
|
||||
*/
|
||||
function dPercent($type, $dateCloture, $id, $totalRatio){
|
||||
$ratio = $this->ratiosEntrep[$type][$dateCloture][$id];
|
||||
$totalRatio = $this->ratiosEntrep[$type][$dateCloture][$totalRatio];
|
||||
if ($ratio=='NS') {
|
||||
$return = 'NS';
|
||||
}elseif($ratio==NULL){
|
||||
$return = '-';
|
||||
}else {
|
||||
if ($totalRatio!=0 && $totalRatio!='NS'){
|
||||
$percent = $ratio*100/$totalRatio;
|
||||
}else{
|
||||
$percent = 0;
|
||||
}
|
||||
if ($percent>=0 && $percent<10){
|
||||
$return = round($percent, 1);
|
||||
} elseif ($percent>-10 && $percent<0) {
|
||||
$return = round($percent, 1);
|
||||
} else {
|
||||
$return = round($percent, 0);
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le pourcentage d'un ratio par rapport au total pour les graphiques
|
||||
* @param string $type
|
||||
* @param string $dateCloture
|
||||
* @param string $id
|
||||
* @param string $totalRatio
|
||||
*/
|
||||
function graphPercent($type, $dateCloture, $id, $totalRatio){
|
||||
$ratio = isset($this->ratiosEntrep[$type][$dateCloture][$id]) ?
|
||||
$this->ratiosEntrep[$type][$dateCloture][$id] : 0;
|
||||
$totalRatio = $this->ratiosEntrep[$type][$dateCloture][$totalRatio];
|
||||
if ( ($ratio!='NS' && $ratio!=NULL) && ($totalRatio!=0 && $totalRatio!='NS')){
|
||||
return $ratio*100/$totalRatio;
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Formatte le commentaire pour l'afficher dans l'infobulle.
|
||||
* @param string $nRatios
|
||||
* Identifiant du ratio
|
||||
* @return string
|
||||
*/
|
||||
function wrapComment($nRatio){
|
||||
$text = $this->ratiosInfos[$nRatio]->commentaires;
|
||||
$newtext = htmlentities($text, null, 'utf-8');
|
||||
$newtext = nl2br($newtext);
|
||||
return $newtext;
|
||||
}
|
||||
|
||||
public function getBilansInfo($type)
|
||||
{
|
||||
return $this->bilansInfo[$type];
|
||||
}
|
||||
|
||||
public function getRatiosInfos($id) {
|
||||
return $this->ratiosInfos[$id];
|
||||
}
|
||||
|
||||
public function getRatiosEntrep($type, $dateCloture, $id) {
|
||||
return $this->ratiosEntrep[$type][$dateCloture][$id];
|
||||
}
|
||||
|
||||
public function getRatiosEntrepEvol($type, $dateCloture, $id) {
|
||||
return $this->ratiosEntrepEvol[$type][$dateCloture][$id];
|
||||
}
|
||||
|
||||
public function getRatiosSecteur($annee, $id) {
|
||||
return $this->ratiosSecteur[substr($annee,0,4)][$id];
|
||||
}
|
||||
|
||||
public function getTableRatiosInfos()
|
||||
{
|
||||
return $this->ratiosInfos;
|
||||
}
|
||||
|
||||
public function getTableRatiosSecteur()
|
||||
{
|
||||
return $this->ratiosSecteur;
|
||||
}
|
||||
|
||||
public function getTableRatiosEntrep($type)
|
||||
{
|
||||
if (array_key_exists($type, $this->ratiosEntrep)){
|
||||
return $this->ratiosEntrep[$type];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getTableRatiosEntrepEvol($type)
|
||||
{
|
||||
if (array_key_exists($type, $this->ratiosEntrepEvol)){
|
||||
return $this->ratiosEntrepEvol[$type];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function ignoreType($type, $typeDelete) {
|
||||
foreach ($typeDelete as $t) {
|
||||
if ($t == $type) return (false);
|
||||
}
|
||||
return (true);
|
||||
}
|
||||
}
|
384
library/Scores/Finance/Ratios/Graph.php
Normal file
384
library/Scores/Finance/Ratios/Graph.php
Normal file
@ -0,0 +1,384 @@
|
||||
<?php
|
||||
class Scores_Finance_Ratios_Graph
|
||||
{
|
||||
protected $path;
|
||||
|
||||
protected $siret = null;
|
||||
protected $id = 0;
|
||||
|
||||
public function __construct($siret, $id = 0)
|
||||
{
|
||||
require_once 'Vendors/ChartDirector/phpchartdir.php';
|
||||
require_once 'Scores/Cache.php';
|
||||
$c = Zend_Registry::get('config');
|
||||
$this->path = $c->profil->path->pages . '/imgcache/';
|
||||
$this->siret = $siret;
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enregistre le graphique bilan passif sous forme d'image.
|
||||
* @param array $data
|
||||
* Tableau structuré des données
|
||||
* @param string $filename
|
||||
* Le nom de fichier généré
|
||||
* @return string
|
||||
* Retourne un message d'erreur ou le code HTML d'affichage.
|
||||
*/
|
||||
public function bilansgraphpassif($data, $typeBilan, $dateCloture)
|
||||
{
|
||||
$file = 'bilansgraphpassif-'.$this->siret.'-'.$this->id.'-'.$typeBilan.$dateCloture.'.png';
|
||||
$cache = new Cache();
|
||||
if( $cache->exist($this->path.$file) ){
|
||||
$return = $file;
|
||||
} else {
|
||||
$w = 665;
|
||||
$h = 210;
|
||||
$x = round($w/2);
|
||||
$y = round($h/2);
|
||||
$radius = 90;
|
||||
$c = new PieChart($w, $h);
|
||||
$labels = array('Fonds propres',
|
||||
'Provisions Risques',
|
||||
'Compte Courant',
|
||||
'Dettes Financières',
|
||||
'Dettes Fournisseurs',
|
||||
'Dettes fiscales',
|
||||
'Autres Dettes',
|
||||
'Trésorerie Passive');
|
||||
$textBoxObj = $c->addTitle("Composition du passif", "timesbi.ttf", 15);
|
||||
$c->setPieSize($x, $y, $radius);
|
||||
$c->setLabelLayout(SideLayout);
|
||||
$t = $c->setLabelStyle();
|
||||
$t->setBackground(SameAsMainColor, Transparent, glassEffect());
|
||||
$t->setRoundedCorners(5);
|
||||
$c->setLineColor(SameAsMainColor, 0x000000);
|
||||
$c->setStartAngle(135);
|
||||
$c->setLabelFormat("<*block,valign=absmiddle*>{label} <*font=timesbi.ttf,size=0*>({percent|0}%)");
|
||||
$c->setData($data, $labels);
|
||||
$c->set3D(20);
|
||||
if($c->makeChart($this->path.$file) === TRUE){
|
||||
$return = '<img src="./fichier/imgcache/'.$file.'"/>';
|
||||
}else{
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enregistre le graphique bilan SIG sous forme d'image.
|
||||
*/
|
||||
public function bilansgraphsig($data, $typeBilan, $dateCloture)
|
||||
{
|
||||
$file = 'bilansgraphsig-'.$this->siret.'-'.$this->id.'-'.$typeBilan.$dateCloture.'.png';
|
||||
$cache = new Cache();
|
||||
if( $cache->exist($this->path.$file) ){
|
||||
$return = $file;
|
||||
} else {
|
||||
$w = 665;
|
||||
$h = 210;
|
||||
$x = round($w/2);
|
||||
$y = round($h/2);
|
||||
$radius=70;
|
||||
$c = new PieChart($w, $h);
|
||||
$labels = array('Achats de marchandises.',
|
||||
'Autres achats externes',
|
||||
'Charges de fonctionnement',
|
||||
'Amortissement et provisions',
|
||||
'Perte financière',
|
||||
'Impôts sociétés',
|
||||
'RÉSULTAT NET',
|
||||
);
|
||||
$textBoxObj = $c->addTitle("Solde Intermédiaire de Gestion", "timesbi.ttf", 15);
|
||||
$c->setPieSize($x, $y, $radius);
|
||||
$c->setLabelLayout(SideLayout);
|
||||
$t = $c->setLabelStyle();
|
||||
$t->setBackground(SameAsMainColor, Transparent, glassEffect());
|
||||
$t->setRoundedCorners(5);
|
||||
$c->setLineColor(SameAsMainColor, 0x000000);
|
||||
$c->setLabelFormat("<*block,valign=absmiddle*>{label} <*font=arial.ttf,size=0*>({percent|0}%)");
|
||||
$c->setStartAngle(135);
|
||||
$c->setData($data, $labels);
|
||||
$c->set3D(20);
|
||||
|
||||
if($c->makeChart($this->path.$file) === TRUE){
|
||||
$return = $file;
|
||||
}else{
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enregistre le graphique bilan actif sous forme d'image.
|
||||
* @param array $data
|
||||
* Tableau structuré des données
|
||||
* @return mixed
|
||||
*/
|
||||
public function bilansgraphactif($data, $typeBilan, $dateCloture)
|
||||
{
|
||||
$file = 'bilansgraphactif-'.$this->siret.'-'.$this->id.'-'.$typeBilan.$dateCloture.'.png';
|
||||
$cache = new Cache();
|
||||
if( $cache->exist($this->path.$file) ){
|
||||
$return = $file;
|
||||
} else {
|
||||
$w = 665;
|
||||
$h = 210;
|
||||
$x = round($w/2);
|
||||
$y = round($h/2);
|
||||
$radius = 90;
|
||||
$c = new PieChart($w, $h);
|
||||
$labels = array('Immo. incorporelles',
|
||||
'Immo. corporelles',
|
||||
'Immo. financières',
|
||||
'Stock et encours',
|
||||
'Créances Clients',
|
||||
'Autres créances',
|
||||
'Trésorerie Active');
|
||||
$textBoxObj = $c->addTitle("Composition de l'actif", "timesbi.ttf", 15);
|
||||
$c->setPieSize($x, $y, $radius);
|
||||
$c->setLabelLayout(SideLayout);
|
||||
$t = $c->setLabelStyle();
|
||||
$t->setBackground(SameAsMainColor, Transparent, glassEffect());
|
||||
$t->setRoundedCorners(5);
|
||||
# Set the border color of the sector the same color as the fill color. Set the line # color of the join line to black (0x0)
|
||||
$c->setLineColor(SameAsMainColor, 0x000000);
|
||||
$c->setStartAngle(135);
|
||||
$c->setLabelFormat("<*block,valign=absmiddle*>{label} <*font=timesbi.ttf,size=0*>({percent|0}%)");
|
||||
$c->setData($data, $labels);
|
||||
$c->set3D(20);
|
||||
if($c->makeChart($this->path.$file) === TRUE){
|
||||
$return = $file;
|
||||
}else{
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
public function ratiosgraph($ratio, $data)
|
||||
{
|
||||
$file = 'ratiosgraph-'.$this->siret.'-'.$this->id.'-'.$ratio.'.png';
|
||||
$cache = new Cache();
|
||||
if( $cache->exist($this->path.$file) ){
|
||||
$return = $file;
|
||||
}else{
|
||||
if(count($data)<=1){
|
||||
$return = 0;
|
||||
}else{
|
||||
$labelsX = array();
|
||||
$labelsY = array();
|
||||
$dataX1 = array();
|
||||
$dataX2 = array();
|
||||
foreach($data['data'] as $value){
|
||||
$dataX1[] = $value['entreprise'];
|
||||
$dataX2[] = $value['secteur'];
|
||||
$labelsX[] = substr($value['date'],0,4);
|
||||
}
|
||||
$i=-100; while($i>100){
|
||||
$labelsY[] = $i;
|
||||
}
|
||||
$c = new XYChart(350, 250);
|
||||
$c->setPlotArea(70, 10, 280, 200);
|
||||
$c->yAxis->setTitle($data['unite']);
|
||||
$c->xAxis->setTitle("Années");
|
||||
$c->xAxis->setWidth(2);
|
||||
$c->yAxis->setWidth(2);
|
||||
$legendObj = $c->addLegend(50, 10, false, "times.ttf", 9);
|
||||
$legendObj->setBackground(Transparent);
|
||||
$c->addLineLayer($dataX1, 0x0000ff, "Entreprise");
|
||||
$c->addLineLayer($dataX2, 0x008C00, "Secteur");
|
||||
$c->yAxis->setLabels($labelsY);
|
||||
$c->yAxis->setLabelStep(10);
|
||||
$c->xAxis->setLabels($labelsX);
|
||||
if($c->makeChart($this->path.$file) === TRUE){
|
||||
$return = $file;
|
||||
}
|
||||
else{ $return = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
public function syntheseGraphEvol($data, $ratio, $unite)
|
||||
{
|
||||
$file = 'syntheseEvol-'.$this->siret.'-'.$this->id.'-'.$ratio.'.png';
|
||||
$cache = new Cache();
|
||||
if( $cache->exist($this->path.$file) ){
|
||||
$return = $file;
|
||||
} else {
|
||||
$unite = !empty($unite) ? $unite : 'KEUROS';
|
||||
$labelsX = array();
|
||||
$labelsY = array();
|
||||
$dataX = array();
|
||||
if(count($data)<=1){
|
||||
$return = 0;
|
||||
} else {
|
||||
foreach($data as $value){
|
||||
$dataX[] = $value['value'];
|
||||
$labelsX[] = substr($value['date'],0,4);
|
||||
}
|
||||
$i=-100;
|
||||
while($i>100){
|
||||
$labelsY[] = $i;
|
||||
}
|
||||
# Create a XYChart object of size 250 x 250 pixels
|
||||
$c = new XYChart(400, 250);
|
||||
$c->setPlotArea(70, 10, 280, 200);
|
||||
$c->yAxis->setTitle($unite);
|
||||
$c->xAxis->setTitle("Années");
|
||||
$c->xAxis->setWidth(2);
|
||||
$c->yAxis->setWidth(2);
|
||||
$c->addLineLayer($dataX);
|
||||
# Set the labels.
|
||||
$c->yAxis->setLabels($labelsY);
|
||||
$c->yAxis->setLabelStep(10);
|
||||
$c->xAxis->setLabels($labelsX);
|
||||
if($c->makeChart($this->path.$file) === TRUE){
|
||||
$return = $file;
|
||||
} else {
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
public function syntheseGraphLineCompare($data, $typeBilan)
|
||||
{
|
||||
$file = 'synthese-linecompare-'.$this->siret.'-'.$this->id.'-'.$typeBilan.'.png';
|
||||
$cache = new Cache();
|
||||
|
||||
if( $cache->exist($this->path.$file) ){
|
||||
$return = $this->path.$file;
|
||||
} else {
|
||||
//Tri des données par date et par ordre croissant
|
||||
foreach ($data as $key => $row) {
|
||||
$date[$key] = $row['date'];
|
||||
}
|
||||
array_multisort($date, SORT_ASC, $data);
|
||||
|
||||
//Définition des valeurs pour le graph
|
||||
$dataBFR = array();
|
||||
$dataFR = array();
|
||||
$dataCA = array();
|
||||
$i=0;
|
||||
//Parcourir les années
|
||||
foreach($data as $item){
|
||||
$anneeFin = substr($item['date'],0,4);
|
||||
$moisFin = substr($item['date'],4,2);
|
||||
$jourFin = substr($item['date'],6,2);
|
||||
//Calcul de la date de début
|
||||
$dateDebut = date("Ymd", mktime(0, 0, 0, $moisFin-$item['duree'], $jourFin, $anneeFin));
|
||||
$anneeDebut = substr($dateDebut,0,4);
|
||||
$moisDebut = substr($dateDebut,4,2);
|
||||
$jourDebut = substr($dateDebut,6,2);
|
||||
//Affectation des abscisses
|
||||
$dataBFR['x'][$i] = $dataFR['x'][$i] = $dataCA['x'][$i] = $dataEBE['x'][$i] = chartTime((int)$anneeDebut, (int)$moisDebut, (int)$jourDebut);
|
||||
$dataBFR['x'][$i+1] = $dataFR['x'][$i+1] = $dataCA['x'][$i+1] = $dataEBE['x'][$i+1] = chartTime((int)$anneeFin, (int)$moisFin, (int)$jourFin);
|
||||
//Affectation des ordonnées
|
||||
$dataBFR['y'][$i] = $dataBFR['y'][$i+1] = $item['r236'];
|
||||
$dataFR['y'][$i] = $dataFR['y'][$i+1] = $item['r235'];
|
||||
$dataCA['y'][$i] = $dataCA['y'][$i+1] = $item['r6'];
|
||||
$dataEBE['y'][$i] = $dataEBE['y'][$i+1] = $item['r146'];
|
||||
$i+=2;
|
||||
}
|
||||
|
||||
$c = new XYChart(665, 350, 0xcccccc, 0x000000, 1);
|
||||
$c->addTitle("Synthèse *", "timesbi.ttf", 15, 0x000000);
|
||||
$c->addText(60, 320, "* Elements financier rapportés à 12 mois" );
|
||||
$c->setPlotArea(70, 80, 500, 200, 0xffffff, -1, -1, 0xcccccc, 0xcccccc);
|
||||
$c->yAxis->setTitle("KEUROS","timesbi.ttf",10);
|
||||
$c->xAxis->setTitle( "<*block,valign=absmiddle*>Années<*/*>");
|
||||
$c->xAxis->setWidth(2);
|
||||
$c->yAxis->setWidth(2);
|
||||
|
||||
// Add a legend box at (55, 32) (top of the chart) with horizontal layout. Use 9 pts
|
||||
// Arial Bold font. Set the background and border color to Transparent.
|
||||
$legendObj = $c->addLegend(55, 30, false, "times.ttf", 9);
|
||||
$legendObj->setBackground(Transparent);
|
||||
|
||||
// Add a blue (0000ff) step line layer to the chart and set the line width to 2 pixels
|
||||
$layer1 = $c->addStepLineLayer($dataFR['y'], 0x0000ff, "FONDS DE ROULEMENT");
|
||||
$layer1->setXData($dataFR['x']);
|
||||
$layer1->setLineWidth(2);
|
||||
|
||||
// Add a red (ff0000) step line layer to the chart and set the line width to 2 pixels
|
||||
$layer0 = $c->addStepLineLayer($dataBFR['y'], 0xff0000, "BESOIN EN FONDS DE ROULEMENT");
|
||||
$layer0->setXData($dataBFR['x']);
|
||||
$layer0->setLineWidth(2);
|
||||
|
||||
// Add a green (00ff00) step line layer to the chart and set the line width to 2 pixels
|
||||
$layer2 = $c->addStepLineLayer($dataCA['y'], 0x00ff00, "CHIFFRE D'AFFAIRES");
|
||||
$layer2->setXData($dataCA['x']);
|
||||
$layer2->setLineWidth(2);
|
||||
|
||||
// Add a black (000000) step line layer style dash to the chart and set the line width to 2 pixels
|
||||
$layer3 = $c->addStepLineLayer($dataEBE['y'], $c->dashLineColor(0x000000, DashLine), "EXCEDENT BRUT D'EXPLOITATION");
|
||||
$layer3->setXData($dataEBE['x']);
|
||||
$layer3->setLineWidth(2);
|
||||
|
||||
# If the FR line gets above the BFR line, color to area between the lines red (ff0000)
|
||||
$c->addInterLineLayer($layer0->getLine(0), $layer1->getLine(0), 0xff0000, Transparent);
|
||||
|
||||
# If the FR line gets below the lower BFR line, color to area between the lines light green (8099ff99)
|
||||
$c->addInterLineLayer($layer0->getLine(0), $layer1->getLine(0), Transparent, 0x8044ff44);
|
||||
|
||||
if($c->makeChart($this->path.$file) === TRUE){
|
||||
$return = $this->path.$file;
|
||||
}else{
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Génére l'histogramme flux de trésorerie
|
||||
* @param array $labels
|
||||
* @param array $data
|
||||
* @param string $typeBilan
|
||||
* @return boolean|string
|
||||
*/
|
||||
function flux($labels, $data, $typeBilan)
|
||||
{
|
||||
$couleur = array(0xff8080, 0x80ff80, 0x8080ff);
|
||||
$file = 'flux-'.$this->siret.'-'.$this->id.'-'.$typeBilan.'.png';
|
||||
$cache = new Cache();
|
||||
|
||||
if( $cache->exist($this->path.$file) ){
|
||||
$return = $this->path.$file;
|
||||
} else {
|
||||
if (count($data)<=1) {
|
||||
$return = 0;
|
||||
} else {
|
||||
|
||||
$c = new XYChart(600, 300);
|
||||
$c->setPlotArea(100, 70, 300, 200);
|
||||
$legendObj = $c->addLegend(100, 20, false, "times.ttf", 9);
|
||||
$legendObj->setBackground(Transparent);
|
||||
$layer = $c->addBarLayer2(Stack);
|
||||
$layer->setBorderColor(Transparent, softLighting(Left));
|
||||
$c->xAxis->setLabels($labels);
|
||||
$cptCouleur = 0;
|
||||
foreach ( $data as $d ) {
|
||||
$layer->addDataSet($d['values'], $couleur[$cptCouleur], $d['titre']);
|
||||
$cptCouleur++;
|
||||
}
|
||||
$layer->setBarGap(0.2, 0);
|
||||
$c->yAxis->setAutoScale(0.2);
|
||||
if( $c->makeChart($this->path.$file) === TRUE ){
|
||||
$return = $file;
|
||||
}
|
||||
else{ $return = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
}
|
23
library/Scores/Mobile/Detect.php
Normal file
23
library/Scores/Mobile/Detect.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
class Scores_Mobile_Detect
|
||||
{
|
||||
public function isMobile()
|
||||
{
|
||||
if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE']))
|
||||
return true;
|
||||
|
||||
if (isset ($_SERVER['HTTP_USER_AGENT']))
|
||||
{
|
||||
if (strpos ($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false)
|
||||
return true;
|
||||
|
||||
if (strpos ($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (preg_match('#Android|BlackBerry|Cellphone|iPhone|iPod|hiptop|HTC|MIDP-2\.|MMEF20|MOT-V|NetFront|Newt|Nintendo Wii|Nintendo DS|Nitro|Nokia|Opera Mobi|Palm|PlayStation Portable|PSP|portalmmm|SonyEricsson|Symbian|UP.Browser|UP.Link|webOS|Windows CE|WinWAP|YahooSeeker/M1A1-R2D2|LGE VX|Maemo|phone)#', $_SERVER['HTTP_USER_AGENT']))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
@ -184,8 +184,6 @@ class Scores_Partner_Report
|
||||
|
||||
//Ratios
|
||||
$ratio = '';
|
||||
require_once 'Finance/RatiosData.php';
|
||||
require_once 'Finance/RatiosGraph.php';
|
||||
|
||||
$this->data->Ratios->siret = $infos->Identite->siret;
|
||||
$this->data->Ratios->id = $infos->Identite->id;
|
||||
@ -280,7 +278,7 @@ class Scores_Partner_Report
|
||||
$tabRatio = array( $ratio => $tabRatio[$ratio] );
|
||||
}
|
||||
|
||||
$ratiosData = new RatiosData($infos->Ratios);
|
||||
$ratiosData = new Scores_Finance_Ratios_Data($infos->Ratios);
|
||||
|
||||
$nbBilanN = $ratiosData->getNbBilan('N');
|
||||
$nbBilanC = $ratiosData->getNbBilan('C');
|
||||
@ -292,7 +290,7 @@ class Scores_Partner_Report
|
||||
if ($nbBilanN!=0 || $nbBilanC!=0)
|
||||
{
|
||||
//Génération Graphique evolution
|
||||
$ratiosGraph = new RatiosGraph($this->siret, $this->id);
|
||||
$ratiosGraph = new Scores_Finance_Ratios_Graph($siren);
|
||||
|
||||
$infosAnnee = $ratiosData->getBilansInfo($typeBilan);
|
||||
$annees = array_keys($infosAnnee);
|
||||
@ -331,7 +329,7 @@ class Scores_Partner_Report
|
||||
//Bilans
|
||||
$typeBilan = 'N';
|
||||
$this->data->Bilans->typeBilan = $typeBilan;
|
||||
$ratiosData = new RatiosData($infos->Ratios);
|
||||
$ratiosData = new Scores_Finance_Ratios_Data($infos->Ratios);
|
||||
|
||||
$nbBilanN = $ratiosData->getNbBilan('N');
|
||||
$nbBilanC = $ratiosData->getNbBilan('C');
|
||||
@ -348,7 +346,7 @@ class Scores_Partner_Report
|
||||
$infosAnnee = $ratiosData->getBilansInfo($typeBilan);
|
||||
$annees = array_keys($infosAnnee);
|
||||
|
||||
$ratiosGraph = new RatiosGraph($this->siret, $this->id);
|
||||
$ratiosGraph = new Scores_Finance_Ratios_Graph($siren);
|
||||
|
||||
$tabRatioActif = array(
|
||||
'r59' => array( 'titre' => 'Actif Immobilisé Net', 'class' => 'subhead'),
|
||||
@ -546,7 +544,7 @@ class Scores_Partner_Report
|
||||
}
|
||||
|
||||
//Formattage des données
|
||||
$ratiosData = new RatiosData($infos->Ratios);
|
||||
$ratiosData = new Scores_Finance_Ratios_Data($infos->Ratios);
|
||||
|
||||
$nbBilanN = $ratiosData->getNbBilan('N');
|
||||
$nbBilanC = $ratiosData->getNbBilan('C');
|
||||
@ -567,7 +565,7 @@ class Scores_Partner_Report
|
||||
sort($annees);
|
||||
if (count($annees)>1){
|
||||
//Générer les différents graphiques d'évolutions
|
||||
$ratiosGraph = new RatiosGraph($this->siret, $this->id);
|
||||
$ratiosGraph = new Scores_Finance_Ratios_Graph($siren);
|
||||
$tabGraphEvol = array();
|
||||
foreach($tabRatio as $idRatio => $infoRatio){
|
||||
$dataGraphEvol = array();
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
class Scores_Wkhtmltopdf
|
||||
class Scores_Wkhtml_Pdf
|
||||
{
|
||||
protected $wkhtml;
|
||||
|
2410
library/Vendors/ChartDirector/FinanceChart.php
Normal file
2410
library/Vendors/ChartDirector/FinanceChart.php
Normal file
File diff suppressed because it is too large
Load Diff
5
library/Vendors/ChartDirector/README.TXT
Normal file
5
library/Vendors/ChartDirector/README.TXT
Normal file
@ -0,0 +1,5 @@
|
||||
- Récupérer l'extension de ChartDirector pour PHP et le placer dans le répertoire des extensions
|
||||
- Copier le répertoire "fonts" dans le répertoire des extensions PHP
|
||||
Attention, pour que les fonts soient accessible placer le répertoire des extensions en chmod 755
|
||||
- Placer la clé dans le répertoire des extensions PHP
|
||||
|
3719
library/Vendors/ChartDirector/phpchartdir.php
Normal file
3719
library/Vendors/ChartDirector/phpchartdir.php
Normal file
File diff suppressed because it is too large
Load Diff
622
library/Vendors/ChromePHP/ChromePhp.php
Normal file
622
library/Vendors/ChromePHP/ChromePhp.php
Normal file
@ -0,0 +1,622 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright 2011 Craig Campbell
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Server Side Chrome PHP debugger class
|
||||
*
|
||||
* @package ChromePhp
|
||||
* @author Craig Campbell <iamcraigcampbell@gmail.com>
|
||||
*/
|
||||
class ChromePhp
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const COOKIE_NAME = 'chromephp_log';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const VERSION = '2.2.3';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const LOG_PATH = 'log_path';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const URL_PATH = 'url_path';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const STORE_LOGS = 'store_logs';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const BACKTRACE_LEVEL = 'backtrace_level';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const MAX_TRANSFER = 'max_transfer';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const LOG = 'log';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const WARN = 'warn';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const ERROR = 'error';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const GROUP = 'group';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const INFO = 'info';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const GROUP_END = 'groupEnd';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const GROUP_COLLAPSED = 'groupCollapsed';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
const COOKIE_SIZE_WARNING = 'cookie size of 4kb exceeded! try ChromePhp::useFile() to pull the log data from disk';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $_php_version;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $_timestamp;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_json = array(
|
||||
'version' => self::VERSION,
|
||||
'columns' => array('label', 'log', 'backtrace', 'type'),
|
||||
'rows' => array()
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_backtraces = array();
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $_error_triggered = false;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $_settings = array(
|
||||
self::LOG_PATH => null,
|
||||
self::URL_PATH=> null,
|
||||
self::STORE_LOGS => false,
|
||||
self::BACKTRACE_LEVEL => 1,
|
||||
self::MAX_TRANSFER => 3000
|
||||
);
|
||||
|
||||
/**
|
||||
* @var ChromePhp
|
||||
*/
|
||||
protected static $_instance;
|
||||
|
||||
/**
|
||||
* Prevent recursion when working with objects referring to each other
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_processed = array();
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*/
|
||||
private function __construct()
|
||||
{
|
||||
$this->_deleteCookie();
|
||||
$this->_php_version = phpversion();
|
||||
$this->_timestamp = $this->_php_version >= 5.1 ? $_SERVER['REQUEST_TIME'] : time();
|
||||
$this->_json['request_uri'] = $_SERVER['REQUEST_URI'];
|
||||
}
|
||||
|
||||
/**
|
||||
* gets instance of this class
|
||||
*
|
||||
* @return ChromePhp
|
||||
*/
|
||||
public static function getInstance()
|
||||
{
|
||||
if (self::$_instance === null) {
|
||||
self::$_instance = new ChromePhp();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* logs a variable to the console
|
||||
*
|
||||
* @param string label
|
||||
* @param mixed value
|
||||
* @param string severity ChromePhp::LOG || ChromePhp::WARN || ChromePhp::ERROR
|
||||
* @return void
|
||||
*/
|
||||
public static function log()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$severity = count($args) == 3 ? array_pop($args) : '';
|
||||
|
||||
// save precious bytes in the cookie
|
||||
if ($severity == self::LOG) {
|
||||
$severity = '';
|
||||
}
|
||||
|
||||
return self::_log($args + array('type' => $severity));
|
||||
}
|
||||
|
||||
/**
|
||||
* logs a warning to the console
|
||||
*
|
||||
* @param string label
|
||||
* @param mixed value
|
||||
* @return void
|
||||
*/
|
||||
public static function warn()
|
||||
{
|
||||
return self::_log(func_get_args() + array('type' => self::WARN));
|
||||
}
|
||||
|
||||
/**
|
||||
* logs an error to the console
|
||||
*
|
||||
* @param string label
|
||||
* @param mixed value
|
||||
* @return void
|
||||
*/
|
||||
public static function error()
|
||||
{
|
||||
return self::_log(func_get_args() + array('type' => self::ERROR));
|
||||
}
|
||||
|
||||
/**
|
||||
* sends a group log
|
||||
*
|
||||
* @param string value
|
||||
*/
|
||||
public static function group()
|
||||
{
|
||||
return self::_log(func_get_args() + array('type' => self::GROUP));
|
||||
}
|
||||
|
||||
/**
|
||||
* sends an info log
|
||||
*
|
||||
* @param string value
|
||||
*/
|
||||
public static function info()
|
||||
{
|
||||
return self::_log(func_get_args() + array('type' => self::INFO));
|
||||
}
|
||||
|
||||
/**
|
||||
* sends a collapsed group log
|
||||
*
|
||||
* @param string value
|
||||
*/
|
||||
public static function groupCollapsed()
|
||||
{
|
||||
return self::_log(func_get_args() + array('type' => self::GROUP_COLLAPSED));
|
||||
}
|
||||
|
||||
/**
|
||||
* ends a group log
|
||||
*
|
||||
* @param string value
|
||||
*/
|
||||
public static function groupEnd()
|
||||
{
|
||||
return self::_log(func_get_args() + array('type' => self::GROUP_END));
|
||||
}
|
||||
|
||||
/**
|
||||
* internal logging call
|
||||
*
|
||||
* @param string $type
|
||||
* @return void
|
||||
*/
|
||||
protected static function _log(array $args)
|
||||
{
|
||||
$type = $args['type'];
|
||||
unset($args['type']);
|
||||
|
||||
// nothing passed in, don't do anything
|
||||
if (count($args) == 0 && $type != self::GROUP_END) {
|
||||
return;
|
||||
}
|
||||
|
||||
// default to single
|
||||
$label = null;
|
||||
$value = isset($args[0]) ? $args[0] : '';
|
||||
|
||||
$logger = self::getInstance();
|
||||
|
||||
if ($logger->_error_triggered) {
|
||||
return;
|
||||
}
|
||||
|
||||
// if there are two values passed in then the first one is the label
|
||||
if (count($args) == 2) {
|
||||
$label = $args[0];
|
||||
$value = $args[1];
|
||||
}
|
||||
|
||||
$logger->_processed = array();
|
||||
$value = $logger->_convert($value);
|
||||
|
||||
$backtrace = debug_backtrace(false);
|
||||
$level = $logger->getSetting(self::BACKTRACE_LEVEL);
|
||||
|
||||
$backtrace_message = 'unknown';
|
||||
if (isset($backtrace[$level]['file']) && isset($backtrace[$level]['line'])) {
|
||||
$backtrace_message = $backtrace[$level]['file'] . ' : ' . $backtrace[$level]['line'];
|
||||
}
|
||||
|
||||
$logger->_addRow($label, $value, $backtrace_message, $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* converts an object to a better format for logging
|
||||
*
|
||||
* @param Object
|
||||
* @return array
|
||||
*/
|
||||
protected function _convert($object)
|
||||
{
|
||||
// if this isn't an object then just return it
|
||||
if (!is_object($object)) {
|
||||
return $object;
|
||||
}
|
||||
|
||||
//Mark this object as processed so we don't convert it twice and it
|
||||
//Also avoid recursion when objects refer to each other
|
||||
$this->_processed[] = $object;
|
||||
|
||||
$object_as_array = array();
|
||||
|
||||
// first add the class name
|
||||
$object_as_array['class'] = get_class($object);
|
||||
|
||||
// loop through object vars
|
||||
$object_vars = get_object_vars($object);
|
||||
foreach ($object_vars as $key => $value) {
|
||||
|
||||
// same instance as parent object
|
||||
if ($value === $object || in_array($value, $this->_processed, true)) {
|
||||
$value = 'recursion - parent object [' . get_class($value) . ']';
|
||||
}
|
||||
$object_as_array[$key] = $this->_convert($value);
|
||||
}
|
||||
|
||||
$reflection = new ReflectionClass($object);
|
||||
|
||||
// loop through the properties and add those
|
||||
foreach ($reflection->getProperties() as $property) {
|
||||
|
||||
// if one of these properties was already added above then ignore it
|
||||
if (array_key_exists($property->getName(), $object_vars)) {
|
||||
continue;
|
||||
}
|
||||
$type = $this->_getPropertyKey($property);
|
||||
|
||||
if ($this->_php_version >= 5.3) {
|
||||
$property->setAccessible(true);
|
||||
}
|
||||
|
||||
try {
|
||||
$value = $property->getValue($object);
|
||||
} catch (ReflectionException $e) {
|
||||
$value = 'only PHP 5.3 can access private/protected properties';
|
||||
}
|
||||
|
||||
// same instance as parent object
|
||||
if ($value === $object || in_array($value, $this->_processed, true)) {
|
||||
$value = 'recursion - parent object [' . get_class($value) . ']';
|
||||
}
|
||||
|
||||
$object_as_array[$type] = $this->_convert($value);
|
||||
}
|
||||
return $object_as_array;
|
||||
}
|
||||
|
||||
/**
|
||||
* takes a reflection property and returns a nicely formatted key of the property name
|
||||
*
|
||||
* @param ReflectionProperty
|
||||
* @return string
|
||||
*/
|
||||
protected function _getPropertyKey(ReflectionProperty $property)
|
||||
{
|
||||
$static = $property->isStatic() ? ' static' : '';
|
||||
if ($property->isPublic()) {
|
||||
return 'public' . $static . ' ' . $property->getName();
|
||||
}
|
||||
|
||||
if ($property->isProtected()) {
|
||||
return 'protected' . $static . ' ' . $property->getName();
|
||||
}
|
||||
|
||||
if ($property->isPrivate()) {
|
||||
return 'private' . $static . ' ' . $property->getName();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a value to the cookie
|
||||
*
|
||||
* @var mixed
|
||||
* @return void
|
||||
*/
|
||||
protected function _addRow($label, $log, $backtrace, $type)
|
||||
{
|
||||
// if this is logged on the same line for example in a loop, set it to null to save space
|
||||
if (in_array($backtrace, $this->_backtraces)) {
|
||||
$backtrace = null;
|
||||
}
|
||||
|
||||
if ($backtrace !== null) {
|
||||
$this->_backtraces[] = $backtrace;
|
||||
}
|
||||
|
||||
$this->_clearRows();
|
||||
$row = array($label, $log, $backtrace, $type);
|
||||
|
||||
// if we are in cookie mode and the row won't fit then don't add it
|
||||
if ($this->getSetting(self::LOG_PATH) === null && !$this->_willFit($row)) {
|
||||
return $this->_cookieMonster();
|
||||
}
|
||||
|
||||
$this->_json['rows'][] = $row;
|
||||
$this->_writeCookie();
|
||||
}
|
||||
|
||||
/**
|
||||
* clears existing rows in special cases
|
||||
*
|
||||
* for ajax requests chrome will be listening for cookie changes
|
||||
* this means we can send the cookie data one row at a time as it comes in
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function _clearRows()
|
||||
{
|
||||
// if we are in file mode we want the file to have all the log data
|
||||
if ($this->getSetting(self::LOG_PATH) !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// X-Requested-With header not present or not equal to XMLHttpRequest
|
||||
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->_json['rows'] = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* determines if this row will fit in the cookie
|
||||
*
|
||||
* @param array $row
|
||||
* @return bool
|
||||
*/
|
||||
protected function _willFit($row)
|
||||
{
|
||||
$json = $this->_json;
|
||||
$json['rows'][] = $row;
|
||||
|
||||
// if we don't have multibyte string length available just use regular string length
|
||||
// this doesn't have to be perfect, just want to prevent sending more data
|
||||
// than chrome or apache can handle in a cookie
|
||||
$encoded_string = $this->_encode($json);
|
||||
$size = function_exists('mb_strlen') ? mb_strlen($encoded_string) : strlen($encoded_string);
|
||||
|
||||
// if the size is greater than the max transfer size
|
||||
if ($size > $this->getSetting(self::MAX_TRANSFER)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* writes the cookie
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function _writeCookie()
|
||||
{
|
||||
// if we are going to use a file then use that
|
||||
// here we only want to json_encode
|
||||
if ($this->getSetting(self::LOG_PATH) !== null) {
|
||||
return $this->_writeToFile(json_encode($this->_json));
|
||||
}
|
||||
|
||||
return $this->_setCookie($this->_json);
|
||||
}
|
||||
|
||||
/**
|
||||
* deletes the main cookie
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function _deleteCookie()
|
||||
{
|
||||
return setcookie(self::COOKIE_NAME, null, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* encodes the data to be sent along with the request
|
||||
*
|
||||
* @param array $data
|
||||
* @return string
|
||||
*/
|
||||
protected function _encode($data)
|
||||
{
|
||||
return base64_encode(utf8_encode(json_encode($data)));
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the main cookie
|
||||
*
|
||||
* @param array
|
||||
* @return bool
|
||||
*/
|
||||
protected function _setCookie($data)
|
||||
{
|
||||
return setcookie(self::COOKIE_NAME, $this->_encode($data), time() + 30);
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a setting
|
||||
*
|
||||
* @param string key
|
||||
* @param mixed value
|
||||
* @return void
|
||||
*/
|
||||
public function addSetting($key, $value)
|
||||
{
|
||||
$this->_settings[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* add ability to set multiple settings in one call
|
||||
*
|
||||
* @param array $settings
|
||||
* @return void
|
||||
*/
|
||||
public function addSettings(array $settings)
|
||||
{
|
||||
foreach ($settings as $key => $value) {
|
||||
$this->addSetting($key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gets a setting
|
||||
*
|
||||
* @param string key
|
||||
* @return mixed
|
||||
*/
|
||||
public function getSetting($key)
|
||||
{
|
||||
if (!isset($this->_settings[$key])) {
|
||||
return null;
|
||||
}
|
||||
return $this->_settings[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* this will allow you to specify a path on disk and a uri to access a static file that can store json
|
||||
*
|
||||
* this allows you to log data that is more than 4k
|
||||
*
|
||||
* @param string path to directory on disk to keep log files
|
||||
* @param string url path to url to access the files
|
||||
*/
|
||||
public static function useFile($path, $url)
|
||||
{
|
||||
$logger = self::getInstance();
|
||||
$logger->addSetting(self::LOG_PATH, rtrim($path, '/'));
|
||||
$logger->addSetting(self::URL_PATH, rtrim($url, '/'));
|
||||
}
|
||||
|
||||
/**
|
||||
* handles cases when there is too much data
|
||||
*
|
||||
* @param string
|
||||
* @return void
|
||||
*/
|
||||
protected function _cookieMonster()
|
||||
{
|
||||
$this->_error_triggered = true;
|
||||
|
||||
$this->_json['rows'][] = array(null, self::COOKIE_SIZE_WARNING, 'ChromePhp', self::WARN);
|
||||
|
||||
return $this->_writeCookie();
|
||||
}
|
||||
|
||||
/**
|
||||
* writes data to a file
|
||||
*
|
||||
* @param string
|
||||
* @return void
|
||||
*/
|
||||
protected function _writeToFile($json)
|
||||
{
|
||||
// if the log path is not setup then create it
|
||||
if (!is_dir($this->getSetting(self::LOG_PATH))) {
|
||||
mkdir($this->getSetting(self::LOG_PATH));
|
||||
}
|
||||
|
||||
$file_name = 'last_run.json';
|
||||
if ($this->getSetting(self::STORE_LOGS)) {
|
||||
$file_name = 'run_' . $this->_timestamp . '.json';
|
||||
}
|
||||
|
||||
file_put_contents($this->getSetting(self::LOG_PATH) . '/' . $file_name, $json);
|
||||
|
||||
$data = array(
|
||||
'uri' => $this->getSetting(self::URL_PATH) . '/' . $file_name,
|
||||
'request_uri' => $_SERVER['REQUEST_URI'],
|
||||
'time' => $this->_timestamp,
|
||||
'version' => self::VERSION
|
||||
);
|
||||
|
||||
return $this->_setCookie($data);
|
||||
}
|
||||
}
|
||||
?>
|
1390
library/Vendors/GoogleMapAPI/GoogleMapAPI.class.php
Normal file
1390
library/Vendors/GoogleMapAPI/GoogleMapAPI.class.php
Normal file
File diff suppressed because it is too large
Load Diff
104
library/Vendors/fpdi/filters/FilterASCII85.php
Normal file
104
library/Vendors/fpdi/filters/FilterASCII85.php
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
if (!defined('ORD_z'))
|
||||
define('ORD_z',ord('z'));
|
||||
if (!defined('ORD_exclmark'))
|
||||
define('ORD_exclmark', ord('!'));
|
||||
if (!defined('ORD_u'))
|
||||
define('ORD_u', ord('u'));
|
||||
if (!defined('ORD_tilde'))
|
||||
define('ORD_tilde', ord('~'));
|
||||
|
||||
$__tmp = version_compare(phpversion(), "5") == -1 ? array('FilterASCII85') : array('FilterASCII85', false);
|
||||
if (!call_user_func_array('class_exists', $__tmp)) {
|
||||
|
||||
class FilterASCII85 {
|
||||
|
||||
function error($msg) {
|
||||
die($msg);
|
||||
}
|
||||
|
||||
function decode($in) {
|
||||
$out = '';
|
||||
$state = 0;
|
||||
$chn = null;
|
||||
|
||||
$l = strlen($in);
|
||||
|
||||
for ($k = 0; $k < $l; ++$k) {
|
||||
$ch = ord($in[$k]) & 0xff;
|
||||
|
||||
if ($ch == ORD_tilde) {
|
||||
break;
|
||||
}
|
||||
if (preg_match('/^\s$/',chr($ch))) {
|
||||
continue;
|
||||
}
|
||||
if ($ch == ORD_z && $state == 0) {
|
||||
$out .= chr(0).chr(0).chr(0).chr(0);
|
||||
continue;
|
||||
}
|
||||
if ($ch < ORD_exclmark || $ch > ORD_u) {
|
||||
return $this->error('Illegal character in ASCII85Decode.');
|
||||
}
|
||||
|
||||
$chn[$state++] = $ch - ORD_exclmark;
|
||||
|
||||
if ($state == 5) {
|
||||
$state = 0;
|
||||
$r = 0;
|
||||
for ($j = 0; $j < 5; ++$j)
|
||||
$r = $r * 85 + $chn[$j];
|
||||
$out .= chr($r >> 24);
|
||||
$out .= chr($r >> 16);
|
||||
$out .= chr($r >> 8);
|
||||
$out .= chr($r);
|
||||
}
|
||||
}
|
||||
$r = 0;
|
||||
|
||||
if ($state == 1)
|
||||
return $this->error('Illegal length in ASCII85Decode.');
|
||||
if ($state == 2) {
|
||||
$r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
|
||||
$out .= chr($r >> 24);
|
||||
}
|
||||
else if ($state == 3) {
|
||||
$r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85;
|
||||
$out .= chr($r >> 24);
|
||||
$out .= chr($r >> 16);
|
||||
}
|
||||
else if ($state == 4) {
|
||||
$r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ;
|
||||
$out .= chr($r >> 24);
|
||||
$out .= chr($r >> 16);
|
||||
$out .= chr($r >> 8);
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
function encode($in) {
|
||||
return $this->error("ASCII85 encoding not implemented.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($__tmp);
|
33
library/Vendors/fpdi/filters/FilterASCII85_FPDI.php
Normal file
33
library/Vendors/fpdi/filters/FilterASCII85_FPDI.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
require_once('FilterASCII85.php');
|
||||
|
||||
class FilterASCII85_FPDI extends FilterASCII85 {
|
||||
|
||||
var $fpdi;
|
||||
|
||||
function FPDI_FilterASCII85(&$fpdi) {
|
||||
$this->fpdi =& $fpdi;
|
||||
}
|
||||
|
||||
function error($msg) {
|
||||
$this->fpdi->error($msg);
|
||||
}
|
||||
}
|
160
library/Vendors/fpdi/filters/FilterLZW.php
Normal file
160
library/Vendors/fpdi/filters/FilterLZW.php
Normal file
@ -0,0 +1,160 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
$__tmp = version_compare(phpversion(), "5") == -1 ? array('FilterLZW') : array('FilterLZW', false);
|
||||
if (!call_user_func_array('class_exists', $__tmp)) {
|
||||
|
||||
class FilterLZW {
|
||||
|
||||
var $sTable = array();
|
||||
var $data = null;
|
||||
var $dataLength = 0;
|
||||
var $tIdx;
|
||||
var $bitsToGet = 9;
|
||||
var $bytePointer;
|
||||
var $bitPointer;
|
||||
var $nextData = 0;
|
||||
var $nextBits = 0;
|
||||
var $andTable = array(511, 1023, 2047, 4095);
|
||||
|
||||
function error($msg) {
|
||||
die($msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to decode LZW compressed data.
|
||||
*
|
||||
* @param string data The compressed data.
|
||||
*/
|
||||
function decode($data) {
|
||||
|
||||
if($data[0] == 0x00 && $data[1] == 0x01) {
|
||||
$this->error('LZW flavour not supported.');
|
||||
}
|
||||
|
||||
$this->initsTable();
|
||||
|
||||
$this->data = $data;
|
||||
$this->dataLength = strlen($data);
|
||||
|
||||
// Initialize pointers
|
||||
$this->bytePointer = 0;
|
||||
$this->bitPointer = 0;
|
||||
|
||||
$this->nextData = 0;
|
||||
$this->nextBits = 0;
|
||||
|
||||
$oldCode = 0;
|
||||
|
||||
$string = '';
|
||||
$uncompData = '';
|
||||
|
||||
while (($code = $this->getNextCode()) != 257) {
|
||||
if ($code == 256) {
|
||||
$this->initsTable();
|
||||
$code = $this->getNextCode();
|
||||
|
||||
if ($code == 257) {
|
||||
break;
|
||||
}
|
||||
|
||||
$uncompData .= $this->sTable[$code];
|
||||
$oldCode = $code;
|
||||
|
||||
} else {
|
||||
|
||||
if ($code < $this->tIdx) {
|
||||
$string = $this->sTable[$code];
|
||||
$uncompData .= $string;
|
||||
|
||||
$this->addStringToTable($this->sTable[$oldCode], $string[0]);
|
||||
$oldCode = $code;
|
||||
} else {
|
||||
$string = $this->sTable[$oldCode];
|
||||
$string = $string.$string[0];
|
||||
$uncompData .= $string;
|
||||
|
||||
$this->addStringToTable($string);
|
||||
$oldCode = $code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $uncompData;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialize the string table.
|
||||
*/
|
||||
function initsTable() {
|
||||
$this->sTable = array();
|
||||
|
||||
for ($i = 0; $i < 256; $i++)
|
||||
$this->sTable[$i] = chr($i);
|
||||
|
||||
$this->tIdx = 258;
|
||||
$this->bitsToGet = 9;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new string to the string table.
|
||||
*/
|
||||
function addStringToTable ($oldString, $newString='') {
|
||||
$string = $oldString.$newString;
|
||||
|
||||
// Add this new String to the table
|
||||
$this->sTable[$this->tIdx++] = $string;
|
||||
|
||||
if ($this->tIdx == 511) {
|
||||
$this->bitsToGet = 10;
|
||||
} else if ($this->tIdx == 1023) {
|
||||
$this->bitsToGet = 11;
|
||||
} else if ($this->tIdx == 2047) {
|
||||
$this->bitsToGet = 12;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns the next 9, 10, 11 or 12 bits
|
||||
function getNextCode() {
|
||||
if ($this->bytePointer == $this->dataLength) {
|
||||
return 257;
|
||||
}
|
||||
|
||||
$this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
|
||||
$this->nextBits += 8;
|
||||
|
||||
if ($this->nextBits < $this->bitsToGet) {
|
||||
$this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
|
||||
$this->nextBits += 8;
|
||||
}
|
||||
|
||||
$code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9];
|
||||
$this->nextBits -= $this->bitsToGet;
|
||||
|
||||
return $code;
|
||||
}
|
||||
|
||||
function encode($in) {
|
||||
$this->error("LZW encoding not implemented.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($__tmp);
|
33
library/Vendors/fpdi/filters/FilterLZW_FPDI.php
Normal file
33
library/Vendors/fpdi/filters/FilterLZW_FPDI.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
require_once('FilterLZW.php');
|
||||
|
||||
class FilterLZW_FPDI extends FilterLZW {
|
||||
|
||||
var $fpdi;
|
||||
|
||||
function FilterLZW_FPDI(&$fpdi) {
|
||||
$this->fpdi =& $fpdi;
|
||||
}
|
||||
|
||||
function error($msg) {
|
||||
$this->fpdi->error($msg);
|
||||
}
|
||||
}
|
409
library/Vendors/fpdi/fpdf_tpl.php
Normal file
409
library/Vendors/fpdi/fpdf_tpl.php
Normal file
@ -0,0 +1,409 @@
|
||||
<?php
|
||||
//
|
||||
// FPDF_TPL - Version 1.1.4
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
class FPDF_TPL extends FPDF {
|
||||
/**
|
||||
* Array of Tpl-Data
|
||||
* @var array
|
||||
*/
|
||||
var $tpls = array();
|
||||
|
||||
/**
|
||||
* Current Template-ID
|
||||
* @var int
|
||||
*/
|
||||
var $tpl = 0;
|
||||
|
||||
/**
|
||||
* "In Template"-Flag
|
||||
* @var boolean
|
||||
*/
|
||||
var $_intpl = false;
|
||||
|
||||
/**
|
||||
* Nameprefix of Templates used in Resources-Dictonary
|
||||
* @var string A String defining the Prefix used as Template-Object-Names. Have to beginn with an /
|
||||
*/
|
||||
var $tplprefix = "/TPL";
|
||||
|
||||
/**
|
||||
* Resources used By Templates and Pages
|
||||
* @var array
|
||||
*/
|
||||
var $_res = array();
|
||||
|
||||
/**
|
||||
* Last used Template data
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $lastUsedTemplateData = array();
|
||||
|
||||
/**
|
||||
* Start a Template
|
||||
*
|
||||
* This method starts a template. You can give own coordinates to build an own sized
|
||||
* Template. Pay attention, that the margins are adapted to the new templatesize.
|
||||
* If you want to write outside the template, for example to build a clipped Template,
|
||||
* you have to set the Margins and "Cursor"-Position manual after beginTemplate-Call.
|
||||
*
|
||||
* If no parameter is given, the template uses the current page-size.
|
||||
* The Method returns an ID of the current Template. This ID is used later for using this template.
|
||||
* Warning: A created Template is used in PDF at all events. Still if you don't use it after creation!
|
||||
*
|
||||
* @param int $x The x-coordinate given in user-unit
|
||||
* @param int $y The y-coordinate given in user-unit
|
||||
* @param int $w The width given in user-unit
|
||||
* @param int $h The height given in user-unit
|
||||
* @return int The ID of new created Template
|
||||
*/
|
||||
function beginTemplate($x=null, $y=null, $w=null, $h=null) {
|
||||
if ($this->page <= 0)
|
||||
$this->error("You have to add a page to fpdf first!");
|
||||
|
||||
if ($x == null)
|
||||
$x = 0;
|
||||
if ($y == null)
|
||||
$y = 0;
|
||||
if ($w == null)
|
||||
$w = $this->w;
|
||||
if ($h == null)
|
||||
$h = $this->h;
|
||||
|
||||
// Save settings
|
||||
$this->tpl++;
|
||||
$tpl =& $this->tpls[$this->tpl];
|
||||
$tpl = array(
|
||||
'o_x' => $this->x,
|
||||
'o_y' => $this->y,
|
||||
'o_AutoPageBreak' => $this->AutoPageBreak,
|
||||
'o_bMargin' => $this->bMargin,
|
||||
'o_tMargin' => $this->tMargin,
|
||||
'o_lMargin' => $this->lMargin,
|
||||
'o_rMargin' => $this->rMargin,
|
||||
'o_h' => $this->h,
|
||||
'o_w' => $this->w,
|
||||
'buffer' => '',
|
||||
'x' => $x,
|
||||
'y' => $y,
|
||||
'w' => $w,
|
||||
'h' => $h
|
||||
);
|
||||
|
||||
$this->SetAutoPageBreak(false);
|
||||
|
||||
// Define own high and width to calculate possitions correct
|
||||
$this->h = $h;
|
||||
$this->w = $w;
|
||||
|
||||
$this->_intpl = true;
|
||||
$this->SetXY($x+$this->lMargin, $y+$this->tMargin);
|
||||
$this->SetRightMargin($this->w-$w+$this->rMargin);
|
||||
|
||||
return $this->tpl;
|
||||
}
|
||||
|
||||
/**
|
||||
* End Template
|
||||
*
|
||||
* This method ends a template and reset initiated variables on beginTemplate.
|
||||
*
|
||||
* @return mixed If a template is opened, the ID is returned. If not a false is returned.
|
||||
*/
|
||||
function endTemplate() {
|
||||
if ($this->_intpl) {
|
||||
$this->_intpl = false;
|
||||
$tpl =& $this->tpls[$this->tpl];
|
||||
$this->SetXY($tpl['o_x'], $tpl['o_y']);
|
||||
$this->tMargin = $tpl['o_tMargin'];
|
||||
$this->lMargin = $tpl['o_lMargin'];
|
||||
$this->rMargin = $tpl['o_rMargin'];
|
||||
$this->h = $tpl['o_h'];
|
||||
$this->w = $tpl['o_w'];
|
||||
$this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']);
|
||||
|
||||
return $this->tpl;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use a Template in current Page or other Template
|
||||
*
|
||||
* You can use a template in a page or in another template.
|
||||
* You can give the used template a new size like you use the Image()-method.
|
||||
* All parameters are optional. The width or height is calculated automaticaly
|
||||
* if one is given. If no parameter is given the origin size as defined in
|
||||
* beginTemplate() is used.
|
||||
* The calculated or used width and height are returned as an array.
|
||||
*
|
||||
* @param int $tplidx A valid template-Id
|
||||
* @param int $_x The x-position
|
||||
* @param int $_y The y-position
|
||||
* @param int $_w The new width of the template
|
||||
* @param int $_h The new height of the template
|
||||
* @retrun array The height and width of the template
|
||||
*/
|
||||
function useTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) {
|
||||
if ($this->page <= 0)
|
||||
$this->error("You have to add a page to fpdf first!");
|
||||
|
||||
if (!isset($this->tpls[$tplidx]))
|
||||
$this->error("Template does not exist!");
|
||||
|
||||
if ($this->_intpl) {
|
||||
$this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx];
|
||||
}
|
||||
|
||||
$tpl =& $this->tpls[$tplidx];
|
||||
$w = $tpl['w'];
|
||||
$h = $tpl['h'];
|
||||
|
||||
if ($_x == null)
|
||||
$_x = 0;
|
||||
if ($_y == null)
|
||||
$_y = 0;
|
||||
|
||||
$_x += $tpl['x'];
|
||||
$_y += $tpl['y'];
|
||||
|
||||
$wh = $this->getTemplateSize($tplidx, $_w, $_h);
|
||||
$_w = $wh['w'];
|
||||
$_h = $wh['h'];
|
||||
|
||||
$tData = array(
|
||||
'x' => $this->x,
|
||||
'y' => $this->y,
|
||||
'w' => $_w,
|
||||
'h' => $_h,
|
||||
'scaleX' => ($_w/$w),
|
||||
'scaleY' => ($_h/$h),
|
||||
'tx' => $_x,
|
||||
'ty' => ($this->h-$_y-$_h),
|
||||
'lty' => ($this->h-$_y-$_h) - ($this->h-$h) * ($_h/$h)
|
||||
);
|
||||
|
||||
$this->_out(sprintf("q %.4F 0 0 %.4F %.4F %.4F cm", $tData['scaleX'], $tData['scaleY'], $tData['tx']*$this->k, $tData['ty']*$this->k)); // Translate
|
||||
$this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx));
|
||||
|
||||
$this->lastUsedTemplateData = $tData;
|
||||
|
||||
return array("w" => $_w, "h" => $_h);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get The calculated Size of a Template
|
||||
*
|
||||
* If one size is given, this method calculates the other one.
|
||||
*
|
||||
* @param int $tplidx A valid template-Id
|
||||
* @param int $_w The width of the template
|
||||
* @param int $_h The height of the template
|
||||
* @return array The height and width of the template
|
||||
*/
|
||||
function getTemplateSize($tplidx, $_w=0, $_h=0) {
|
||||
if (!$this->tpls[$tplidx])
|
||||
return false;
|
||||
|
||||
$tpl =& $this->tpls[$tplidx];
|
||||
$w = $tpl['w'];
|
||||
$h = $tpl['h'];
|
||||
|
||||
if ($_w == 0 and $_h == 0) {
|
||||
$_w = $w;
|
||||
$_h = $h;
|
||||
}
|
||||
|
||||
if($_w==0)
|
||||
$_w = $_h*$w/$h;
|
||||
if($_h==0)
|
||||
$_h = $_w*$h/$w;
|
||||
|
||||
return array("w" => $_w, "h" => $_h);
|
||||
}
|
||||
|
||||
/**
|
||||
* See FPDF/TCPDF-Documentation ;-)
|
||||
*/
|
||||
function SetFont($family, $style='', $size=0, $fontfile='') {
|
||||
if (!is_subclass_of($this, 'TCPDF') && func_num_args() > 3) {
|
||||
$this->Error('More than 3 arguments for the SetFont method are only available in TCPDF.');
|
||||
}
|
||||
/**
|
||||
* force the resetting of font changes in a template
|
||||
*/
|
||||
if ($this->_intpl)
|
||||
$this->FontFamily = '';
|
||||
|
||||
parent::SetFont($family, $style, $size, $fontfile);
|
||||
|
||||
$fontkey = $this->FontFamily.$this->FontStyle;
|
||||
|
||||
if ($this->_intpl) {
|
||||
$this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey];
|
||||
} else {
|
||||
$this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* See FPDF/TCPDF-Documentation ;-)
|
||||
*/
|
||||
function Image($file, $x, $y, $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0, $fitbox = false, $hidden = false) {
|
||||
if (!is_subclass_of($this, 'TCPDF') && func_num_args() > 7) {
|
||||
$this->Error('More than 7 arguments for the Image method are only available in TCPDF.');
|
||||
}
|
||||
|
||||
parent::Image($file, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, $ismask, $imgmask, $border, $fitbox, $hidden);
|
||||
if ($this->_intpl) {
|
||||
$this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file];
|
||||
} else {
|
||||
$this->_res['page'][$this->page]['images'][$file] =& $this->images[$file];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* See FPDF-Documentation ;-)
|
||||
*
|
||||
* AddPage is not available when you're "in" a template.
|
||||
*/
|
||||
function AddPage($orientation='', $format='') {
|
||||
if ($this->_intpl)
|
||||
$this->Error('Adding pages in templates isn\'t possible!');
|
||||
parent::AddPage($orientation, $format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Preserve adding Links in Templates ...won't work
|
||||
*/
|
||||
function Link($x, $y, $w, $h, $link, $spaces=0) {
|
||||
if (!is_subclass_of($this, 'TCPDF') && func_num_args() > 5) {
|
||||
$this->Error('More than 5 arguments for the Image method are only available in TCPDF.');
|
||||
}
|
||||
|
||||
if ($this->_intpl)
|
||||
$this->Error('Using links in templates aren\'t possible!');
|
||||
parent::Link($x, $y, $w, $h, $link, $spaces);
|
||||
}
|
||||
|
||||
function AddLink() {
|
||||
if ($this->_intpl)
|
||||
$this->Error('Adding links in templates aren\'t possible!');
|
||||
return parent::AddLink();
|
||||
}
|
||||
|
||||
function SetLink($link, $y=0, $page=-1) {
|
||||
if ($this->_intpl)
|
||||
$this->Error('Setting links in templates aren\'t possible!');
|
||||
parent::SetLink($link, $y, $page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Private Method that writes the form xobjects
|
||||
*/
|
||||
function _putformxobjects() {
|
||||
$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
|
||||
reset($this->tpls);
|
||||
foreach($this->tpls AS $tplidx => $tpl) {
|
||||
|
||||
$p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
|
||||
$this->_newobj();
|
||||
$this->tpls[$tplidx]['n'] = $this->n;
|
||||
$this->_out('<<'.$filter.'/Type /XObject');
|
||||
$this->_out('/Subtype /Form');
|
||||
$this->_out('/FormType 1');
|
||||
$this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]',
|
||||
// llx
|
||||
$tpl['x']*$this->k,
|
||||
// lly
|
||||
-$tpl['y']*$this->k,
|
||||
// urx
|
||||
($tpl['w']+$tpl['x'])*$this->k,
|
||||
// ury
|
||||
($tpl['h']-$tpl['y'])*$this->k
|
||||
));
|
||||
|
||||
if ($tpl['x'] != 0 || $tpl['y'] != 0) {
|
||||
$this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]',
|
||||
-$tpl['x']*$this->k*2, $tpl['y']*$this->k*2
|
||||
));
|
||||
}
|
||||
|
||||
$this->_out('/Resources ');
|
||||
|
||||
$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
|
||||
if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
|
||||
$this->_out('/Font <<');
|
||||
foreach($this->_res['tpl'][$tplidx]['fonts'] as $font)
|
||||
$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
|
||||
$this->_out('>>');
|
||||
}
|
||||
if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) ||
|
||||
isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls']))
|
||||
{
|
||||
$this->_out('/XObject <<');
|
||||
if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) {
|
||||
foreach($this->_res['tpl'][$tplidx]['images'] as $image)
|
||||
$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
|
||||
}
|
||||
if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
|
||||
foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl)
|
||||
$this->_out($this->tplprefix.$i.' '.$tpl['n'].' 0 R');
|
||||
}
|
||||
$this->_out('>>');
|
||||
}
|
||||
$this->_out('>>');
|
||||
|
||||
$this->_out('/Length '.strlen($p).' >>');
|
||||
$this->_putstream($p);
|
||||
$this->_out('endobj');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwritten to add _putformxobjects() after _putimages()
|
||||
*
|
||||
*/
|
||||
function _putimages() {
|
||||
parent::_putimages();
|
||||
$this->_putformxobjects();
|
||||
}
|
||||
|
||||
function _putxobjectdict() {
|
||||
parent::_putxobjectdict();
|
||||
|
||||
if (count($this->tpls)) {
|
||||
foreach($this->tpls as $tplidx => $tpl) {
|
||||
$this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Private Method
|
||||
*/
|
||||
function _out($s) {
|
||||
if ($this->state==2 && $this->_intpl) {
|
||||
$this->tpls[$this->tpl]['buffer'] .= $s."\n";
|
||||
} else {
|
||||
parent::_out($s);
|
||||
}
|
||||
}
|
||||
}
|
504
library/Vendors/fpdi/fpdi.php
Normal file
504
library/Vendors/fpdi/fpdi.php
Normal file
@ -0,0 +1,504 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
define('FPDI_VERSION','1.3.2');
|
||||
|
||||
// Check for TCPDF and remap TCPDF to FPDF
|
||||
$__tmp = version_compare(phpversion(), "5") == -1 ? array('TCPDF') : array('TCPDF', false);
|
||||
if (call_user_func_array('class_exists', $__tmp)) {
|
||||
require_once('fpdi2tcpdf_bridge.php');
|
||||
}
|
||||
unset($__tmp);
|
||||
|
||||
require_once('fpdf_tpl.php');
|
||||
require_once('fpdi_pdf_parser.php');
|
||||
|
||||
|
||||
class FPDI extends FPDF_TPL {
|
||||
/**
|
||||
* Actual filename
|
||||
* @var string
|
||||
*/
|
||||
var $current_filename;
|
||||
|
||||
/**
|
||||
* Parser-Objects
|
||||
* @var array
|
||||
*/
|
||||
var $parsers;
|
||||
|
||||
/**
|
||||
* Current parser
|
||||
* @var object
|
||||
*/
|
||||
var $current_parser;
|
||||
|
||||
/**
|
||||
* object stack
|
||||
* @var array
|
||||
*/
|
||||
var $_obj_stack;
|
||||
|
||||
/**
|
||||
* done object stack
|
||||
* @var array
|
||||
*/
|
||||
var $_don_obj_stack;
|
||||
|
||||
/**
|
||||
* Current Object Id.
|
||||
* @var integer
|
||||
*/
|
||||
var $_current_obj_id;
|
||||
|
||||
/**
|
||||
* The name of the last imported page box
|
||||
* @var string
|
||||
*/
|
||||
var $lastUsedPageBox;
|
||||
|
||||
var $_importedPages = array();
|
||||
|
||||
|
||||
/**
|
||||
* Set a source-file
|
||||
*
|
||||
* @param string $filename a valid filename
|
||||
* @return int number of available pages
|
||||
*/
|
||||
function setSourceFile($filename) {
|
||||
$this->current_filename = $filename;
|
||||
$fn =& $this->current_filename;
|
||||
|
||||
if (!isset($this->parsers[$fn]))
|
||||
$this->parsers[$fn] = new fpdi_pdf_parser($fn, $this);
|
||||
$this->current_parser =& $this->parsers[$fn];
|
||||
|
||||
return $this->parsers[$fn]->getPageCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Import a page
|
||||
*
|
||||
* @param int $pageno pagenumber
|
||||
* @return int Index of imported page - to use with fpdf_tpl::useTemplate()
|
||||
*/
|
||||
function importPage($pageno, $boxName='/CropBox') {
|
||||
if ($this->_intpl) {
|
||||
return $this->error('Please import the desired pages before creating a new template.');
|
||||
}
|
||||
|
||||
$fn =& $this->current_filename;
|
||||
|
||||
// check if page already imported
|
||||
$pageKey = $fn.((int)$pageno).$boxName;
|
||||
if (isset($this->_importedPages[$pageKey]))
|
||||
return $this->_importedPages[$pageKey];
|
||||
|
||||
$parser =& $this->parsers[$fn];
|
||||
$parser->setPageno($pageno);
|
||||
|
||||
if (!in_array($boxName, $parser->availableBoxes))
|
||||
return $this->Error(sprintf('Unknown box: %s', $boxName));
|
||||
$pageboxes = $parser->getPageBoxes($pageno);
|
||||
|
||||
/**
|
||||
* MediaBox
|
||||
* CropBox: Default -> MediaBox
|
||||
* BleedBox: Default -> CropBox
|
||||
* TrimBox: Default -> CropBox
|
||||
* ArtBox: Default -> CropBox
|
||||
*/
|
||||
if (!isset($pageboxes[$boxName]) && ($boxName == '/BleedBox' || $boxName == '/TrimBox' || $boxName == '/ArtBox'))
|
||||
$boxName = '/CropBox';
|
||||
if (!isset($pageboxes[$boxName]) && $boxName == '/CropBox')
|
||||
$boxName = '/MediaBox';
|
||||
|
||||
if (!isset($pageboxes[$boxName]))
|
||||
return false;
|
||||
$this->lastUsedPageBox = $boxName;
|
||||
|
||||
$box = $pageboxes[$boxName];
|
||||
|
||||
$this->tpl++;
|
||||
$this->tpls[$this->tpl] = array();
|
||||
$tpl =& $this->tpls[$this->tpl];
|
||||
$tpl['parser'] =& $parser;
|
||||
$tpl['resources'] = $parser->getPageResources();
|
||||
$tpl['buffer'] = $parser->getContent();
|
||||
$tpl['box'] = $box;
|
||||
|
||||
// To build an array that can be used by PDF_TPL::useTemplate()
|
||||
$this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl], $box);
|
||||
|
||||
// An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects()
|
||||
$tpl['x'] = 0;
|
||||
$tpl['y'] = 0;
|
||||
|
||||
// handle rotated pages
|
||||
$rotation = $parser->getPageRotation($pageno);
|
||||
$tpl['_rotationAngle'] = 0;
|
||||
if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0) {
|
||||
$steps = $angle / 90;
|
||||
|
||||
$_w = $tpl['w'];
|
||||
$_h = $tpl['h'];
|
||||
$tpl['w'] = $steps % 2 == 0 ? $_w : $_h;
|
||||
$tpl['h'] = $steps % 2 == 0 ? $_h : $_w;
|
||||
|
||||
$tpl['_rotationAngle'] = $angle*-1;
|
||||
}
|
||||
|
||||
$this->_importedPages[$pageKey] = $this->tpl;
|
||||
|
||||
return $this->tpl;
|
||||
}
|
||||
|
||||
function getLastUsedPageBox() {
|
||||
return $this->lastUsedPageBox;
|
||||
}
|
||||
|
||||
function useTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0, $adjustPageSize=false) {
|
||||
if ($adjustPageSize == true && is_null($_x) && is_null($_y)) {
|
||||
$size = $this->getTemplateSize($tplidx, $_w, $_h);
|
||||
$format = array($size['w'], $size['h']);
|
||||
if ($format[0]!=$this->CurPageFormat[0] || $format[1]!=$this->CurPageFormat[1]) {
|
||||
$this->w=$format[0];
|
||||
$this->h=$format[1];
|
||||
$this->wPt=$this->w*$this->k;
|
||||
$this->hPt=$this->h*$this->k;
|
||||
$this->PageBreakTrigger=$this->h-$this->bMargin;
|
||||
$this->CurPageFormat=$format;
|
||||
$this->PageSizes[$this->page]=array($this->wPt, $this->hPt);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_out('q 0 J 1 w 0 j 0 G 0 g'); // reset standard values
|
||||
$s = parent::useTemplate($tplidx, $_x, $_y, $_w, $_h);
|
||||
$this->_out('Q');
|
||||
return $s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Private method, that rebuilds all needed objects of source files
|
||||
*/
|
||||
function _putimportedobjects() {
|
||||
if (is_array($this->parsers) && count($this->parsers) > 0) {
|
||||
foreach($this->parsers AS $filename => $p) {
|
||||
$this->current_parser =& $this->parsers[$filename];
|
||||
if (isset($this->_obj_stack[$filename]) && is_array($this->_obj_stack[$filename])) {
|
||||
while(($n = key($this->_obj_stack[$filename])) !== null) {
|
||||
$nObj = $this->current_parser->pdf_resolve_object($this->current_parser->c,$this->_obj_stack[$filename][$n][1]);
|
||||
|
||||
$this->_newobj($this->_obj_stack[$filename][$n][0]);
|
||||
|
||||
if ($nObj[0] == PDF_TYPE_STREAM) {
|
||||
$this->pdf_write_value ($nObj);
|
||||
} else {
|
||||
$this->pdf_write_value ($nObj[1]);
|
||||
}
|
||||
|
||||
$this->_out('endobj');
|
||||
$this->_obj_stack[$filename][$n] = null; // free memory
|
||||
unset($this->_obj_stack[$filename][$n]);
|
||||
reset($this->_obj_stack[$filename]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Private Method that writes the form xobjects
|
||||
*/
|
||||
function _putformxobjects() {
|
||||
$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
|
||||
reset($this->tpls);
|
||||
foreach($this->tpls AS $tplidx => $tpl) {
|
||||
$p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
|
||||
$this->_newobj();
|
||||
$cN = $this->n; // TCPDF/Protection: rem current "n"
|
||||
|
||||
$this->tpls[$tplidx]['n'] = $this->n;
|
||||
$this->_out('<<'.$filter.'/Type /XObject');
|
||||
$this->_out('/Subtype /Form');
|
||||
$this->_out('/FormType 1');
|
||||
|
||||
$this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]',
|
||||
(isset($tpl['box']['llx']) ? $tpl['box']['llx'] : $tpl['x'])*$this->k,
|
||||
(isset($tpl['box']['lly']) ? $tpl['box']['lly'] : -$tpl['y'])*$this->k,
|
||||
(isset($tpl['box']['urx']) ? $tpl['box']['urx'] : $tpl['w'] + $tpl['x'])*$this->k,
|
||||
(isset($tpl['box']['ury']) ? $tpl['box']['ury'] : $tpl['h']-$tpl['y'])*$this->k
|
||||
));
|
||||
|
||||
$c = 1;
|
||||
$s = 0;
|
||||
$tx = 0;
|
||||
$ty = 0;
|
||||
|
||||
if (isset($tpl['box'])) {
|
||||
$tx = -$tpl['box']['llx'];
|
||||
$ty = -$tpl['box']['lly'];
|
||||
|
||||
if ($tpl['_rotationAngle'] <> 0) {
|
||||
$angle = $tpl['_rotationAngle'] * M_PI/180;
|
||||
$c=cos($angle);
|
||||
$s=sin($angle);
|
||||
|
||||
switch($tpl['_rotationAngle']) {
|
||||
case -90:
|
||||
$tx = -$tpl['box']['lly'];
|
||||
$ty = $tpl['box']['urx'];
|
||||
break;
|
||||
case -180:
|
||||
$tx = $tpl['box']['urx'];
|
||||
$ty = $tpl['box']['ury'];
|
||||
break;
|
||||
case -270:
|
||||
$tx = $tpl['box']['ury'];
|
||||
$ty = -$tpl['box']['llx'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if ($tpl['x'] != 0 || $tpl['y'] != 0) {
|
||||
$tx = -$tpl['x']*2;
|
||||
$ty = $tpl['y']*2;
|
||||
}
|
||||
|
||||
$tx *= $this->k;
|
||||
$ty *= $this->k;
|
||||
|
||||
if ($c != 1 || $s != 0 || $tx != 0 || $ty != 0) {
|
||||
$this->_out(sprintf('/Matrix [%.5F %.5F %.5F %.5F %.5F %.5F]',
|
||||
$c, $s, -$s, $c, $tx, $ty
|
||||
));
|
||||
}
|
||||
|
||||
$this->_out('/Resources ');
|
||||
|
||||
if (isset($tpl['resources'])) {
|
||||
$this->current_parser =& $tpl['parser'];
|
||||
$this->pdf_write_value($tpl['resources']); // "n" will be changed
|
||||
} else {
|
||||
$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
|
||||
if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
|
||||
$this->_out('/Font <<');
|
||||
foreach($this->_res['tpl'][$tplidx]['fonts'] as $font)
|
||||
$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
|
||||
$this->_out('>>');
|
||||
}
|
||||
if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) ||
|
||||
isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls']))
|
||||
{
|
||||
$this->_out('/XObject <<');
|
||||
if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) {
|
||||
foreach($this->_res['tpl'][$tplidx]['images'] as $image)
|
||||
$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
|
||||
}
|
||||
if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
|
||||
foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl)
|
||||
$this->_out($this->tplprefix.$i.' '.$tpl['n'].' 0 R');
|
||||
}
|
||||
$this->_out('>>');
|
||||
}
|
||||
$this->_out('>>');
|
||||
}
|
||||
|
||||
$nN = $this->n; // TCPDF: rem new "n"
|
||||
$this->n = $cN; // TCPDF: reset to current "n"
|
||||
$this->_out('/Length '.strlen($p).' >>');
|
||||
$this->_putstream($p);
|
||||
$this->_out('endobj');
|
||||
$this->n = $nN; // TCPDF: reset to new "n"
|
||||
}
|
||||
|
||||
$this->_putimportedobjects();
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewritten to handle existing own defined objects
|
||||
*/
|
||||
function _newobj($obj_id=false,$onlynewobj=false) {
|
||||
if (!$obj_id) {
|
||||
$obj_id = ++$this->n;
|
||||
}
|
||||
|
||||
//Begin a new object
|
||||
if (!$onlynewobj) {
|
||||
$this->offsets[$obj_id] = is_subclass_of($this, 'TCPDF') ? $this->bufferlen : strlen($this->buffer);
|
||||
$this->_out($obj_id.' 0 obj');
|
||||
$this->_current_obj_id = $obj_id; // for later use with encryption
|
||||
}
|
||||
return $obj_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes a value
|
||||
* Needed to rebuild the source document
|
||||
*
|
||||
* @param mixed $value A PDF-Value. Structure of values see cases in this method
|
||||
*/
|
||||
function pdf_write_value(&$value)
|
||||
{
|
||||
if (is_subclass_of($this, 'TCPDF')) {
|
||||
parent::pdf_write_value($value);
|
||||
}
|
||||
|
||||
switch ($value[0]) {
|
||||
|
||||
case PDF_TYPE_TOKEN :
|
||||
$this->_straightOut($value[1] . ' ');
|
||||
break;
|
||||
case PDF_TYPE_NUMERIC :
|
||||
case PDF_TYPE_REAL :
|
||||
if (is_float($value[1]) && $value[1] != 0) {
|
||||
$this->_straightOut(rtrim(rtrim(sprintf('%F', $value[1]), '0'), '.') .' ');
|
||||
} else {
|
||||
$this->_straightOut($value[1] . ' ');
|
||||
}
|
||||
break;
|
||||
|
||||
case PDF_TYPE_ARRAY :
|
||||
|
||||
// An array. Output the proper
|
||||
// structure and move on.
|
||||
|
||||
$this->_straightOut('[');
|
||||
for ($i = 0; $i < count($value[1]); $i++) {
|
||||
$this->pdf_write_value($value[1][$i]);
|
||||
}
|
||||
|
||||
$this->_out(']');
|
||||
break;
|
||||
|
||||
case PDF_TYPE_DICTIONARY :
|
||||
|
||||
// A dictionary.
|
||||
$this->_straightOut('<<');
|
||||
|
||||
reset ($value[1]);
|
||||
|
||||
while (list($k, $v) = each($value[1])) {
|
||||
$this->_straightOut($k . ' ');
|
||||
$this->pdf_write_value($v);
|
||||
}
|
||||
|
||||
$this->_straightOut('>>');
|
||||
break;
|
||||
|
||||
case PDF_TYPE_OBJREF :
|
||||
|
||||
// An indirect object reference
|
||||
// Fill the object stack if needed
|
||||
$cpfn =& $this->current_parser->filename;
|
||||
|
||||
if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) {
|
||||
$this->_newobj(false,true);
|
||||
$this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
|
||||
$this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value); // Value is maybee obsolete!!!
|
||||
}
|
||||
$objid = $this->_don_obj_stack[$cpfn][$value[1]][0];
|
||||
|
||||
$this->_out($objid.' 0 R');
|
||||
break;
|
||||
|
||||
case PDF_TYPE_STRING :
|
||||
|
||||
// A string.
|
||||
$this->_straightOut('('.$value[1].')');
|
||||
|
||||
break;
|
||||
|
||||
case PDF_TYPE_STREAM :
|
||||
|
||||
// A stream. First, output the
|
||||
// stream dictionary, then the
|
||||
// stream data itself.
|
||||
$this->pdf_write_value($value[1]);
|
||||
$this->_out('stream');
|
||||
$this->_out($value[2][1]);
|
||||
$this->_out('endstream');
|
||||
break;
|
||||
case PDF_TYPE_HEX :
|
||||
$this->_straightOut('<'.$value[1].'>');
|
||||
break;
|
||||
|
||||
case PDF_TYPE_BOOLEAN :
|
||||
$this->_straightOut($value[1] ? 'true ' : 'false ');
|
||||
break;
|
||||
|
||||
case PDF_TYPE_NULL :
|
||||
// The null object.
|
||||
|
||||
$this->_straightOut('null ');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Modified so not each call will add a newline to the output.
|
||||
*/
|
||||
function _straightOut($s) {
|
||||
if (!is_subclass_of($this, 'TCPDF')) {
|
||||
if($this->state==2)
|
||||
$this->pages[$this->page] .= $s;
|
||||
else
|
||||
$this->buffer .= $s;
|
||||
} else {
|
||||
if ($this->state == 2) {
|
||||
if (isset($this->footerlen[$this->page]) AND ($this->footerlen[$this->page] > 0)) {
|
||||
// puts data before page footer
|
||||
$page = substr($this->getPageBuffer($this->page), 0, -$this->footerlen[$this->page]);
|
||||
$footer = substr($this->getPageBuffer($this->page), -$this->footerlen[$this->page]);
|
||||
$this->setPageBuffer($this->page, $page.' '.$s."\n".$footer);
|
||||
} else {
|
||||
$this->setPageBuffer($this->page, $s, true);
|
||||
}
|
||||
} else {
|
||||
$this->setBuffer($s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* rewritten to close opened parsers
|
||||
*
|
||||
*/
|
||||
function _enddoc() {
|
||||
parent::_enddoc();
|
||||
$this->_closeParsers();
|
||||
}
|
||||
|
||||
/**
|
||||
* close all files opened by parsers
|
||||
*/
|
||||
function _closeParsers() {
|
||||
if ($this->state > 2 && count($this->parsers) > 0) {
|
||||
foreach ($this->parsers as $k => $_){
|
||||
$this->parsers[$k]->closeFile();
|
||||
$this->parsers[$k] = null;
|
||||
unset($this->parsers[$k]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
171
library/Vendors/fpdi/fpdi2tcpdf_bridge.php
Normal file
171
library/Vendors/fpdi/fpdi2tcpdf_bridge.php
Normal file
@ -0,0 +1,171 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
/**
|
||||
* This class is used as a bridge between TCPDF and FPDI
|
||||
* and will create the possibility to use both FPDF and TCPDF
|
||||
* via one FPDI version.
|
||||
*
|
||||
* We'll simply remap TCPDF to FPDF again.
|
||||
*
|
||||
* It'll be loaded and extended by FPDF_TPL.
|
||||
*/
|
||||
class FPDF extends TCPDF {
|
||||
|
||||
function __get($name) {
|
||||
switch ($name) {
|
||||
case 'PDFVersion':
|
||||
return $this->PDFVersion;
|
||||
case 'k':
|
||||
return $this->k;
|
||||
default:
|
||||
// Error handling
|
||||
$this->Error('Cannot access protected property '.get_class($this).':$'.$name.' / Undefined property: '.get_class($this).'::$'.$name);
|
||||
}
|
||||
}
|
||||
|
||||
function __set($name, $value) {
|
||||
switch ($name) {
|
||||
case 'PDFVersion':
|
||||
$this->PDFVersion = $value;
|
||||
break;
|
||||
default:
|
||||
// Error handling
|
||||
$this->Error('Cannot access protected property '.get_class($this).':$'.$name.' / Undefined property: '.get_class($this).'::$'.$name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Encryption of imported data by FPDI
|
||||
*
|
||||
* @param array $value
|
||||
*/
|
||||
function pdf_write_value(&$value) {
|
||||
switch ($value[0]) {
|
||||
case PDF_TYPE_STRING :
|
||||
if ($this->encrypted) {
|
||||
$value[1] = $this->_unescape($value[1]);
|
||||
$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
|
||||
$value[1] = $this->_escape($value[1]);
|
||||
}
|
||||
break;
|
||||
|
||||
case PDF_TYPE_STREAM :
|
||||
if ($this->encrypted) {
|
||||
$value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]);
|
||||
}
|
||||
break;
|
||||
|
||||
case PDF_TYPE_HEX :
|
||||
if ($this->encrypted) {
|
||||
$value[1] = $this->hex2str($value[1]);
|
||||
$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
|
||||
|
||||
// remake hexstring of encrypted string
|
||||
$value[1] = $this->str2hex($value[1]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unescapes a PDF string
|
||||
*
|
||||
* @param string $s
|
||||
* @return string
|
||||
*/
|
||||
function _unescape($s) {
|
||||
$out = '';
|
||||
for ($count = 0, $n = strlen($s); $count < $n; $count++) {
|
||||
if ($s[$count] != '\\' || $count == $n-1) {
|
||||
$out .= $s[$count];
|
||||
} else {
|
||||
switch ($s[++$count]) {
|
||||
case ')':
|
||||
case '(':
|
||||
case '\\':
|
||||
$out .= $s[$count];
|
||||
break;
|
||||
case 'f':
|
||||
$out .= chr(0x0C);
|
||||
break;
|
||||
case 'b':
|
||||
$out .= chr(0x08);
|
||||
break;
|
||||
case 't':
|
||||
$out .= chr(0x09);
|
||||
break;
|
||||
case 'r':
|
||||
$out .= chr(0x0D);
|
||||
break;
|
||||
case 'n':
|
||||
$out .= chr(0x0A);
|
||||
break;
|
||||
case "\r":
|
||||
if ($count != $n-1 && $s[$count+1] == "\n")
|
||||
$count++;
|
||||
break;
|
||||
case "\n":
|
||||
break;
|
||||
default:
|
||||
// Octal-Values
|
||||
if (ord($s[$count]) >= ord('0') &&
|
||||
ord($s[$count]) <= ord('9')) {
|
||||
$oct = ''. $s[$count];
|
||||
|
||||
if (ord($s[$count+1]) >= ord('0') &&
|
||||
ord($s[$count+1]) <= ord('9')) {
|
||||
$oct .= $s[++$count];
|
||||
|
||||
if (ord($s[$count+1]) >= ord('0') &&
|
||||
ord($s[$count+1]) <= ord('9')) {
|
||||
$oct .= $s[++$count];
|
||||
}
|
||||
}
|
||||
|
||||
$out .= chr(octdec($oct));
|
||||
} else {
|
||||
$out .= $s[$count];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hexadecimal to string
|
||||
*
|
||||
* @param string $hex
|
||||
* @return string
|
||||
*/
|
||||
function hex2str($hex) {
|
||||
return pack('H*', str_replace(array("\r", "\n", ' '), '', $hex));
|
||||
}
|
||||
|
||||
/**
|
||||
* String to hexadecimal
|
||||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
*/
|
||||
function str2hex($str) {
|
||||
return current(unpack('H*', $str));
|
||||
}
|
||||
}
|
391
library/Vendors/fpdi/fpdi_pdf_parser.php
Normal file
391
library/Vendors/fpdi/fpdi_pdf_parser.php
Normal file
@ -0,0 +1,391 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
require_once('pdf_parser.php');
|
||||
|
||||
class fpdi_pdf_parser extends pdf_parser {
|
||||
|
||||
/**
|
||||
* Pages
|
||||
* Index beginns at 0
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $pages;
|
||||
|
||||
/**
|
||||
* Page count
|
||||
* @var integer
|
||||
*/
|
||||
var $page_count;
|
||||
|
||||
/**
|
||||
* actual page number
|
||||
* @var integer
|
||||
*/
|
||||
var $pageno;
|
||||
|
||||
/**
|
||||
* PDF Version of imported Document
|
||||
* @var string
|
||||
*/
|
||||
var $pdfVersion;
|
||||
|
||||
/**
|
||||
* FPDI Reference
|
||||
* @var object
|
||||
*/
|
||||
var $fpdi;
|
||||
|
||||
/**
|
||||
* Available BoxTypes
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $availableBoxes = array('/MediaBox', '/CropBox', '/BleedBox', '/TrimBox', '/ArtBox');
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $filename Source-Filename
|
||||
* @param object $fpdi Object of type fpdi
|
||||
*/
|
||||
function fpdi_pdf_parser($filename, &$fpdi) {
|
||||
$this->fpdi =& $fpdi;
|
||||
|
||||
parent::pdf_parser($filename);
|
||||
|
||||
// resolve Pages-Dictonary
|
||||
$pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);
|
||||
|
||||
// Read pages
|
||||
$this->read_pages($this->c, $pages, $this->pages);
|
||||
|
||||
// count pages;
|
||||
$this->page_count = count($this->pages);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite parent::error()
|
||||
*
|
||||
* @param string $msg Error-Message
|
||||
*/
|
||||
function error($msg) {
|
||||
$this->fpdi->error($msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pagecount from sourcefile
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
function getPageCount() {
|
||||
return $this->page_count;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set pageno
|
||||
*
|
||||
* @param int $pageno Pagenumber to use
|
||||
*/
|
||||
function setPageno($pageno) {
|
||||
$pageno = ((int) $pageno) - 1;
|
||||
|
||||
if ($pageno < 0 || $pageno >= $this->getPageCount()) {
|
||||
$this->fpdi->error('Pagenumber is wrong!');
|
||||
}
|
||||
|
||||
$this->pageno = $pageno;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get page-resources from current page
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function getPageResources() {
|
||||
return $this->_getPageResources($this->pages[$this->pageno]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get page-resources from /Page
|
||||
*
|
||||
* @param array $obj Array of pdf-data
|
||||
*/
|
||||
function _getPageResources ($obj) { // $obj = /Page
|
||||
$obj = $this->pdf_resolve_object($this->c, $obj);
|
||||
|
||||
// If the current object has a resources
|
||||
// dictionary associated with it, we use
|
||||
// it. Otherwise, we move back to its
|
||||
// parent object.
|
||||
if (isset ($obj[1][1]['/Resources'])) {
|
||||
$res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']);
|
||||
if ($res[0] == PDF_TYPE_OBJECT)
|
||||
return $res[1];
|
||||
return $res;
|
||||
} else {
|
||||
if (!isset ($obj[1][1]['/Parent'])) {
|
||||
return false;
|
||||
} else {
|
||||
$res = $this->_getPageResources($obj[1][1]['/Parent']);
|
||||
if ($res[0] == PDF_TYPE_OBJECT)
|
||||
return $res[1];
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get content of current page
|
||||
*
|
||||
* If more /Contents is an array, the streams are concated
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function getContent() {
|
||||
$buffer = '';
|
||||
|
||||
if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
|
||||
$contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
|
||||
foreach($contents AS $tmp_content) {
|
||||
$buffer .= $this->_rebuildContentStream($tmp_content).' ';
|
||||
}
|
||||
}
|
||||
|
||||
return $buffer;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resolve all content-objects
|
||||
*
|
||||
* @param array $content_ref
|
||||
* @return array
|
||||
*/
|
||||
function _getPageContent($content_ref) {
|
||||
$contents = array();
|
||||
|
||||
if ($content_ref[0] == PDF_TYPE_OBJREF) {
|
||||
$content = $this->pdf_resolve_object($this->c, $content_ref);
|
||||
if ($content[1][0] == PDF_TYPE_ARRAY) {
|
||||
$contents = $this->_getPageContent($content[1]);
|
||||
} else {
|
||||
$contents[] = $content;
|
||||
}
|
||||
} else if ($content_ref[0] == PDF_TYPE_ARRAY) {
|
||||
foreach ($content_ref[1] AS $tmp_content_ref) {
|
||||
$contents = array_merge($contents,$this->_getPageContent($tmp_content_ref));
|
||||
}
|
||||
}
|
||||
|
||||
return $contents;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Rebuild content-streams
|
||||
*
|
||||
* @param array $obj
|
||||
* @return string
|
||||
*/
|
||||
function _rebuildContentStream($obj) {
|
||||
$filters = array();
|
||||
|
||||
if (isset($obj[1][1]['/Filter'])) {
|
||||
$_filter = $obj[1][1]['/Filter'];
|
||||
|
||||
if ($_filter[0] == PDF_TYPE_TOKEN) {
|
||||
$filters[] = $_filter;
|
||||
} else if ($_filter[0] == PDF_TYPE_ARRAY) {
|
||||
$filters = $_filter[1];
|
||||
}
|
||||
}
|
||||
|
||||
$stream = $obj[2][1];
|
||||
|
||||
foreach ($filters AS $_filter) {
|
||||
switch ($_filter[1]) {
|
||||
case '/FlateDecode':
|
||||
if (function_exists('gzuncompress')) {
|
||||
$stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';
|
||||
} else {
|
||||
$this->error(sprintf('To handle %s filter, please compile php with zlib support.',$_filter[1]));
|
||||
}
|
||||
if ($stream === false) {
|
||||
$this->error('Error while decompressing stream.');
|
||||
}
|
||||
break;
|
||||
case '/LZWDecode':
|
||||
include_once('filters/FilterLZW_FPDI.php');
|
||||
$decoder = new FilterLZW_FPDI($this->fpdi);
|
||||
$stream = $decoder->decode($stream);
|
||||
break;
|
||||
case '/ASCII85Decode':
|
||||
include_once('filters/FilterASCII85_FPDI.php');
|
||||
$decoder = new FilterASCII85_FPDI($this->fpdi);
|
||||
$stream = $decoder->decode($stream);
|
||||
break;
|
||||
case null:
|
||||
$stream = $stream;
|
||||
break;
|
||||
default:
|
||||
$this->error(sprintf('Unsupported Filter: %s',$_filter[1]));
|
||||
}
|
||||
}
|
||||
|
||||
return $stream;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a Box from a page
|
||||
* Arrayformat is same as used by fpdf_tpl
|
||||
*
|
||||
* @param array $page a /Page
|
||||
* @param string $box_index Type of Box @see $availableBoxes
|
||||
* @return array
|
||||
*/
|
||||
function getPageBox($page, $box_index) {
|
||||
$page = $this->pdf_resolve_object($this->c,$page);
|
||||
$box = null;
|
||||
if (isset($page[1][1][$box_index]))
|
||||
$box =& $page[1][1][$box_index];
|
||||
|
||||
if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
|
||||
$tmp_box = $this->pdf_resolve_object($this->c,$box);
|
||||
$box = $tmp_box[1];
|
||||
}
|
||||
|
||||
if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
|
||||
$b =& $box[1];
|
||||
return array('x' => $b[0][1]/$this->fpdi->k,
|
||||
'y' => $b[1][1]/$this->fpdi->k,
|
||||
'w' => abs($b[0][1]-$b[2][1])/$this->fpdi->k,
|
||||
'h' => abs($b[1][1]-$b[3][1])/$this->fpdi->k,
|
||||
'llx' => min($b[0][1], $b[2][1])/$this->fpdi->k,
|
||||
'lly' => min($b[1][1], $b[3][1])/$this->fpdi->k,
|
||||
'urx' => max($b[0][1], $b[2][1])/$this->fpdi->k,
|
||||
'ury' => max($b[1][1], $b[3][1])/$this->fpdi->k,
|
||||
);
|
||||
} else if (!isset ($page[1][1]['/Parent'])) {
|
||||
return false;
|
||||
} else {
|
||||
return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index);
|
||||
}
|
||||
}
|
||||
|
||||
function getPageBoxes($pageno) {
|
||||
return $this->_getPageBoxes($this->pages[$pageno-1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Boxes from /Page
|
||||
*
|
||||
* @param array a /Page
|
||||
* @return array
|
||||
*/
|
||||
function _getPageBoxes($page) {
|
||||
$boxes = array();
|
||||
|
||||
foreach($this->availableBoxes AS $box) {
|
||||
if ($_box = $this->getPageBox($page,$box)) {
|
||||
$boxes[$box] = $_box;
|
||||
}
|
||||
}
|
||||
|
||||
return $boxes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the page rotation by pageno
|
||||
*
|
||||
* @param integer $pageno
|
||||
* @return array
|
||||
*/
|
||||
function getPageRotation($pageno) {
|
||||
return $this->_getPageRotation($this->pages[$pageno-1]);
|
||||
}
|
||||
|
||||
function _getPageRotation ($obj) { // $obj = /Page
|
||||
$obj = $this->pdf_resolve_object($this->c, $obj);
|
||||
if (isset ($obj[1][1]['/Rotate'])) {
|
||||
$res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']);
|
||||
if ($res[0] == PDF_TYPE_OBJECT)
|
||||
return $res[1];
|
||||
return $res;
|
||||
} else {
|
||||
if (!isset ($obj[1][1]['/Parent'])) {
|
||||
return false;
|
||||
} else {
|
||||
$res = $this->_getPageRotation($obj[1][1]['/Parent']);
|
||||
if ($res[0] == PDF_TYPE_OBJECT)
|
||||
return $res[1];
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read all /Page(es)
|
||||
*
|
||||
* @param object pdf_context
|
||||
* @param array /Pages
|
||||
* @param array the result-array
|
||||
*/
|
||||
function read_pages (&$c, &$pages, &$result) {
|
||||
// Get the kids dictionary
|
||||
$_kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']);
|
||||
|
||||
if (!is_array($_kids))
|
||||
$this->error('Cannot find /Kids in current /Page-Dictionary');
|
||||
|
||||
if ($_kids[1][0] == PDF_TYPE_ARRAY) {
|
||||
$kids = $_kids[1][1];
|
||||
} else {
|
||||
$kids = $_kids[1];
|
||||
}
|
||||
|
||||
foreach ($kids as $v) {
|
||||
$pg = $this->pdf_resolve_object ($c, $v);
|
||||
if ($pg[1][1]['/Type'][1] === '/Pages') {
|
||||
// If one of the kids is an embedded
|
||||
// /Pages array, resolve it as well.
|
||||
$this->read_pages ($c, $pg, $result);
|
||||
} else {
|
||||
$result[] = $pg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get PDF-Version
|
||||
*
|
||||
* And reset the PDF Version used in FPDI if needed
|
||||
*/
|
||||
function getPDFVersion() {
|
||||
parent::getPDFVersion();
|
||||
$this->fpdi->PDFVersion = max($this->fpdi->PDFVersion, $this->pdfVersion);
|
||||
}
|
||||
|
||||
}
|
103
library/Vendors/fpdi/pdf_context.php
Normal file
103
library/Vendors/fpdi/pdf_context.php
Normal file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
$__tmp = version_compare(phpversion(), "5") == -1 ? array('pdf_context') : array('pdf_context', false);
|
||||
if (!call_user_func_array('class_exists', $__tmp)) {
|
||||
|
||||
class pdf_context {
|
||||
|
||||
/**
|
||||
* Modi
|
||||
*
|
||||
* @var integer 0 = file | 1 = string
|
||||
*/
|
||||
var $_mode = 0;
|
||||
|
||||
var $file;
|
||||
var $buffer;
|
||||
var $offset;
|
||||
var $length;
|
||||
|
||||
var $stack;
|
||||
|
||||
// Constructor
|
||||
|
||||
function pdf_context(&$f) {
|
||||
$this->file =& $f;
|
||||
if (is_string($this->file))
|
||||
$this->_mode = 1;
|
||||
$this->reset();
|
||||
}
|
||||
|
||||
// Optionally move the file
|
||||
// pointer to a new location
|
||||
// and reset the buffered data
|
||||
|
||||
function reset($pos = null, $l = 100) {
|
||||
if ($this->_mode == 0) {
|
||||
if (!is_null ($pos)) {
|
||||
fseek ($this->file, $pos);
|
||||
}
|
||||
|
||||
$this->buffer = $l > 0 ? fread($this->file, $l) : '';
|
||||
$this->length = strlen($this->buffer);
|
||||
if ($this->length < $l)
|
||||
$this->increase_length($l - $this->length);
|
||||
} else {
|
||||
$this->buffer = $this->file;
|
||||
$this->length = strlen($this->buffer);
|
||||
}
|
||||
$this->offset = 0;
|
||||
$this->stack = array();
|
||||
}
|
||||
|
||||
// Make sure that there is at least one
|
||||
// character beyond the current offset in
|
||||
// the buffer to prevent the tokenizer
|
||||
// from attempting to access data that does
|
||||
// not exist
|
||||
|
||||
function ensure_content() {
|
||||
if ($this->offset >= $this->length - 1) {
|
||||
return $this->increase_length();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Forcefully read more data into the buffer
|
||||
|
||||
function increase_length($l=100) {
|
||||
if ($this->_mode == 0 && feof($this->file)) {
|
||||
return false;
|
||||
} else if ($this->_mode == 0) {
|
||||
$totalLength = $this->length + $l;
|
||||
do {
|
||||
$this->buffer .= fread($this->file, $totalLength-$this->length);
|
||||
} while ((($this->length = strlen($this->buffer)) != $totalLength) && !feof($this->file));
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($__tmp);
|
708
library/Vendors/fpdi/pdf_parser.php
Normal file
708
library/Vendors/fpdi/pdf_parser.php
Normal file
@ -0,0 +1,708 @@
|
||||
<?php
|
||||
//
|
||||
// FPDI - Version 1.3.2
|
||||
//
|
||||
// Copyright 2004-2010 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
if (!defined ('PDF_TYPE_NULL'))
|
||||
define ('PDF_TYPE_NULL', 0);
|
||||
if (!defined ('PDF_TYPE_NUMERIC'))
|
||||
define ('PDF_TYPE_NUMERIC', 1);
|
||||
if (!defined ('PDF_TYPE_TOKEN'))
|
||||
define ('PDF_TYPE_TOKEN', 2);
|
||||
if (!defined ('PDF_TYPE_HEX'))
|
||||
define ('PDF_TYPE_HEX', 3);
|
||||
if (!defined ('PDF_TYPE_STRING'))
|
||||
define ('PDF_TYPE_STRING', 4);
|
||||
if (!defined ('PDF_TYPE_DICTIONARY'))
|
||||
define ('PDF_TYPE_DICTIONARY', 5);
|
||||
if (!defined ('PDF_TYPE_ARRAY'))
|
||||
define ('PDF_TYPE_ARRAY', 6);
|
||||
if (!defined ('PDF_TYPE_OBJDEC'))
|
||||
define ('PDF_TYPE_OBJDEC', 7);
|
||||
if (!defined ('PDF_TYPE_OBJREF'))
|
||||
define ('PDF_TYPE_OBJREF', 8);
|
||||
if (!defined ('PDF_TYPE_OBJECT'))
|
||||
define ('PDF_TYPE_OBJECT', 9);
|
||||
if (!defined ('PDF_TYPE_STREAM'))
|
||||
define ('PDF_TYPE_STREAM', 10);
|
||||
if (!defined ('PDF_TYPE_BOOLEAN'))
|
||||
define ('PDF_TYPE_BOOLEAN', 11);
|
||||
if (!defined ('PDF_TYPE_REAL'))
|
||||
define ('PDF_TYPE_REAL', 12);
|
||||
|
||||
require_once('pdf_context.php');
|
||||
|
||||
$__tmp = version_compare(phpversion(), "5") == -1 ? array('pdf_parser') : array('pdf_parser', false);
|
||||
if (!call_user_func_array('class_exists', $__tmp)) {
|
||||
|
||||
class pdf_parser {
|
||||
|
||||
/**
|
||||
* Filename
|
||||
* @var string
|
||||
*/
|
||||
var $filename;
|
||||
|
||||
/**
|
||||
* File resource
|
||||
* @var resource
|
||||
*/
|
||||
var $f;
|
||||
|
||||
/**
|
||||
* PDF Context
|
||||
* @var object pdf_context-Instance
|
||||
*/
|
||||
var $c;
|
||||
|
||||
/**
|
||||
* xref-Data
|
||||
* @var array
|
||||
*/
|
||||
var $xref;
|
||||
|
||||
/**
|
||||
* root-Object
|
||||
* @var array
|
||||
*/
|
||||
var $root;
|
||||
|
||||
/**
|
||||
* PDF version of the loaded document
|
||||
* @var string
|
||||
*/
|
||||
var $pdfVersion;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $filename Source-Filename
|
||||
*/
|
||||
function pdf_parser($filename) {
|
||||
$this->filename = $filename;
|
||||
|
||||
$this->f = @fopen($this->filename, 'rb');
|
||||
|
||||
if (!$this->f)
|
||||
$this->error(sprintf('Cannot open %s !', $filename));
|
||||
|
||||
$this->getPDFVersion();
|
||||
|
||||
$this->c = new pdf_context($this->f);
|
||||
|
||||
// Read xref-Data
|
||||
$this->xref = array();
|
||||
$this->pdf_read_xref($this->xref, $this->pdf_find_xref());
|
||||
|
||||
// Check for Encryption
|
||||
$this->getEncryption();
|
||||
|
||||
// Read root
|
||||
$this->pdf_read_root();
|
||||
}
|
||||
|
||||
/**
|
||||
* Close the opened file
|
||||
*/
|
||||
function closeFile() {
|
||||
if (isset($this->f) && is_resource($this->f)) {
|
||||
fclose($this->f);
|
||||
unset($this->f);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print Error and die
|
||||
*
|
||||
* @param string $msg Error-Message
|
||||
*/
|
||||
function error($msg) {
|
||||
die('<b>PDF-Parser Error:</b> '.$msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check Trailer for Encryption
|
||||
*/
|
||||
function getEncryption() {
|
||||
if (isset($this->xref['trailer'][1]['/Encrypt'])) {
|
||||
$this->error('File is encrypted!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find/Return /Root
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function pdf_find_root() {
|
||||
if ($this->xref['trailer'][1]['/Root'][0] != PDF_TYPE_OBJREF) {
|
||||
$this->error('Wrong Type of Root-Element! Must be an indirect reference');
|
||||
}
|
||||
|
||||
return $this->xref['trailer'][1]['/Root'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the /Root
|
||||
*/
|
||||
function pdf_read_root() {
|
||||
// read root
|
||||
$this->root = $this->pdf_resolve_object($this->c, $this->pdf_find_root());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PDF-Version
|
||||
*
|
||||
* And reset the PDF Version used in FPDI if needed
|
||||
*/
|
||||
function getPDFVersion() {
|
||||
fseek($this->f, 0);
|
||||
preg_match('/\d\.\d/',fread($this->f,16),$m);
|
||||
if (isset($m[0]))
|
||||
$this->pdfVersion = $m[0];
|
||||
return $this->pdfVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the xref-Table
|
||||
*/
|
||||
function pdf_find_xref() {
|
||||
$toRead = 1500;
|
||||
|
||||
$stat = fseek ($this->f, -$toRead, SEEK_END);
|
||||
if ($stat === -1) {
|
||||
fseek ($this->f, 0);
|
||||
}
|
||||
$data = fread($this->f, $toRead);
|
||||
|
||||
$pos = strlen($data) - strpos(strrev($data), strrev('startxref'));
|
||||
$data = substr($data, $pos);
|
||||
|
||||
if (!preg_match('/\s*(\d+).*$/s', $data, $matches)) {
|
||||
$this->error('Unable to find pointer to xref table');
|
||||
}
|
||||
|
||||
return (int) $matches[1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Read xref-table
|
||||
*
|
||||
* @param array $result Array of xref-table
|
||||
* @param integer $offset of xref-table
|
||||
*/
|
||||
function pdf_read_xref(&$result, $offset) {
|
||||
|
||||
fseek($this->f, $o_pos = $offset-20); // set some bytes backwards to fetch errorious docs
|
||||
|
||||
$data = fread($this->f, 100);
|
||||
|
||||
$xrefPos = strrpos($data, 'xref');
|
||||
|
||||
if ($xrefPos === false) {
|
||||
fseek($this->f, $offset);
|
||||
$c = new pdf_context($this->f);
|
||||
$xrefStreamObjDec = $this->pdf_read_value($c);
|
||||
|
||||
if (is_array($xrefStreamObjDec) && isset($xrefStreamObjDec[0]) && $xrefStreamObjDec[0] == PDF_TYPE_OBJDEC) {
|
||||
$this->error(sprintf('This document (%s) probably uses a compression technique which is not supported by the free parser shipped with FPDI.', $this->filename));
|
||||
} else {
|
||||
$this->error('Unable to find xref table.');
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($result['xref_location'])) {
|
||||
$result['xref_location'] = $o_pos+$xrefPos;
|
||||
$result['max_object'] = 0;
|
||||
}
|
||||
|
||||
$cylces = -1;
|
||||
$bytesPerCycle = 100;
|
||||
|
||||
fseek($this->f, $o_pos = $o_pos+$xrefPos+4); // set the handle directly after the "xref"-keyword
|
||||
$data = fread($this->f, $bytesPerCycle);
|
||||
|
||||
while (($trailerPos = strpos($data, 'trailer', max($bytesPerCycle*$cylces++, 0))) === false && !feof($this->f)) {
|
||||
$data .= fread($this->f, $bytesPerCycle);
|
||||
}
|
||||
|
||||
if ($trailerPos === false) {
|
||||
$this->error('Trailer keyword not found after xref table');
|
||||
}
|
||||
|
||||
$data = substr($data, 0, $trailerPos);
|
||||
|
||||
// get Line-Ending
|
||||
preg_match_all("/(\r\n|\n|\r)/", substr($data, 0, 100), $m); // check the first 100 bytes for linebreaks
|
||||
|
||||
$differentLineEndings = count(array_unique($m[0]));
|
||||
if ($differentLineEndings > 1) {
|
||||
$lines = preg_split("/(\r\n|\n|\r)/", $data, -1, PREG_SPLIT_NO_EMPTY);
|
||||
} else {
|
||||
$lines = explode($m[0][1], $data);
|
||||
}
|
||||
|
||||
$data = $differentLineEndings = $m = null;
|
||||
unset($data, $differentLineEndings, $m);
|
||||
|
||||
$linesCount = count($lines);
|
||||
|
||||
$start = 1;
|
||||
|
||||
for ($i = 0; $i < $linesCount; $i++) {
|
||||
$line = trim($lines[$i]);
|
||||
if ($line) {
|
||||
$pieces = explode(' ', $line);
|
||||
$c = count($pieces);
|
||||
switch($c) {
|
||||
case 2:
|
||||
$start = (int)$pieces[0];
|
||||
$end = $start+(int)$pieces[1];
|
||||
if ($end > $result['max_object'])
|
||||
$result['max_object'] = $end;
|
||||
break;
|
||||
case 3:
|
||||
if (!isset($result['xref'][$start]))
|
||||
$result['xref'][$start] = array();
|
||||
|
||||
if (!array_key_exists($gen = (int) $pieces[1], $result['xref'][$start])) {
|
||||
$result['xref'][$start][$gen] = $pieces[2] == 'n' ? (int) $pieces[0] : null;
|
||||
}
|
||||
$start++;
|
||||
break;
|
||||
default:
|
||||
$this->error('Unexpected data in xref table');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$lines = $pieces = $line = $start = $end = $gen = null;
|
||||
unset($lines, $pieces, $line, $start, $end, $gen);
|
||||
|
||||
fseek($this->f, $o_pos+$trailerPos+7);
|
||||
|
||||
$c = new pdf_context($this->f);
|
||||
$trailer = $this->pdf_read_value($c);
|
||||
|
||||
$c = null;
|
||||
unset($c);
|
||||
|
||||
if (!isset($result['trailer'])) {
|
||||
$result['trailer'] = $trailer;
|
||||
}
|
||||
|
||||
if (isset($trailer[1]['/Prev'])) {
|
||||
$this->pdf_read_xref($result, $trailer[1]['/Prev'][1]);
|
||||
}
|
||||
|
||||
$trailer = null;
|
||||
unset($trailer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads an Value
|
||||
*
|
||||
* @param object $c pdf_context
|
||||
* @param string $token a Token
|
||||
* @return mixed
|
||||
*/
|
||||
function pdf_read_value(&$c, $token = null) {
|
||||
if (is_null($token)) {
|
||||
$token = $this->pdf_read_token($c);
|
||||
}
|
||||
|
||||
if ($token === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch ($token) {
|
||||
case '<':
|
||||
// This is a hex string.
|
||||
// Read the value, then the terminator
|
||||
|
||||
$pos = $c->offset;
|
||||
|
||||
while(1) {
|
||||
|
||||
$match = strpos ($c->buffer, '>', $pos);
|
||||
|
||||
// If you can't find it, try
|
||||
// reading more data from the stream
|
||||
|
||||
if ($match === false) {
|
||||
if (!$c->increase_length()) {
|
||||
return false;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$result = substr ($c->buffer, $c->offset, $match - $c->offset);
|
||||
$c->offset = $match + 1;
|
||||
|
||||
return array (PDF_TYPE_HEX, $result);
|
||||
}
|
||||
|
||||
break;
|
||||
case '<<':
|
||||
// This is a dictionary.
|
||||
|
||||
$result = array();
|
||||
|
||||
// Recurse into this function until we reach
|
||||
// the end of the dictionary.
|
||||
while (($key = $this->pdf_read_token($c)) !== '>>') {
|
||||
if ($key === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($value = $this->pdf_read_value($c)) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Catch missing value
|
||||
if ($value[0] == PDF_TYPE_TOKEN && $value[1] == '>>') {
|
||||
$result[$key] = array(PDF_TYPE_NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
$result[$key] = $value;
|
||||
}
|
||||
|
||||
return array (PDF_TYPE_DICTIONARY, $result);
|
||||
|
||||
case '[':
|
||||
// This is an array.
|
||||
|
||||
$result = array();
|
||||
|
||||
// Recurse into this function until we reach
|
||||
// the end of the array.
|
||||
while (($token = $this->pdf_read_token($c)) !== ']') {
|
||||
if ($token === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($value = $this->pdf_read_value($c, $token)) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$result[] = $value;
|
||||
}
|
||||
|
||||
return array (PDF_TYPE_ARRAY, $result);
|
||||
|
||||
case '(' :
|
||||
// This is a string
|
||||
$pos = $c->offset;
|
||||
|
||||
$openBrackets = 1;
|
||||
do {
|
||||
for (; $openBrackets != 0 && $pos < $c->length; $pos++) {
|
||||
switch (ord($c->buffer[$pos])) {
|
||||
case 0x28: // '('
|
||||
$openBrackets++;
|
||||
break;
|
||||
case 0x29: // ')'
|
||||
$openBrackets--;
|
||||
break;
|
||||
case 0x5C: // backslash
|
||||
$pos++;
|
||||
}
|
||||
}
|
||||
} while($openBrackets != 0 && $c->increase_length());
|
||||
|
||||
$result = substr($c->buffer, $c->offset, $pos - $c->offset - 1);
|
||||
$c->offset = $pos;
|
||||
|
||||
return array (PDF_TYPE_STRING, $result);
|
||||
|
||||
case 'stream':
|
||||
$o_pos = ftell($c->file)-strlen($c->buffer);
|
||||
$o_offset = $c->offset;
|
||||
|
||||
$c->reset($startpos = $o_pos + $o_offset);
|
||||
|
||||
$e = 0; // ensure line breaks in front of the stream
|
||||
if ($c->buffer[0] == chr(10) || $c->buffer[0] == chr(13))
|
||||
$e++;
|
||||
if ($c->buffer[1] == chr(10) && $c->buffer[0] != chr(10))
|
||||
$e++;
|
||||
|
||||
if ($this->actual_obj[1][1]['/Length'][0] == PDF_TYPE_OBJREF) {
|
||||
$tmp_c = new pdf_context($this->f);
|
||||
$tmp_length = $this->pdf_resolve_object($tmp_c, $this->actual_obj[1][1]['/Length']);
|
||||
$length = $tmp_length[1][1];
|
||||
} else {
|
||||
$length = $this->actual_obj[1][1]['/Length'][1];
|
||||
}
|
||||
|
||||
if ($length > 0) {
|
||||
$c->reset($startpos+$e,$length);
|
||||
$v = $c->buffer;
|
||||
} else {
|
||||
$v = '';
|
||||
}
|
||||
$c->reset($startpos+$e+$length+9); // 9 = strlen("endstream")
|
||||
|
||||
return array(PDF_TYPE_STREAM, $v);
|
||||
|
||||
default :
|
||||
if (is_numeric ($token)) {
|
||||
// A numeric token. Make sure that
|
||||
// it is not part of something else.
|
||||
if (($tok2 = $this->pdf_read_token ($c)) !== false) {
|
||||
if (is_numeric ($tok2)) {
|
||||
|
||||
// Two numeric tokens in a row.
|
||||
// In this case, we're probably in
|
||||
// front of either an object reference
|
||||
// or an object specification.
|
||||
// Determine the case and return the data
|
||||
if (($tok3 = $this->pdf_read_token ($c)) !== false) {
|
||||
switch ($tok3) {
|
||||
case 'obj' :
|
||||
return array (PDF_TYPE_OBJDEC, (int) $token, (int) $tok2);
|
||||
case 'R' :
|
||||
return array (PDF_TYPE_OBJREF, (int) $token, (int) $tok2);
|
||||
}
|
||||
// If we get to this point, that numeric value up
|
||||
// there was just a numeric value. Push the extra
|
||||
// tokens back into the stack and return the value.
|
||||
array_push ($c->stack, $tok3);
|
||||
}
|
||||
}
|
||||
|
||||
array_push ($c->stack, $tok2);
|
||||
}
|
||||
|
||||
if ($token === (string)((int)$token))
|
||||
return array (PDF_TYPE_NUMERIC, (int)$token);
|
||||
else
|
||||
return array (PDF_TYPE_REAL, (float)$token);
|
||||
} else if ($token == 'true' || $token == 'false') {
|
||||
return array (PDF_TYPE_BOOLEAN, $token == 'true');
|
||||
} else if ($token == 'null') {
|
||||
return array (PDF_TYPE_NULL);
|
||||
} else {
|
||||
// Just a token. Return it.
|
||||
return array (PDF_TYPE_TOKEN, $token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve an object
|
||||
*
|
||||
* @param object $c pdf_context
|
||||
* @param array $obj_spec The object-data
|
||||
* @param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para
|
||||
*/
|
||||
function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) {
|
||||
// Exit if we get invalid data
|
||||
if (!is_array($obj_spec)) {
|
||||
$ret = false;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
if ($obj_spec[0] == PDF_TYPE_OBJREF) {
|
||||
|
||||
// This is a reference, resolve it
|
||||
if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) {
|
||||
|
||||
// Save current file position
|
||||
// This is needed if you want to resolve
|
||||
// references while you're reading another object
|
||||
// (e.g.: if you need to determine the length
|
||||
// of a stream)
|
||||
|
||||
$old_pos = ftell($c->file);
|
||||
|
||||
// Reposition the file pointer and
|
||||
// load the object header.
|
||||
|
||||
$c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]);
|
||||
|
||||
$header = $this->pdf_read_value($c);
|
||||
|
||||
if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) {
|
||||
$this->error("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location");
|
||||
}
|
||||
|
||||
// If we're being asked to store all the information
|
||||
// about the object, we add the object ID and generation
|
||||
// number for later use
|
||||
$result = array();
|
||||
$this->actual_obj =& $result;
|
||||
if ($encapsulate) {
|
||||
$result = array (
|
||||
PDF_TYPE_OBJECT,
|
||||
'obj' => $obj_spec[1],
|
||||
'gen' => $obj_spec[2]
|
||||
);
|
||||
}
|
||||
|
||||
// Now simply read the object data until
|
||||
// we encounter an end-of-object marker
|
||||
while(1) {
|
||||
$value = $this->pdf_read_value($c);
|
||||
if ($value === false || count($result) > 4) {
|
||||
// in this case the parser coudn't find an endobj so we break here
|
||||
break;
|
||||
}
|
||||
|
||||
if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') {
|
||||
break;
|
||||
}
|
||||
|
||||
$result[] = $value;
|
||||
}
|
||||
|
||||
$c->reset($old_pos);
|
||||
|
||||
if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) {
|
||||
$result[0] = PDF_TYPE_STREAM;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
} else {
|
||||
return $obj_spec;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Reads a token from the file
|
||||
*
|
||||
* @param object $c pdf_context
|
||||
* @return mixed
|
||||
*/
|
||||
function pdf_read_token(&$c)
|
||||
{
|
||||
// If there is a token available
|
||||
// on the stack, pop it out and
|
||||
// return it.
|
||||
|
||||
if (count($c->stack)) {
|
||||
return array_pop($c->stack);
|
||||
}
|
||||
|
||||
// Strip away any whitespace
|
||||
|
||||
do {
|
||||
if (!$c->ensure_content()) {
|
||||
return false;
|
||||
}
|
||||
$c->offset += strspn($c->buffer, " \n\r\t", $c->offset);
|
||||
} while ($c->offset >= $c->length - 1);
|
||||
|
||||
// Get the first character in the stream
|
||||
|
||||
$char = $c->buffer[$c->offset++];
|
||||
|
||||
switch ($char) {
|
||||
|
||||
case '[':
|
||||
case ']':
|
||||
case '(':
|
||||
case ')':
|
||||
|
||||
// This is either an array or literal string
|
||||
// delimiter, Return it
|
||||
|
||||
return $char;
|
||||
|
||||
case '<':
|
||||
case '>':
|
||||
|
||||
// This could either be a hex string or
|
||||
// dictionary delimiter. Determine the
|
||||
// appropriate case and return the token
|
||||
|
||||
if ($c->buffer[$c->offset] == $char) {
|
||||
if (!$c->ensure_content()) {
|
||||
return false;
|
||||
}
|
||||
$c->offset++;
|
||||
return $char . $char;
|
||||
} else {
|
||||
return $char;
|
||||
}
|
||||
|
||||
case '%':
|
||||
|
||||
// This is a comment - jump over it!
|
||||
|
||||
$pos = $c->offset;
|
||||
while(1) {
|
||||
$match = preg_match("/(\r\n|\r|\n)/", $c->buffer, $m, PREG_OFFSET_CAPTURE, $pos);
|
||||
if ($match === 0) {
|
||||
if (!$c->increase_length()) {
|
||||
return false;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$c->offset = $m[0][1]+strlen($m[0][0]);
|
||||
|
||||
return $this->pdf_read_token($c);
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
// This is "another" type of token (probably
|
||||
// a dictionary entry or a numeric value)
|
||||
// Find the end and return it.
|
||||
|
||||
if (!$c->ensure_content()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
while(1) {
|
||||
|
||||
// Determine the length of the token
|
||||
|
||||
$pos = strcspn($c->buffer, " %[]<>()\r\n\t/", $c->offset);
|
||||
|
||||
if ($c->offset + $pos <= $c->length - 1) {
|
||||
break;
|
||||
} else {
|
||||
// If the script reaches this point,
|
||||
// the token may span beyond the end
|
||||
// of the current buffer. Therefore,
|
||||
// we increase the size of the buffer
|
||||
// and try again--just to be safe.
|
||||
|
||||
$c->increase_length();
|
||||
}
|
||||
}
|
||||
|
||||
$result = substr($c->buffer, $c->offset - 1, $pos + 1);
|
||||
|
||||
$c->offset += $pos;
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($__tmp);
|
165
library/Vendors/html2pdf/_LGPL.txt
Normal file
165
library/Vendors/html2pdf/_LGPL.txt
Normal file
@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
217
library/Vendors/html2pdf/_changelog.txt
Normal file
217
library/Vendors/html2pdf/_changelog.txt
Normal file
@ -0,0 +1,217 @@
|
||||
3.31 (2001-05-21)
|
||||
problème de compatibilité avec FPDF corrigé
|
||||
|
||||
3.30 / 4.01 (2001-05-07)
|
||||
correction sur la gestion des textes
|
||||
correction sur le parseur HTML
|
||||
correction sur la gestion de border-collapse
|
||||
correction sur la gestion des TDs, H1->H6
|
||||
ajout des balises fieldset et legend (cf exemple 4)
|
||||
ajout de la langue CS
|
||||
nombreuses améliorations
|
||||
v4.01 uniquement : Utilisation de TCPDF 5.0.002
|
||||
v4.01 uniquement : Utilisation des QR-code de TCPDF, il n'y a plus besoin d'une librairie externe
|
||||
v4.01 uniquement : Utilisation des exceptions PHP pour les erreurs. Tous les exemples ont été mis à jour en consequence
|
||||
(merci à Pavel Kochman pour ses sugestions et ses ajouts)
|
||||
|
||||
3.29 / 4.00 (2010-03-17)
|
||||
modification des barcodes. ATTENTION : bar_w et bar_h n'existent plus !
|
||||
correction sur la gestion de page_footer
|
||||
correction sur la gestion des html entities
|
||||
correction sur le positionnement des textes
|
||||
correction sur le positionnement des tableaux
|
||||
nombreuses corrections sur les positionnements, les couleurs, ...
|
||||
amélioration de la partie SVG (balise G, ...)
|
||||
amélioration sur createIndex
|
||||
harmonisation des noms des méthodes
|
||||
correction sur la gestion des textes
|
||||
v4.00 uniquement : HTML2PDF est maintenant écrit en PHP5 et basé sur TCPDF (=> unicode, utf8, ...)
|
||||
v4.00 uniquement : utilisation de TCPDF pour les formulaires et les barcodes
|
||||
v4.00 uniquement : amélioration de la partie SVG (alpha)
|
||||
|
||||
3.28 (2010-01-18)
|
||||
ajout de la gestion de la balise label
|
||||
correction pour compatibilité PHP4
|
||||
|
||||
3.27 (2010-01-11)
|
||||
correction sur page_header et page_footer
|
||||
ajout de la possibilité de pouvoir mettre l'index automatique dans la page que l'on veut
|
||||
correction sur la gestion du canal alpha pour les PNGs
|
||||
correction sur la gestion des border-radius (cf exemple radius) conforme au CSS3
|
||||
correction sur la gestion du background-color
|
||||
correction sur la gestion de thead, tfoot, et tbody
|
||||
ajout du dessin verctoriel (cf exemples draw, tigre, sapin)
|
||||
ajout de la propriété label="none/label" pour la balise <barcode>
|
||||
nombreux petits correctifs
|
||||
|
||||
3.26 (2009-11-16)
|
||||
correction pour support des images générés en CGI
|
||||
ajout de la gestion du canal alpha pour les PNGs (nécessite GD2)
|
||||
ajout de la méthode setDefaultFont permettant de spécifier une fonte par défaut
|
||||
ajout de la propriété format pour la balise <page> (cf exemple 4)
|
||||
amélioration de la gestion des couleurs css RGB (cf exemple 2)
|
||||
ajout de la gestion des couleurs css CMYK (cf exemple 2)
|
||||
ajout de la propriété css overflow:hidden pour la balise <div> (cf exemple 2)
|
||||
correction sur page_header et page_footer
|
||||
ajout de la possibilité de pouvoir directement convertir le résultat d'une vraie page HTML
|
||||
nombreux petits correctifs sur les styles
|
||||
|
||||
3.25 (2009-10-07)
|
||||
correctif sur le calcul des tableaux dans le page_footer
|
||||
correctif sur l'interprétation des espaces entre certaines balises
|
||||
correction sur la gestion des balises H1, H2, H3, H4, H5, H6
|
||||
correction sur la gestion de la balise table
|
||||
support des balises xhtml du type <span />
|
||||
ajout des balises COL (cf exemple 5), DEL, INS, et QRCODE (cf exemple 13)
|
||||
ajout de la propriété css text-transform
|
||||
ajout de la propriété css rotate (uniquement sur les DIV, cf exemple 8)
|
||||
ne plus rendre obligatoire l'existence d'une image (nouvelle méthode setTestIsImage)
|
||||
ajout d'un mode DEBUG - les anciennes fonction d'analyse des ressources ont été supprimées
|
||||
ajout de la méthode setEncoding
|
||||
ajout de la langue danoise DA (merci à Daniel K.)
|
||||
|
||||
3.24 (2009-08-05)
|
||||
correction sur le calcul de la largeur des divs
|
||||
modification pour compatibilité avec la localisation PHP
|
||||
modification pour compatibilité avec PHP 5.3.0
|
||||
|
||||
3.23 (2009-07-30)
|
||||
correction sur le calcul des DIVs
|
||||
correction sur l'interpretation de certains styles CSS
|
||||
correction de la fonction de creation d'index automatique CreateIndex
|
||||
ATTENTION : la methode d'appel de CreateIndex a changé. Regardez l'exemple About !!!!
|
||||
|
||||
3.22a (2009-06-16)
|
||||
redistribution de HTML2PDF sous la licence LGPL !!! (au lieu de GPL)
|
||||
|
||||
3.22 (2009-06-08)
|
||||
correction sur le background-color
|
||||
refonte totale de la gestion de text-align. les valeurs center et right marchent maintenant meme en cas de contenu riche
|
||||
|
||||
3.21 (2009-05-05)
|
||||
ajout de la propriété css FLOAT pour la balise IMG
|
||||
correction sur la gestion des TFOOT
|
||||
correction sur le positionnement des images
|
||||
|
||||
3.20 (2009-04-06)
|
||||
ajout de la gestion des margins pour la balise DIV
|
||||
ajout de la gestion de la propriete css LINE-HEIGHT
|
||||
correction sur l'interpretation de la valeur de certains styles CSS (background-image, background-position, ...)
|
||||
correction sur la reconnaissance des balises thead et tfoot
|
||||
correction sur la balise select
|
||||
correction sur les fichiers de langue (merci à Sinan)
|
||||
|
||||
3.19 (2009-03-11)
|
||||
optimisation du parseur HTML - merci à Jezelinside
|
||||
ajout de la balise TFOOT
|
||||
amélioration de la gestion des tableaux : les contenus des balises THEAD et TFOOT sont maintenant répétés sur chaque page.
|
||||
ajout de la balise spécifique BOOKMARK afin de créer des "marques-page"
|
||||
possibilité de rajouter un index automatique en fin de fichier
|
||||
ajout de la langue turque TR (merci à Hidayet)
|
||||
amélioration de la méthode Output. Elle est maintenant également utilisable comme celle de FPDF
|
||||
|
||||
3.18 (2009-02-22)
|
||||
correction sur les sauts de page automatique pour les balises TABLE, UL, OL
|
||||
correction sur l'interpretation des styles pour la balise HR
|
||||
correction sur l'interpretation du style border-collapse pour la balise TABLE
|
||||
prise en compte de margin:auto pour les tables et les divs
|
||||
les commentaires dans les CSS sont acceptés
|
||||
|
||||
3.17 (2008-12-30)
|
||||
ajout de la gestion des balises INPUT (text, radio, checkbox, button, hidden, ...), SELECT, OPTION, TEXTAREA (cf exemple 14)
|
||||
ajout de la possibilité de mettre des scripts dans le pdf, via $html2pdf->pdf->IncludeJS(...); (cf exemples JS)
|
||||
correction sur le saut de page automatique pour les images
|
||||
correction sur les sauts de lignes automatiques pour certaines balises (UL, P, ...)
|
||||
ajout de la langue NL (merci à Roland)
|
||||
|
||||
3.16 (2008-12-09)
|
||||
ajout de la gestion de list-style: none (cf exemple 13)
|
||||
correction dans la gestion des fontes ajoutées à fpdf (via la méthode AddFont)
|
||||
nombreuses corrections sur le calcul des largeurs des éléments table, div, hr, td, th
|
||||
ajout de l'exemple about.php
|
||||
(pour info, les PDF générés à partir des exemples sont maintenant dans le répertoire /exemples/pdf/, et sont supprimables)
|
||||
|
||||
3.15 (2008-12-01)
|
||||
correction sur l'identification des styles en cas de valeurs multiples dans la propriete class
|
||||
prise en compte de border-radius pour la limite des backgrounds (color et image)
|
||||
ajout des proprietes CSS border-top-*, border-right-*, border-bottom-*, border-left-*
|
||||
ajout de la propriété CSS list-style-image (cf exemple 12)
|
||||
pour la balise table, ajout de l'interprétation de align="center" et align="right" (cf exemple 1)
|
||||
correction dans le positionnement des images
|
||||
correction de quelques bugs
|
||||
ajout d'une fonction d'analyse des ressources HTML2PDFgetTimerDebug (cf début du fichier html2pdf.class.php)
|
||||
|
||||
3.14 (2008-11-17)
|
||||
ajout d'une langue (pt : Brazilian Portuguese language) et amelioration de la methode vueHTML (merci à Rodrigo)
|
||||
correction du positionnement du contenu des DIVs. gestion des proprietes valign et align
|
||||
ajout de la propriete CSS border-collapse (cf exemple 0)
|
||||
ajout de la propriete CSS border-radius (cf exemple 1)
|
||||
correction de quelques bugs
|
||||
|
||||
3.13 (2008-09-24)
|
||||
reecriture de la balise hr, avec prise en compte des styles (cf exemple 0)
|
||||
ajout de la propriete backcolor pour la balise page (cf exemple 9)
|
||||
ajout des proprietes backleft et backright pour la balise page afin de pouvoir changer les marges des pages (cf exemple 8)
|
||||
nombreuses corrections sur les balises et les styles
|
||||
|
||||
3.12 (2008-09-16)
|
||||
ajout des balises ol, ul, li (cf exemple 12)
|
||||
correction sur le calcul de la taille des td en cas de colspan et rowspan
|
||||
ajout de la méthode setTestTdInOnePage afin de pouvoir desactiver le test sur la taille des TD (cf exemple 11)
|
||||
correction de quelques bugs
|
||||
|
||||
3.11 (2008-08-29)
|
||||
ajout des balises div, p, pre, s
|
||||
gestion des styles CSS position (relative, absolute), left, top, right, bottom (cf exemple 10)
|
||||
meilleur gestion des border : border-style, border-color, border-width (cf exemple 10)
|
||||
possibilité d'indiquer les marges par défault, via le constructeur (cf exemple 2)
|
||||
|
||||
3.10a (2008-08-26)
|
||||
correction pour compatibilité php4 / php5
|
||||
|
||||
3.10 (2008-08-25)
|
||||
ajout des liens internes (cf exemple 7)
|
||||
gestion complete des background : image, repeat, position, color (cf exemple 1)
|
||||
gestion de underline, overline, linethrough (cf exemple 2)
|
||||
correction de quelques bugs
|
||||
|
||||
3.09 :
|
||||
mise à jour vers fpdf version 1.6, ajout de barcode, correction de l'affichage de certains caractères spéciaux
|
||||
correction du calcul de la hauteur de ligne de la balise br
|
||||
detection en cas de contenu trop grand dans un TD
|
||||
amélioration de la balise page (ajout de l'attribue pageset, avec les valeurs new et old)
|
||||
ajout de FPDF_PROTECTION, accesible via $pdf->pdf->SetProtection(...)
|
||||
|
||||
3.08 : version opérationnelle de page_header, ajout de page_footer, correction des borders des tableaux
|
||||
3.07 : correction de l'interpretation de cellspacing, amélioration de la balise page_header
|
||||
3.06 : première gestion de la balise page_header, correction des dimensions des tableaux
|
||||
3.05 : ajout de la propriété vertical-align, ajout de la gestion des fichiers de langue
|
||||
3.04 : correction du saut de page automatique pour les tableaux. Ajout de propriétés à la balise PAGE
|
||||
3.03 : correction de bugs au niveau de la gestion des images PHP par FPDF, meilleure gestion des erreurs
|
||||
3.02 : ajout de la gestion des noms des couleurs, correction de la gestion des images générées par php, correction de quelques bugs
|
||||
3.01 : correction de quelques bugs, ajout d'une protection pour les balises non existantes
|
||||
3.00 : refont totale du calcul des tableaux. Prise en compte des colspan et rowspan
|
||||
2.85 : ajout de la propriété cellspacing, nouvelle gestion des padding des tableaux (identique à l'html)
|
||||
2.80 : ajout des types de border dotted et dasheds
|
||||
2.75 : ajout des top, left, right, bottom pour padding et border
|
||||
2.70 :
|
||||
correction de la balise HR, ajout de la propriété padding pour les table, th, td
|
||||
correction des dimensions, les unités px, mm, in, pt sont enfin réellement reproduites, correction de font-size, border, ...
|
||||
ajout d'une propriété à la balise page : footer
|
||||
correction dans l'affichage et le calcul des tables
|
||||
2.55 : vérification de la validité du code (ouverture / fermeture) - ajout des unités mm, in, pt
|
||||
2.50 : correction de nobreak, des marges, ajout de nombreuses balises
|
||||
2.40 : refonte totale de l'identification des styles CSS. Les héritages marchent.
|
||||
2.39 : corrections diverses, ajout de certaines propriétés (bgcolor, ...)
|
||||
2.38 : meilleur identification des propriétés border et color
|
||||
2.37 : nombreuses corrections : balise A, couleur de fond, retour à la ligne, gestion des images dans un texte, ...
|
||||
2.36 : ajout des balises STRONG, EM
|
||||
2.35 : amélioration de la gestion des feuilles de style
|
||||
2.31 : correction de quelques bugs
|
||||
2.30 : première version opérationnel des feuilles de style
|
||||
2.25 : ajout de la balise LINK pour le type text/css
|
||||
2.20 : premier jet de la gestion des feuilles de style, ajout de la balise STYLE
|
||||
2.15 : n'interprète plus l'HTML en commentaire <!-- -->
|
||||
2.10 : ajout des balises H1 -> H6
|
||||
2.01 : correction de quelques bugs
|
||||
2.00 : première version diffusée
|
341
library/Vendors/html2pdf/_fpdf/FAQ.htm
Normal file
341
library/Vendors/html2pdf/_fpdf/FAQ.htm
Normal file
@ -0,0 +1,341 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>FAQ</title>
|
||||
<link type="text/css" rel="stylesheet" href="fpdf.css">
|
||||
<style type="text/css">
|
||||
ul {list-style-type:none; margin:0; padding:0}
|
||||
ul#answers li {margin-top:1.8em}
|
||||
.question {font-weight:bold; color:#900000}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FAQ</h1>
|
||||
<ul>
|
||||
<li><b>1.</b> <a href='#q1'>What's exactly the license of FPDF? Are there any usage restrictions?</a></li>
|
||||
<li><b>2.</b> <a href='#q2'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</a></li>
|
||||
<li><b>3.</b> <a href='#q3'>I try to generate a PDF and IE displays a blank page. What happens?</a></li>
|
||||
<li><b>4.</b> <a href='#q4'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</a></li>
|
||||
<li><b>5.</b> <a href='#q5'>I try to display a variable in the Header method but nothing prints.</a></li>
|
||||
<li><b>6.</b> <a href='#q6'>I defined the Header and Footer methods in my PDF class but nothing appears.</a></li>
|
||||
<li><b>7.</b> <a href='#q7'>Accented characters are replaced by some strange characters like é.</a></li>
|
||||
<li><b>8.</b> <a href='#q8'>I try to display the Euro symbol but it doesn't work.</a></li>
|
||||
<li><b>9.</b> <a href='#q9'>I get the following error when I try to generate a PDF: Some data has already been output, can't send PDF file</a></li>
|
||||
<li><b>10.</b> <a href='#q10'>I draw a frame with very precise dimensions, but when printed I notice some differences.</a></li>
|
||||
<li><b>11.</b> <a href='#q11'>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?</a></li>
|
||||
<li><b>12.</b> <a href='#q12'>How can I put a background in my PDF?</a></li>
|
||||
<li><b>13.</b> <a href='#q13'>How can I set a specific header or footer on the first page?</a></li>
|
||||
<li><b>14.</b> <a href='#q14'>I'd like to use extensions provided by different scripts. How can I combine them?</a></li>
|
||||
<li><b>15.</b> <a href='#q15'>How can I send the PDF by email?</a></li>
|
||||
<li><b>16.</b> <a href='#q16'>What's the limit of the file sizes I can generate with FPDF?</a></li>
|
||||
<li><b>17.</b> <a href='#q17'>Can I modify a PDF with FPDF?</a></li>
|
||||
<li><b>18.</b> <a href='#q18'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</a></li>
|
||||
<li><b>19.</b> <a href='#q19'>Can I convert an HTML page to PDF with FPDF?</a></li>
|
||||
<li><b>20.</b> <a href='#q20'>Can I concatenate PDF files with FPDF?</a></li>
|
||||
</ul>
|
||||
|
||||
<ul id='answers'>
|
||||
<li id='q1'>
|
||||
<p><b>1.</b> <span class='question'>What's exactly the license of FPDF? Are there any usage restrictions?</span></p>
|
||||
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.
|
||||
</li>
|
||||
|
||||
<li id='q2'>
|
||||
<p><b>2.</b> <span class='question'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</span></p>
|
||||
These "weird" characters are in fact the actual content of your PDF. This behavior is a bug of
|
||||
IE6. When it first receives an HTML page, then a PDF from the same URL, it displays it directly
|
||||
without launching Acrobat. This happens frequently during the development stage: on the least
|
||||
script error, an HTML page is sent, and after correction, the PDF arrives.
|
||||
<br>
|
||||
To solve the problem, simply quit and restart IE. You can also go to another URL and come
|
||||
back.
|
||||
<br>
|
||||
To avoid this kind of inconvenience during the development, you can generate the PDF directly
|
||||
to a file and open it through the explorer.
|
||||
</li>
|
||||
|
||||
<li id='q3'>
|
||||
<p><b>3.</b> <span class='question'>I try to generate a PDF and IE displays a blank page. What happens?</span></p>
|
||||
First of all, check that you send nothing to the browser after the PDF (not even a space or a
|
||||
carriage return). You can put an exit statement just after the call to the Output() method to
|
||||
be sure. If it still doesn't work, it means you're a victim of the "blank page syndrome". IE
|
||||
used in conjunction with the Acrobat plug-in suffers from many bugs. To avoid these problems
|
||||
in a reliable manner, two main techniques exist:
|
||||
<br>
|
||||
<br>
|
||||
- Disable the plug-in and use Acrobat as a helper application. To do this, launch Acrobat, go
|
||||
to the Edit menu, Preferences, Internet, and uncheck "Display PDF in browser". Then, the next
|
||||
time you load a PDF in IE, it displays the dialog box "Open it" or "Save it to disk". Uncheck
|
||||
the option "Always ask before opening this type of file" and choose Open. From now on, PDF files
|
||||
will open automatically in an external Acrobat window.
|
||||
<br>
|
||||
The drawback of the method is that you need to alter the client configuration, which you can do
|
||||
in an intranet environment but not for the Internet.
|
||||
<br>
|
||||
<br>
|
||||
- Use a redirection technique. It consists in generating the PDF in a temporary file on the server
|
||||
and redirect the client to it. For example, at the end of the script, you can put the following:
|
||||
<div class="doc-source">
|
||||
<pre><code>//Determine a temporary file name in the current directory
|
||||
$file = basename(tempnam('.', 'tmp'));
|
||||
rename($file, $file.'.pdf');
|
||||
$file .= '.pdf';
|
||||
//Save PDF to file
|
||||
$pdf->Output($file, 'F');
|
||||
//Redirect
|
||||
header('Location: '.$file);</code></pre>
|
||||
</div>
|
||||
This method turns the dynamic PDF into a static one and avoids all troubles. But you have to do
|
||||
some cleaning in order to delete the temporary files. For example:
|
||||
<div class="doc-source">
|
||||
<pre><code>function CleanFiles($dir)
|
||||
{
|
||||
//Delete temporary files
|
||||
$t = time();
|
||||
$h = opendir($dir);
|
||||
while($file=readdir($h))
|
||||
{
|
||||
if(substr($file,0,3)=='tmp' && substr($file,-4)=='.pdf')
|
||||
{
|
||||
$path = $dir.'/'.$file;
|
||||
if($t-filemtime($path)>3600)
|
||||
@unlink($path);
|
||||
}
|
||||
}
|
||||
closedir($h);
|
||||
}</code></pre>
|
||||
</div>
|
||||
This function deletes all files of the form tmp*.pdf older than an hour in the specified
|
||||
directory. You may call it where you want, for example in the script which generates the PDF.
|
||||
</li>
|
||||
|
||||
<li id='q4'>
|
||||
<p><b>4.</b> <span class='question'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</span></p>
|
||||
You have to enclose your string with double quotes, not single ones.
|
||||
</li>
|
||||
|
||||
<li id='q5'>
|
||||
<p><b>5.</b> <span class='question'>I try to display a variable in the Header method but nothing prints.</span></p>
|
||||
You have to use the <code>global</code> keyword to access global variables, for example:
|
||||
<div class="doc-source">
|
||||
<pre><code>function Header()
|
||||
{
|
||||
global $title;
|
||||
|
||||
$this->SetFont('Arial', 'B', 15);
|
||||
$this->Cell(0, 10, $title, 1, 1, 'C');
|
||||
}
|
||||
|
||||
$title = 'My title';</code></pre>
|
||||
</div>
|
||||
Alternatively, you can use an object property:
|
||||
<div class="doc-source">
|
||||
<pre><code>function Header()
|
||||
{
|
||||
$this->SetFont('Arial', 'B', 15);
|
||||
$this->Cell(0, 10, $this->title, 1, 1, 'C');
|
||||
}
|
||||
|
||||
$pdf->title = 'My title';</code></pre>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li id='q6'>
|
||||
<p><b>6.</b> <span class='question'>I defined the Header and Footer methods in my PDF class but nothing appears.</span></p>
|
||||
You have to create an object from the PDF class, not FPDF:
|
||||
<div class="doc-source">
|
||||
<pre><code>$pdf = new PDF();</code></pre>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li id='q7'>
|
||||
<p><b>7.</b> <span class='question'>Accented characters are replaced by some strange characters like é.</span></p>
|
||||
Don't use UTF-8 encoding. Standard FPDF fonts use ISO-8859-1 or Windows-1252.
|
||||
It is possible to perform a conversion to ISO-8859-1 with utf8_decode():
|
||||
<div class="doc-source">
|
||||
<pre><code>$str = utf8_decode($str);</code></pre>
|
||||
</div>
|
||||
But some characters such as Euro won't be translated correctly. If the iconv extension is available, the
|
||||
right way to do it is the following:
|
||||
<div class="doc-source">
|
||||
<pre><code>$str = iconv('UTF-8', 'windows-1252', $str);</code></pre>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li id='q8'>
|
||||
<p><b>8.</b> <span class='question'>I try to display the Euro symbol but it doesn't work.</span></p>
|
||||
The standard fonts have the Euro character at position 128. You can define a constant like this
|
||||
for convenience:
|
||||
<div class="doc-source">
|
||||
<pre><code>define('EURO', chr(128));</code></pre>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li id='q9'>
|
||||
<p><b>9.</b> <span class='question'>I get the following error when I try to generate a PDF: Some data has already been output, can't send PDF file</span></p>
|
||||
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.<br>
|
||||
If you can't figure out where the problem comes from, this other message appearing just before can help you:<br>
|
||||
<br>
|
||||
<b>Warning:</b> Cannot modify header information - headers already sent by (output started at script.php:X)<br>
|
||||
<br>
|
||||
It means that script.php outputs something at line X. Go to this line and fix it.
|
||||
In case the message doesn't show, first check that you didn't disable warnings, then add this at the very
|
||||
beginning of your script:
|
||||
<div class="doc-source">
|
||||
<pre><code>ob_end_clean();</code></pre>
|
||||
</div>
|
||||
If you still don't see it, disable zlib.output_compression in your php.ini and it should appear.
|
||||
</li>
|
||||
|
||||
<li id='q10'>
|
||||
<p><b>10.</b> <span class='question'>I draw a frame with very precise dimensions, but when printed I notice some differences.</span></p>
|
||||
To respect dimensions, select "None" for the Page Scaling setting instead of "Shrink to Printable Area" in the print dialog box.
|
||||
</li>
|
||||
|
||||
<li id='q11'>
|
||||
<p><b>11.</b> <span class='question'>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?</span></p>
|
||||
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.
|
||||
</li>
|
||||
|
||||
<li id='q12'>
|
||||
<p><b>12.</b> <span class='question'>How can I put a background in my PDF?</span></p>
|
||||
For a picture, call Image() in the Header() method, before any other output. To set a background color, use Rect().
|
||||
</li>
|
||||
|
||||
<li id='q13'>
|
||||
<p><b>13.</b> <span class='question'>How can I set a specific header or footer on the first page?</span></p>
|
||||
Simply test the page number:
|
||||
<div class="doc-source">
|
||||
<pre><code>function Header()
|
||||
{
|
||||
if($this->PageNo()==1)
|
||||
{
|
||||
//First page
|
||||
...
|
||||
}
|
||||
else
|
||||
{
|
||||
//Other pages
|
||||
...
|
||||
}
|
||||
}</code></pre>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li id='q14'>
|
||||
<p><b>14.</b> <span class='question'>I'd like to use extensions provided by different scripts. How can I combine them?</span></p>
|
||||
Use an inheritance chain. If you have two classes, say A in a.php:
|
||||
<div class="doc-source">
|
||||
<pre><code>require('fpdf.php');
|
||||
|
||||
class A extends FPDF
|
||||
{
|
||||
...
|
||||
}</code></pre>
|
||||
</div>
|
||||
and B in b.php:
|
||||
<div class="doc-source">
|
||||
<pre><code>require('fpdf.php');
|
||||
|
||||
class B extends FPDF
|
||||
{
|
||||
...
|
||||
}</code></pre>
|
||||
</div>
|
||||
then make B extend A:
|
||||
<div class="doc-source">
|
||||
<pre><code>require('a.php');
|
||||
|
||||
class B extends A
|
||||
{
|
||||
...
|
||||
}</code></pre>
|
||||
</div>
|
||||
and make your own class extend B:
|
||||
<div class="doc-source">
|
||||
<pre><code>require('b.php');
|
||||
|
||||
class PDF extends B
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
$pdf = new PDF();</code></pre>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li id='q15'>
|
||||
<p><b>15.</b> <span class='question'>How can I send the PDF by email?</span></p>
|
||||
As any other file, but an easy way is to use <a href="http://phpmailer.codeworxtech.com">PHPMailer</a> and
|
||||
its in-memory attachment:
|
||||
<div class="doc-source">
|
||||
<pre><code>$mail = new PHPMailer();
|
||||
...
|
||||
$doc = $pdf->Output('', 'S');
|
||||
$mail->AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
|
||||
$mail->Send();</code></pre>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li id='q16'>
|
||||
<p><b>16.</b> <span class='question'>What's the limit of the file sizes I can generate with FPDF?</span></p>
|
||||
There is no particular limit. There are some constraints, however:
|
||||
<br>
|
||||
<br>
|
||||
- The maximum memory size allocated to PHP scripts is usually 8MB. For very big documents,
|
||||
especially with images, this limit may be reached (the file being built into memory). The
|
||||
parameter is configured in the php.ini file.
|
||||
<br>
|
||||
<br>
|
||||
- The maximum execution time allocated defaults to 30 seconds. This limit can of course be easily
|
||||
reached. It is configured in php.ini and may be altered dynamically with set_time_limit().
|
||||
<br>
|
||||
<br>
|
||||
- Browsers generally have a 5 minute time-out. If you send the PDF directly to the browser and
|
||||
reach the limit, it will be lost. It is therefore advised for very big documents to
|
||||
generate them in a file, and to send some data to the browser from time to time (with a call
|
||||
to flush() to force the output). When the document is finished, you can send a redirection to
|
||||
it or create a link.
|
||||
<br>
|
||||
Remark: even if the browser times out, the script may continue to run on the server.
|
||||
</li>
|
||||
|
||||
<li id='q17'>
|
||||
<p><b>17.</b> <span class='question'>Can I modify a PDF with FPDF?</span></p>
|
||||
It is possible to import pages from an existing PDF document thanks to the FPDI extension:<br>
|
||||
<br>
|
||||
<a href="http://www.setasign.de/products/pdf-php-solutions/fpdi/" target="_blank">http://www.setasign.de/products/pdf-php-solutions/fpdi/</a><br>
|
||||
<br>
|
||||
You can then add some content to them.
|
||||
</li>
|
||||
|
||||
<li id='q18'>
|
||||
<p><b>18.</b> <span class='question'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</span></p>
|
||||
No. But a GPL C utility does exist, pdftotext, which is able to extract the textual content from
|
||||
a PDF. It is provided with the Xpdf package:<br>
|
||||
<br>
|
||||
<a href="http://www.foolabs.com/xpdf/" target="_blank">http://www.foolabs.com/xpdf/</a>
|
||||
</li>
|
||||
|
||||
<li id='q19'>
|
||||
<p><b>19.</b> <span class='question'>Can I convert an HTML page to PDF with FPDF?</span></p>
|
||||
Not real-world pages. But a GPL C utility does exist, htmldoc, which allows to do it and gives good results:<br>
|
||||
<br>
|
||||
<a href="http://www.htmldoc.org" target="_blank">http://www.htmldoc.org</a>
|
||||
</li>
|
||||
|
||||
<li id='q20'>
|
||||
<p><b>20.</b> <span class='question'>Can I concatenate PDF files with FPDF?</span></p>
|
||||
Not directly, but it is possible to use <a href="http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/concatenate-fake/" target="_blank">FPDI</a>
|
||||
to perform this task. Some free command-line tools also exist:<br>
|
||||
<br>
|
||||
<a href="http://thierry.schmit.free.fr/spip/spip.php?article15&lang=en" target="_blank">mbtPdfAsm</a><br>
|
||||
<a href="http://www.accesspdf.com/pdftk/" target="_blank">pdftk</a>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
3
library/Vendors/html2pdf/_fpdf/doc/read_me.txt
Normal file
3
library/Vendors/html2pdf/_fpdf/doc/read_me.txt
Normal file
@ -0,0 +1,3 @@
|
||||
You can read the documentation at : http://fpdf.org/en/doc/index.php
|
||||
|
||||
it has been removed because of the size of the package of HTML2PDF...
|
7
library/Vendors/html2pdf/_fpdf/font/courier.php
Normal file
7
library/Vendors/html2pdf/_fpdf/font/courier.php
Normal file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
for($i=0;$i<=255;$i++)
|
||||
$fpdf_charwidths['courier'][chr($i)]=600;
|
||||
$fpdf_charwidths['courierB']=$fpdf_charwidths['courier'];
|
||||
$fpdf_charwidths['courierI']=$fpdf_charwidths['courier'];
|
||||
$fpdf_charwidths['courierBI']=$fpdf_charwidths['courier'];
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/helvetica.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/helvetica.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helvetica']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
|
||||
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
|
||||
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
|
||||
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
|
||||
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/helveticab.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/helveticab.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helveticaB']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
|
||||
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
|
||||
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
|
||||
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
|
||||
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/helveticabi.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/helveticabi.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helveticaBI']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
|
||||
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
|
||||
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
|
||||
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
|
||||
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/helveticai.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/helveticai.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helveticaI']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
|
||||
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
|
||||
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
|
||||
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
|
||||
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
|
||||
?>
|
251
library/Vendors/html2pdf/_fpdf/font/makefont/cp1250.map
Normal file
251
library/Vendors/html2pdf/_fpdf/font/makefont/cp1250.map
Normal file
@ -0,0 +1,251 @@
|
||||
!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
|
255
library/Vendors/html2pdf/_fpdf/font/makefont/cp1251.map
Normal file
255
library/Vendors/html2pdf/_fpdf/font/makefont/cp1251.map
Normal file
@ -0,0 +1,255 @@
|
||||
!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
|
251
library/Vendors/html2pdf/_fpdf/font/makefont/cp1252.map
Normal file
251
library/Vendors/html2pdf/_fpdf/font/makefont/cp1252.map
Normal file
@ -0,0 +1,251 @@
|
||||
!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
|
239
library/Vendors/html2pdf/_fpdf/font/makefont/cp1253.map
Normal file
239
library/Vendors/html2pdf/_fpdf/font/makefont/cp1253.map
Normal file
@ -0,0 +1,239 @@
|
||||
!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
|
249
library/Vendors/html2pdf/_fpdf/font/makefont/cp1254.map
Normal file
249
library/Vendors/html2pdf/_fpdf/font/makefont/cp1254.map
Normal file
@ -0,0 +1,249 @@
|
||||
!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
|
233
library/Vendors/html2pdf/_fpdf/font/makefont/cp1255.map
Normal file
233
library/Vendors/html2pdf/_fpdf/font/makefont/cp1255.map
Normal file
@ -0,0 +1,233 @@
|
||||
!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
|
244
library/Vendors/html2pdf/_fpdf/font/makefont/cp1257.map
Normal file
244
library/Vendors/html2pdf/_fpdf/font/makefont/cp1257.map
Normal file
@ -0,0 +1,244 @@
|
||||
!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
|
247
library/Vendors/html2pdf/_fpdf/font/makefont/cp1258.map
Normal file
247
library/Vendors/html2pdf/_fpdf/font/makefont/cp1258.map
Normal file
@ -0,0 +1,247 @@
|
||||
!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
|
225
library/Vendors/html2pdf/_fpdf/font/makefont/cp874.map
Normal file
225
library/Vendors/html2pdf/_fpdf/font/makefont/cp874.map
Normal file
@ -0,0 +1,225 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-1.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-1.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
248
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-11.map
Normal file
248
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-11.map
Normal file
@ -0,0 +1,248 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-15.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-15.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-16.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-16.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-2.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-2.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-4.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-4.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-5.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-5.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
250
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-7.map
Normal file
250
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-7.map
Normal file
@ -0,0 +1,250 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-9.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/iso-8859-9.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/koi8-r.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/koi8-r.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
256
library/Vendors/html2pdf/_fpdf/font/makefont/koi8-u.map
Normal file
256
library/Vendors/html2pdf/_fpdf/font/makefont/koi8-u.map
Normal file
@ -0,0 +1,256 @@
|
||||
!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
|
419
library/Vendors/html2pdf/_fpdf/font/makefont/makefont.php
Normal file
419
library/Vendors/html2pdf/_fpdf/font/makefont/makefont.php
Normal file
@ -0,0 +1,419 @@
|
||||
<?php
|
||||
/*******************************************************************************
|
||||
* Utility to generate font definition files *
|
||||
* *
|
||||
* Version: 1.14 *
|
||||
* Date: 2008-08-03 *
|
||||
* Author: Olivier PLATHEY *
|
||||
*******************************************************************************/
|
||||
|
||||
function ReadMap($enc)
|
||||
{
|
||||
//Read a map file
|
||||
$file=dirname(__FILE__).'/'.strtolower($enc).'.map';
|
||||
$a=file($file);
|
||||
if(empty($a))
|
||||
die('<b>Error:</b> encoding not found: '.$enc);
|
||||
$cc2gn=array();
|
||||
foreach($a as $l)
|
||||
{
|
||||
if($l[0]=='!')
|
||||
{
|
||||
$e=preg_split('/[ \\t]+/',rtrim($l));
|
||||
$cc=hexdec(substr($e[0],1));
|
||||
$gn=$e[2];
|
||||
$cc2gn[$cc]=$gn;
|
||||
}
|
||||
}
|
||||
for($i=0;$i<=255;$i++)
|
||||
{
|
||||
if(!isset($cc2gn[$i]))
|
||||
$cc2gn[$i]='.notdef';
|
||||
}
|
||||
return $cc2gn;
|
||||
}
|
||||
|
||||
function ReadAFM($file, &$map)
|
||||
{
|
||||
//Read a font metric file
|
||||
$a=file($file);
|
||||
if(empty($a))
|
||||
die('File not found');
|
||||
$widths=array();
|
||||
$fm=array();
|
||||
$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent',
|
||||
'Odblacute'=>'Ohungarumlaut','odblacute'=>'ohungarumlaut','Udblacute'=>'Uhungarumlaut','udblacute'=>'uhungarumlaut',
|
||||
'Gcedilla'=>'Gcommaaccent','gcedilla'=>'gcommaaccent','Kcedilla'=>'Kcommaaccent','kcedilla'=>'kcommaaccent',
|
||||
'Lcedilla'=>'Lcommaaccent','lcedilla'=>'lcommaaccent','Ncedilla'=>'Ncommaaccent','ncedilla'=>'ncommaaccent',
|
||||
'Rcedilla'=>'Rcommaaccent','rcedilla'=>'rcommaaccent','Scedilla'=>'Scommaaccent','scedilla'=>'scommaaccent',
|
||||
'Tcedilla'=>'Tcommaaccent','tcedilla'=>'tcommaaccent','Dslash'=>'Dcroat','dslash'=>'dcroat','Dmacron'=>'Dcroat','dmacron'=>'dcroat',
|
||||
'combininggraveaccent'=>'gravecomb','combininghookabove'=>'hookabovecomb','combiningtildeaccent'=>'tildecomb',
|
||||
'combiningacuteaccent'=>'acutecomb','combiningdotbelow'=>'dotbelowcomb','dongsign'=>'dong');
|
||||
foreach($a as $l)
|
||||
{
|
||||
$e=explode(' ',rtrim($l));
|
||||
if(count($e)<2)
|
||||
continue;
|
||||
$code=$e[0];
|
||||
$param=$e[1];
|
||||
if($code=='C')
|
||||
{
|
||||
//Character metrics
|
||||
$cc=(int)$e[1];
|
||||
$w=$e[4];
|
||||
$gn=$e[7];
|
||||
if(substr($gn,-4)=='20AC')
|
||||
$gn='Euro';
|
||||
if(isset($fix[$gn]))
|
||||
{
|
||||
//Fix incorrect glyph name
|
||||
foreach($map as $c=>$n)
|
||||
{
|
||||
if($n==$fix[$gn])
|
||||
$map[$c]=$gn;
|
||||
}
|
||||
}
|
||||
if(empty($map))
|
||||
{
|
||||
//Symbolic font: use built-in encoding
|
||||
$widths[$cc]=$w;
|
||||
}
|
||||
else
|
||||
{
|
||||
$widths[$gn]=$w;
|
||||
if($gn=='X')
|
||||
$fm['CapXHeight']=$e[13];
|
||||
}
|
||||
if($gn=='.notdef')
|
||||
$fm['MissingWidth']=$w;
|
||||
}
|
||||
elseif($code=='FontName')
|
||||
$fm['FontName']=$param;
|
||||
elseif($code=='Weight')
|
||||
$fm['Weight']=$param;
|
||||
elseif($code=='ItalicAngle')
|
||||
$fm['ItalicAngle']=(double)$param;
|
||||
elseif($code=='Ascender')
|
||||
$fm['Ascender']=(int)$param;
|
||||
elseif($code=='Descender')
|
||||
$fm['Descender']=(int)$param;
|
||||
elseif($code=='UnderlineThickness')
|
||||
$fm['UnderlineThickness']=(int)$param;
|
||||
elseif($code=='UnderlinePosition')
|
||||
$fm['UnderlinePosition']=(int)$param;
|
||||
elseif($code=='IsFixedPitch')
|
||||
$fm['IsFixedPitch']=($param=='true');
|
||||
elseif($code=='FontBBox')
|
||||
$fm['FontBBox']=array($e[1],$e[2],$e[3],$e[4]);
|
||||
elseif($code=='CapHeight')
|
||||
$fm['CapHeight']=(int)$param;
|
||||
elseif($code=='StdVW')
|
||||
$fm['StdVW']=(int)$param;
|
||||
}
|
||||
if(!isset($fm['FontName']))
|
||||
die('FontName not found');
|
||||
if(!empty($map))
|
||||
{
|
||||
if(!isset($widths['.notdef']))
|
||||
$widths['.notdef']=600;
|
||||
if(!isset($widths['Delta']) && isset($widths['increment']))
|
||||
$widths['Delta']=$widths['increment'];
|
||||
//Order widths according to map
|
||||
for($i=0;$i<=255;$i++)
|
||||
{
|
||||
if(!isset($widths[$map[$i]]))
|
||||
{
|
||||
echo '<b>Warning:</b> character '.$map[$i].' is missing<br>';
|
||||
$widths[$i]=$widths['.notdef'];
|
||||
}
|
||||
else
|
||||
$widths[$i]=$widths[$map[$i]];
|
||||
}
|
||||
}
|
||||
$fm['Widths']=$widths;
|
||||
return $fm;
|
||||
}
|
||||
|
||||
function MakeFontDescriptor($fm, $symbolic)
|
||||
{
|
||||
//Ascent
|
||||
$asc=(isset($fm['Ascender']) ? $fm['Ascender'] : 1000);
|
||||
$fd="array('Ascent'=>".$asc;
|
||||
//Descent
|
||||
$desc=(isset($fm['Descender']) ? $fm['Descender'] : -200);
|
||||
$fd.=",'Descent'=>".$desc;
|
||||
//CapHeight
|
||||
if(isset($fm['CapHeight']))
|
||||
$ch=$fm['CapHeight'];
|
||||
elseif(isset($fm['CapXHeight']))
|
||||
$ch=$fm['CapXHeight'];
|
||||
else
|
||||
$ch=$asc;
|
||||
$fd.=",'CapHeight'=>".$ch;
|
||||
//Flags
|
||||
$flags=0;
|
||||
if(isset($fm['IsFixedPitch']) && $fm['IsFixedPitch'])
|
||||
$flags+=1<<0;
|
||||
if($symbolic)
|
||||
$flags+=1<<2;
|
||||
if(!$symbolic)
|
||||
$flags+=1<<5;
|
||||
if(isset($fm['ItalicAngle']) && $fm['ItalicAngle']!=0)
|
||||
$flags+=1<<6;
|
||||
$fd.=",'Flags'=>".$flags;
|
||||
//FontBBox
|
||||
if(isset($fm['FontBBox']))
|
||||
$fbb=$fm['FontBBox'];
|
||||
else
|
||||
$fbb=array(0,$desc-100,1000,$asc+100);
|
||||
$fd.=",'FontBBox'=>'[".$fbb[0].' '.$fbb[1].' '.$fbb[2].' '.$fbb[3]."]'";
|
||||
//ItalicAngle
|
||||
$ia=(isset($fm['ItalicAngle']) ? $fm['ItalicAngle'] : 0);
|
||||
$fd.=",'ItalicAngle'=>".$ia;
|
||||
//StemV
|
||||
if(isset($fm['StdVW']))
|
||||
$stemv=$fm['StdVW'];
|
||||
elseif(isset($fm['Weight']) && preg_match('/bold|black/i',$fm['Weight']))
|
||||
$stemv=120;
|
||||
else
|
||||
$stemv=70;
|
||||
$fd.=",'StemV'=>".$stemv;
|
||||
//MissingWidth
|
||||
if(isset($fm['MissingWidth']))
|
||||
$fd.=",'MissingWidth'=>".$fm['MissingWidth'];
|
||||
$fd.=')';
|
||||
return $fd;
|
||||
}
|
||||
|
||||
function MakeWidthArray($fm)
|
||||
{
|
||||
//Make character width array
|
||||
$s="array(\n\t";
|
||||
$cw=$fm['Widths'];
|
||||
for($i=0;$i<=255;$i++)
|
||||
{
|
||||
if(chr($i)=="'")
|
||||
$s.="'\\''";
|
||||
elseif(chr($i)=="\\")
|
||||
$s.="'\\\\'";
|
||||
elseif($i>=32 && $i<=126)
|
||||
$s.="'".chr($i)."'";
|
||||
else
|
||||
$s.="chr($i)";
|
||||
$s.='=>'.$fm['Widths'][$i];
|
||||
if($i<255)
|
||||
$s.=',';
|
||||
if(($i+1)%22==0)
|
||||
$s.="\n\t";
|
||||
}
|
||||
$s.=')';
|
||||
return $s;
|
||||
}
|
||||
|
||||
function MakeFontEncoding($map)
|
||||
{
|
||||
//Build differences from reference encoding
|
||||
$ref=ReadMap('cp1252');
|
||||
$s='';
|
||||
$last=0;
|
||||
for($i=32;$i<=255;$i++)
|
||||
{
|
||||
if($map[$i]!=$ref[$i])
|
||||
{
|
||||
if($i!=$last+1)
|
||||
$s.=$i.' ';
|
||||
$last=$i;
|
||||
$s.='/'.$map[$i].' ';
|
||||
}
|
||||
}
|
||||
return rtrim($s);
|
||||
}
|
||||
|
||||
function SaveToFile($file, $s, $mode)
|
||||
{
|
||||
$f=fopen($file,'w'.$mode);
|
||||
if(!$f)
|
||||
die('Can\'t write to file '.$file);
|
||||
fwrite($f,$s,strlen($s));
|
||||
fclose($f);
|
||||
}
|
||||
|
||||
function ReadShort($f)
|
||||
{
|
||||
$a=unpack('n1n',fread($f,2));
|
||||
return $a['n'];
|
||||
}
|
||||
|
||||
function ReadLong($f)
|
||||
{
|
||||
$a=unpack('N1N',fread($f,4));
|
||||
return $a['N'];
|
||||
}
|
||||
|
||||
function CheckTTF($file)
|
||||
{
|
||||
//Check if font license allows embedding
|
||||
$f=fopen($file,'rb');
|
||||
if(!$f)
|
||||
die('<b>Error:</b> Can\'t open '.$file);
|
||||
//Extract number of tables
|
||||
fseek($f,4,SEEK_CUR);
|
||||
$nb=ReadShort($f);
|
||||
fseek($f,6,SEEK_CUR);
|
||||
//Seek OS/2 table
|
||||
$found=false;
|
||||
for($i=0;$i<$nb;$i++)
|
||||
{
|
||||
if(fread($f,4)=='OS/2')
|
||||
{
|
||||
$found=true;
|
||||
break;
|
||||
}
|
||||
fseek($f,12,SEEK_CUR);
|
||||
}
|
||||
if(!$found)
|
||||
{
|
||||
fclose($f);
|
||||
return;
|
||||
}
|
||||
fseek($f,4,SEEK_CUR);
|
||||
$offset=ReadLong($f);
|
||||
fseek($f,$offset,SEEK_SET);
|
||||
//Extract fsType flags
|
||||
fseek($f,8,SEEK_CUR);
|
||||
$fsType=ReadShort($f);
|
||||
$rl=($fsType & 0x02)!=0;
|
||||
$pp=($fsType & 0x04)!=0;
|
||||
$e=($fsType & 0x08)!=0;
|
||||
fclose($f);
|
||||
if($rl && !$pp && !$e)
|
||||
echo '<b>Warning:</b> font license does not allow embedding';
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* fontfile: path to TTF file (or empty string if not to be embedded) *
|
||||
* afmfile: path to AFM file *
|
||||
* enc: font encoding (or empty string for symbolic fonts) *
|
||||
* patch: optional patch for encoding *
|
||||
* type: font type if fontfile is empty *
|
||||
*******************************************************************************/
|
||||
function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='TrueType')
|
||||
{
|
||||
//Generate a font definition file
|
||||
if(get_magic_quotes_runtime())
|
||||
@set_magic_quotes_runtime(0);
|
||||
ini_set('auto_detect_line_endings','1');
|
||||
if($enc)
|
||||
{
|
||||
$map=ReadMap($enc);
|
||||
foreach($patch as $cc=>$gn)
|
||||
$map[$cc]=$gn;
|
||||
}
|
||||
else
|
||||
$map=array();
|
||||
if(!file_exists($afmfile))
|
||||
die('<b>Error:</b> AFM file not found: '.$afmfile);
|
||||
$fm=ReadAFM($afmfile,$map);
|
||||
if($enc)
|
||||
$diff=MakeFontEncoding($map);
|
||||
else
|
||||
$diff='';
|
||||
$fd=MakeFontDescriptor($fm,empty($map));
|
||||
//Find font type
|
||||
if($fontfile)
|
||||
{
|
||||
$ext=strtolower(substr($fontfile,-3));
|
||||
if($ext=='ttf')
|
||||
$type='TrueType';
|
||||
elseif($ext=='pfb')
|
||||
$type='Type1';
|
||||
else
|
||||
die('<b>Error:</b> unrecognized font file extension: '.$ext);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($type!='TrueType' && $type!='Type1')
|
||||
die('<b>Error:</b> incorrect font type: '.$type);
|
||||
}
|
||||
//Start generation
|
||||
$s='<?php'."\n";
|
||||
$s.='$type=\''.$type."';\n";
|
||||
$s.='$name=\''.$fm['FontName']."';\n";
|
||||
$s.='$desc='.$fd.";\n";
|
||||
if(!isset($fm['UnderlinePosition']))
|
||||
$fm['UnderlinePosition']=-100;
|
||||
if(!isset($fm['UnderlineThickness']))
|
||||
$fm['UnderlineThickness']=50;
|
||||
$s.='$up='.$fm['UnderlinePosition'].";\n";
|
||||
$s.='$ut='.$fm['UnderlineThickness'].";\n";
|
||||
$w=MakeWidthArray($fm);
|
||||
$s.='$cw='.$w.";\n";
|
||||
$s.='$enc=\''.$enc."';\n";
|
||||
$s.='$diff=\''.$diff."';\n";
|
||||
$basename=substr(basename($afmfile),0,-4);
|
||||
if($fontfile)
|
||||
{
|
||||
//Embedded font
|
||||
if(!file_exists($fontfile))
|
||||
die('<b>Error:</b> font file not found: '.$fontfile);
|
||||
if($type=='TrueType')
|
||||
CheckTTF($fontfile);
|
||||
$f=fopen($fontfile,'rb');
|
||||
if(!$f)
|
||||
die('<b>Error:</b> Can\'t open '.$fontfile);
|
||||
$file=fread($f,filesize($fontfile));
|
||||
fclose($f);
|
||||
if($type=='Type1')
|
||||
{
|
||||
//Find first two sections and discard third one
|
||||
$header=(ord($file[0])==128);
|
||||
if($header)
|
||||
{
|
||||
//Strip first binary header
|
||||
$file=substr($file,6);
|
||||
}
|
||||
$pos=strpos($file,'eexec');
|
||||
if(!$pos)
|
||||
die('<b>Error:</b> font file does not seem to be valid Type1');
|
||||
$size1=$pos+6;
|
||||
if($header && ord($file[$size1])==128)
|
||||
{
|
||||
//Strip second binary header
|
||||
$file=substr($file,0,$size1).substr($file,$size1+6);
|
||||
}
|
||||
$pos=strpos($file,'00000000');
|
||||
if(!$pos)
|
||||
die('<b>Error:</b> font file does not seem to be valid Type1');
|
||||
$size2=$pos-$size1;
|
||||
$file=substr($file,0,$size1+$size2);
|
||||
}
|
||||
if(function_exists('gzcompress'))
|
||||
{
|
||||
$cmp=$basename.'.z';
|
||||
SaveToFile($cmp,gzcompress($file),'b');
|
||||
$s.='$file=\''.$cmp."';\n";
|
||||
echo 'Font file compressed ('.$cmp.')<br>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$s.='$file=\''.basename($fontfile)."';\n";
|
||||
echo '<b>Notice:</b> font file could not be compressed (zlib extension not available)<br>';
|
||||
}
|
||||
if($type=='Type1')
|
||||
{
|
||||
$s.='$size1='.$size1.";\n";
|
||||
$s.='$size2='.$size2.";\n";
|
||||
}
|
||||
else
|
||||
$s.='$originalsize='.filesize($fontfile).";\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
//Not embedded font
|
||||
$s.='$file='."'';\n";
|
||||
}
|
||||
$s.="?>\n";
|
||||
SaveToFile($basename.'.php',$s,'t');
|
||||
echo 'Font definition file generated ('.$basename.'.php'.')<br>';
|
||||
}
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/symbol.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/symbol.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['symbol']=array(
|
||||
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
|
||||
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
|
||||
','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
|
||||
'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
|
||||
'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
|
||||
'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
|
||||
chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
|
||||
chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
|
||||
chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
|
||||
chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
|
||||
chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
|
||||
chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/times.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/times.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['times']=array(
|
||||
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
|
||||
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
|
||||
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
|
||||
'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
|
||||
'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
|
||||
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
|
||||
chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
|
||||
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
|
||||
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
|
||||
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/timesb.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/timesb.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['timesB']=array(
|
||||
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
|
||||
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
|
||||
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
|
||||
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
|
||||
'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
|
||||
'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
|
||||
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
|
||||
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/timesbi.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/timesbi.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['timesBI']=array(
|
||||
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
|
||||
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
|
||||
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
|
||||
'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
|
||||
'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
|
||||
'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
|
||||
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
|
||||
chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
|
||||
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/timesi.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/timesi.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['timesI']=array(
|
||||
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
|
||||
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
|
||||
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
|
||||
'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
|
||||
'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
|
||||
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
|
||||
chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
|
||||
chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
|
||||
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
|
||||
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
|
||||
?>
|
15
library/Vendors/html2pdf/_fpdf/font/zapfdingbats.php
Normal file
15
library/Vendors/html2pdf/_fpdf/font/zapfdingbats.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$fpdf_charwidths['zapfdingbats']=array(
|
||||
chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
|
||||
chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
|
||||
','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,
|
||||
'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776,
|
||||
'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873,
|
||||
'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317,
|
||||
chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
|
||||
chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788,
|
||||
chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788,
|
||||
chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
|
||||
chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
|
||||
chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
|
||||
?>
|
21
library/Vendors/html2pdf/_fpdf/fpdf.css
Normal file
21
library/Vendors/html2pdf/_fpdf/fpdf.css
Normal file
@ -0,0 +1,21 @@
|
||||
body {font-family:"Times New Roman",serif}
|
||||
h1 {font:bold 135% Arial,sans-serif; color:#4000A0; margin-bottom:0.9em}
|
||||
h2 {font:bold 95% Arial,sans-serif; color:#900000; margin-top:1.5em; margin-bottom:1em}
|
||||
dl.param dt {text-decoration:underline}
|
||||
dl.param dd {margin-top:1em; margin-bottom:1em}
|
||||
dl.param ul {margin-top:1em; margin-bottom:1em}
|
||||
tt, code, kbd {font-family:"Courier New",Courier,monospace; font-size:82%}
|
||||
div.source {margin-top:1.4em; margin-bottom:1.3em}
|
||||
div.source pre {display:table; border:1px solid #24246A; width:100%; margin:0em; font-family:inherit; font-size:100%}
|
||||
div.source code {display:block; border:1px solid #C5C5EC; background-color:#F0F5FF; padding:6px; color:#000000}
|
||||
div.doc-source {margin-top:1.4em; margin-bottom:1.3em}
|
||||
div.doc-source pre {display:table; width:100%; margin:0em; font-family:inherit; font-size:100%}
|
||||
div.doc-source code {display:block; background-color:#E0E0E0; padding:4px}
|
||||
.kw {color:#000080; font-weight:bold}
|
||||
.str {color:#CC0000}
|
||||
.cmt {color:#008000}
|
||||
p.demo {text-align:center; margin-top:-0.9em}
|
||||
a.demo {text-decoration:none; font-weight:bold; color:#0000CC}
|
||||
a.demo:link {text-decoration:none; font-weight:bold; color:#0000CC}
|
||||
a.demo:hover {text-decoration:none; font-weight:bold; color:#0000FF}
|
||||
a.demo:active {text-decoration:none; font-weight:bold; color:#0000FF}
|
1732
library/Vendors/html2pdf/_fpdf/fpdf.php
Normal file
1732
library/Vendors/html2pdf/_fpdf/fpdf.php
Normal file
File diff suppressed because it is too large
Load Diff
128
library/Vendors/html2pdf/_fpdf/histo.htm
Normal file
128
library/Vendors/html2pdf/_fpdf/histo.htm
Normal file
@ -0,0 +1,128 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>History</title>
|
||||
<link type="text/css" rel="stylesheet" href="fpdf.css">
|
||||
<style type="text/css">
|
||||
dd {margin-top:1em; margin-bottom:1em}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>History</h1>
|
||||
<dl>
|
||||
<dt><strong>v1.6</strong> (2008-08-03)</dt>
|
||||
<dd>
|
||||
- GIF image support.<br>
|
||||
- Images can now trigger page breaks.<br>
|
||||
- Possibility to have different page formats in a single document.<br>
|
||||
- Document properties (author, creator, keywords, subject and title) can now be specified in UTF-8.<br>
|
||||
- Fixed a bug: when a PNG was inserted through a URL, an error sometimes occurred.<br>
|
||||
- An automatic page break in Header() doesn't cause an infinite loop any more.<br>
|
||||
- Removed some warning messages appearing with recent PHP versions.<br>
|
||||
- Added HTTP headers to reduce problems with IE.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.53</strong> (2004-12-31)</dt>
|
||||
<dd>
|
||||
- When the font subdirectory is in the same directory as fpdf.php, it is no longer necessary to define the FPDF_FONTPATH constant.<br>
|
||||
- The array $HTTP_SERVER_VARS is no longer used. It could cause trouble on PHP5-based configurations with the register_long_arrays option disabled.<br>
|
||||
- Fixed a problem related to Type1 font embedding which caused trouble to some PDF processors.<br>
|
||||
- The file name sent to the browser could not contain a space character.<br>
|
||||
- The Cell() method could not print the number 0 (you had to pass the string '0').<br>
|
||||
</dd>
|
||||
<dt><strong>v1.52</strong> (2003-12-30)</dt>
|
||||
<dd>
|
||||
- Image() now displays the image at 72 dpi if no dimension is given.<br>
|
||||
- Output() takes a string as second parameter to indicate destination.<br>
|
||||
- Open() is now called automatically by AddPage().<br>
|
||||
- Inserting remote JPEG images doesn't generate an error any longer.<br>
|
||||
- Decimal separator is forced to dot in the constructor.<br>
|
||||
- Added several encodings (Turkish, Thai, Hebrew, Ukrainian and Vietnamese).<br>
|
||||
- The last line of a right-aligned MultiCell() was not correctly aligned if it was terminated by a carriage return.<br>
|
||||
- No more error message about already sent headers when outputting the PDF to the standard output from the command line.<br>
|
||||
- The underlining was going too far for text containing characters \, ( or ).<br>
|
||||
- $HTTP_ENV_VARS has been replaced by $HTTP_SERVER_VARS.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.51</strong> (2002-08-03)</dt>
|
||||
<dd>
|
||||
- Type1 font support.<br>
|
||||
- Added Baltic encoding.<br>
|
||||
- The class now works internally in points with the origin at the bottom in order to avoid two bugs occurring with Acrobat 5 :<br> * The line thickness was too large when printed under Windows 98 SE and ME.<br> * TrueType fonts didn't appear immediately inside the plug-in (a substitution font was used), one had to cause a window refresh to make them show up.<br>
|
||||
- It is no longer necessary to set the decimal separator as dot to produce valid documents.<br>
|
||||
- The clickable area in a cell was always on the left independently from the text alignment.<br>
|
||||
- JPEG images in CMYK mode appeared in inverted colors.<br>
|
||||
- Transparent PNG images in grayscale or true color mode were incorrectly handled.<br>
|
||||
- Adding new fonts now works correctly even with the magic_quotes_runtime option set to on.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.5</strong> (2002-05-28)</dt>
|
||||
<dd>
|
||||
- TrueType font (AddFont()) and encoding support (Western and Eastern Europe, Cyrillic and Greek).<br>
|
||||
- Added Write() method.<br>
|
||||
- Added underlined style.<br>
|
||||
- Internal and external link support (AddLink(), SetLink(), Link()).<br>
|
||||
- Added right margin management and methods SetRightMargin(), SetTopMargin().<br>
|
||||
- Modification of SetDisplayMode() to select page layout.<br>
|
||||
- The border parameter of MultiCell() now lets choose borders to draw as Cell().<br>
|
||||
- When a document contains no page, Close() now calls AddPage() instead of causing a fatal error.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.41</strong> (2002-03-13)</dt>
|
||||
<dd>
|
||||
- Fixed SetDisplayMode() which no longer worked (the PDF viewer used its default display).<br>
|
||||
</dd>
|
||||
<dt><strong>v1.4</strong> (2002-03-02)</dt>
|
||||
<dd>
|
||||
- PHP3 is no longer supported.<br>
|
||||
- Page compression (SetCompression()).<br>
|
||||
- Choice of page format and possibility to change orientation inside document.<br>
|
||||
- Added AcceptPageBreak() method.<br>
|
||||
- Ability to print the total number of pages (AliasNbPages()).<br>
|
||||
- Choice of cell borders to draw.<br>
|
||||
- New mode for Cell(): the current position can now move under the cell.<br>
|
||||
- Ability to include an image by specifying height only (width is calculated automatically).<br>
|
||||
- Fixed a bug: when a justified line triggered a page break, the footer inherited the corresponding word spacing.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.31</strong> (2002-01-12)</dt>
|
||||
<dd>
|
||||
- Fixed a bug in drawing frame with MultiCell(): the last line always started from the left margin.<br>
|
||||
- Removed Expires HTTP header (gives trouble in some situations).<br>
|
||||
- Added Content-disposition HTTP header (seems to help in some situations).<br>
|
||||
</dd>
|
||||
<dt><strong>v1.3</strong> (2001-12-03)</dt>
|
||||
<dd>
|
||||
- Line break and text justification support (MultiCell()).<br>
|
||||
- Color support (SetDrawColor(), SetFillColor(), SetTextColor()). Possibility to draw filled rectangles and paint cell background.<br>
|
||||
- A cell whose width is declared null extends up to the right margin of the page.<br>
|
||||
- Line width is now retained from page to page and defaults to 0.2 mm.<br>
|
||||
- Added SetXY() method.<br>
|
||||
- Fixed a passing by reference done in a deprecated manner for PHP4.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.2</strong> (2001-11-11)</dt>
|
||||
<dd>
|
||||
- Added font metric files and GetStringWidth() method.<br>
|
||||
- Centering and right-aligning text in cells.<br>
|
||||
- Display mode control (SetDisplayMode()).<br>
|
||||
- Added methods to set document properties (SetAuthor(), SetCreator(), SetKeywords(), SetSubject(), SetTitle()).<br>
|
||||
- Possibility to force PDF download by browser.<br>
|
||||
- Added SetX() and GetX() methods.<br>
|
||||
- During automatic page break, current abscissa is now retained.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.11</strong> (2001-10-20)</dt>
|
||||
<dd>
|
||||
- PNG support doesn't require PHP4/zlib any more. Data are now put directly into PDF without any decompression/recompression stage.<br>
|
||||
- Image insertion now works correctly even with magic_quotes_runtime option set to on.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.1</strong> (2001-10-07)</dt>
|
||||
<dd>
|
||||
- JPEG and PNG image support.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.01</strong> (2001-10-03)</dt>
|
||||
<dd>
|
||||
- Fixed a bug involving page break: in case when Header() doesn't specify a font, the one from previous page was not restored and produced an incorrect document.<br>
|
||||
</dd>
|
||||
<dt><strong>v1.0</strong> (2001-09-17)</dt>
|
||||
<dd>
|
||||
- First version.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</body>
|
||||
</html>
|
26
library/Vendors/html2pdf/_fpdf/install.txt
Normal file
26
library/Vendors/html2pdf/_fpdf/install.txt
Normal file
@ -0,0 +1,26 @@
|
||||
The FPDF library is made up of the following elements:
|
||||
|
||||
- the main file, fpdf.php, which contains the class
|
||||
- the font metric files (located in the font directory of this archive)
|
||||
|
||||
The metric files are necessary as soon as you want to output some text in a document.
|
||||
They can be accessed from three different locations:
|
||||
|
||||
- the directory defined by the FPDF_FONTPATH constant (if this constant is defined)
|
||||
- the font directory located in the directory containing fpdf.php (as it is the case in this archive)
|
||||
- the directories accessible through include()
|
||||
|
||||
Here is an example defining FPDF_FONTPATH (note the mandatory final slash):
|
||||
|
||||
define('FPDF_FONTPATH','/home/www/font/');
|
||||
require('fpdf.php');
|
||||
|
||||
If the files are not accessible, the SetFont() method will produce the following error:
|
||||
|
||||
FPDF error: Could not include font metric file
|
||||
|
||||
|
||||
Remarks:
|
||||
|
||||
- Only the files corresponding to the fonts actually used are necessary
|
||||
- The tutorials provided in this package are ready to be executed
|
6
library/Vendors/html2pdf/_fpdf/license.txt
Normal file
6
library/Vendors/html2pdf/_fpdf/license.txt
Normal file
@ -0,0 +1,6 @@
|
||||
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.
|
3
library/Vendors/html2pdf/_fpdf/tutorial/read_me.txt
Normal file
3
library/Vendors/html2pdf/_fpdf/tutorial/read_me.txt
Normal file
@ -0,0 +1,3 @@
|
||||
You can read the tutorials at : http://fpdf.org/en/tutorial/index.php
|
||||
|
||||
it has been removed because of the size of the package of HTML2PDF...
|
108
library/Vendors/html2pdf/_lisez_moi.txt
Normal file
108
library/Vendors/html2pdf/_lisez_moi.txt
Normal file
@ -0,0 +1,108 @@
|
||||
*******************************************************
|
||||
** Ce programme est distribué sous la licence LGPL, **
|
||||
** reportez-vous au fichier _LGPL.txt ou à **
|
||||
** http://www.gnu.org/licenses/lgpl.html **
|
||||
** pour en savoir plus. **
|
||||
** **
|
||||
** Copyright 2000-2010 par Laurent Minguet **
|
||||
*******************************************************
|
||||
*******************************
|
||||
* HTML2PDF v3.31 - 21/05/2010 *
|
||||
*******************************
|
||||
|
||||
Utilisation :
|
||||
------------
|
||||
- necessite au minimum PHP 4.3.10
|
||||
|
||||
- regardez les exemples fournis pour voir le fonctionnement.
|
||||
|
||||
- les formulaires ne marchent QUE avec ADOBE READER 8 et ADOBE READER 9.0
|
||||
|
||||
- il est TRES IMPORTANT de fournir du HTML 4.01 valide au convertisseur,
|
||||
mais seulement ce que contient le <body>
|
||||
|
||||
- pour les borders : il est conseillé qu'ils soient au format "solid 1mm #000000"
|
||||
|
||||
- pour les paddings : ils ne sont applicables qu'aux balises table, th, td, div, li
|
||||
|
||||
- Vous pouvez préciser l'encodage. Une fonte compatible doit être utilisée. Ceux acceptés sont :
|
||||
cp1250, cp1251, cp1252, cp1253, cp1254, cp1255, cp1257, cp1258, cp874,
|
||||
ISO-8859-1, ISO-8859-2, ISO-8859-4, ISO-8859-5, ISO-8859-7, ISO-8859-9,
|
||||
ISO-8859-11, ISO-8859-15, ISO-8859-16, KOI8-R, KOI8-U
|
||||
Pour l'utiliser : $html2pdf->setEncoding('cp1250');
|
||||
|
||||
- Une fonte par défaut peut être précisée,au cas ou la fonte demandée n'existe pas ou si aucune fonte n'est indiquée :
|
||||
$html2pdf->setDefaultFont('Arial');
|
||||
|
||||
- la possibilité de protégé vos PDF est présente, CF Exemple 7.
|
||||
|
||||
- Certains tests peuvent être activés (true) ou de désactivés(false) :
|
||||
* méthode setTestIsImage : tester que les images doivent existent bien
|
||||
* méthode setTestTdInOnePage : tester que le contenu des TDs rentre sur une seule page
|
||||
* méthode setTestIsDeprecated : tester que les anciennes proprietes des balises spécifiques ne sont plus presentes
|
||||
|
||||
- Un mode DEBUG permettant de connaitre les ressources utilisées lors de la construction du PDF est présente.
|
||||
Il est activable en rajoutant la commande suivante juste après le constructeur (cf exemple 0):
|
||||
$htmlpdf->setModeDebug();
|
||||
|
||||
- Certaines balises spécifiques ont été introduites :
|
||||
* <page></page> (CF Exemple 7) :
|
||||
permet de définir le format, l'orientation, les marges left, right, top et bottom, l'image
|
||||
et la couleur de fond d'une page, sa taille et position, le footer.
|
||||
Il est egalement possible de garder les header et footer des pages précédentes,
|
||||
grace à l'attribue pageset="old" (CF Exemple 3 et 4)
|
||||
|
||||
* <page_header></page_header> (CF Exemple 3)
|
||||
|
||||
* <page_footer></page_footer> (CF Exemple 3)
|
||||
|
||||
* <nobreak></nobreak> :
|
||||
permet de forcer l'affichage d'une partie sur une même page.
|
||||
Si cette partie ne rentre pas dans le reste de la page, un saut de page est
|
||||
effectué avant.
|
||||
|
||||
* <barcode></barcode> (CF Exemples 0 et 9) :
|
||||
permet d'inserer des barcodes dans les pdfs, CF Exemples 0 et 9
|
||||
Les types de codebar possible sont : EAN13, UPCA, C39.
|
||||
|
||||
* <qrcode></qrcode> (CF Exemple 13) :
|
||||
permet d'inserer un codebar à 2 dimensions de type QRcode
|
||||
voici un exemple d'utilisation :
|
||||
<qrcode value="votre message ici" size="1mm" ec="M" style="color: black; background-color: white"></qrcode>
|
||||
seul le parametre "value" est obligatoire
|
||||
les différentes valeurs de type de correction sont L, M, Q, H
|
||||
(QR Code is registered trademark of DENSO WAVE INCORPORATED | http://www.denso-wave.com/qrcode/)
|
||||
ATTENTION : l'utilisation des QRCODE nécessite l'utilisation de PHP5
|
||||
|
||||
* <bookmark></bookmark> (CF Exemples 7 et About) :
|
||||
permet d'inserer des bookmark dans les pdfs, CF Exemple 7 et About.
|
||||
Il est egalement possible de créer un index automatiquement en fin de
|
||||
document, CF exemple About.
|
||||
|
||||
* propriété css "rotate" :
|
||||
valeurs possibles : 0, 90, 180, 270
|
||||
applicable uniquement sur les divs (cf exemple 8)
|
||||
|
||||
change log :
|
||||
-----------
|
||||
regardez le fichier _changelog.txt
|
||||
|
||||
Aide et Support :
|
||||
----------------
|
||||
pour toutes questions et rapport de bug, merci d'utiliser exclusivement le lien de support ci-dessous.
|
||||
Je ne répondrais à aucune question en dehors, afin que tout le monde puisse profiter des réponses.
|
||||
|
||||
Informations :
|
||||
-------------
|
||||
Programmeur : Spipu
|
||||
email : webmaster@html2pdf.fr
|
||||
site : http://html2pdf.fr/
|
||||
wiki : http://html2pdf.fr/fr/wiki
|
||||
support : http://html2pdf.fr/fr/forum
|
||||
|
||||
Remerciement :
|
||||
-------------
|
||||
* Olivier Plathey pour avoir conçu FPDF
|
||||
* Nicola Asuni pour les modifications qu'il a accepté d'apporter à TCPDF
|
||||
* yAronet pour l'hebergement du forum de support
|
||||
* toutes les personnes qui m'ont aidé à développer cet librairie, et à traduire les différents textes
|
249
library/Vendors/html2pdf/_mypdf/00_fpdf_codebar.class.php
Normal file
249
library/Vendors/html2pdf/_mypdf/00_fpdf_codebar.class.php
Normal file
@ -0,0 +1,249 @@
|
||||
<?php
|
||||
/*************************************************************************
|
||||
* http://www.fpdf.org/en/script/script5.php
|
||||
*
|
||||
* @author Olivier
|
||||
*
|
||||
* This script implements EAN13 and UPC-A barcodes (the second being a particular case of the first one). Bars are drawn directly in the PDF (no image is generated).
|
||||
* EAN13(float x, float y, string barcode [, float h [, float w]])
|
||||
* x: abscissa of barcode.
|
||||
* y: ordinate of barcode.
|
||||
* barcode: value of barcode.
|
||||
* h: height of barcode. Default value: 16.
|
||||
* w: width of a bar. Default value: 0.35.
|
||||
*
|
||||
* UPC_A(float x, float y, string barcode [, float h [, float w]])
|
||||
*
|
||||
* Same parameters.
|
||||
*
|
||||
* An EAN13 barcode is made up of 13 digits, UPC-A of 12 (leading zeroes are added if necessary). The last digit is a check digit; if it's not supplied, it will be automatically computed.
|
||||
************************************************************************/
|
||||
|
||||
/*************************************************************************
|
||||
* http://www.fpdf.org/en/script/script46.php
|
||||
*
|
||||
* @author The-eh
|
||||
*
|
||||
* This script implements Code 39 barcodes. A Code 39 barcode can encode a string with the following characters: digits (0 to 9), uppercase letters (A to Z) and 8 additional characters (- . space $ / + % *).
|
||||
* Code39(float xpos, float ypos, string code [, float baseline [, float height]])
|
||||
* xpos: abscissa of barcode
|
||||
* ypos: ordinate of barcode
|
||||
* code: value of barcode
|
||||
* height: bar height
|
||||
* baseline: corresponds to the width of a wide bar
|
||||
************************************************************************/
|
||||
|
||||
|
||||
if (!defined('__CLASS_FPDF_CODEBAR__'))
|
||||
{
|
||||
define('__CLASS_FPDF_CODEBAR__', true);
|
||||
|
||||
require_once(dirname(__FILE__).'/../_fpdf/fpdf.php');
|
||||
|
||||
class FPDF_Codebar extends FPDF
|
||||
{
|
||||
var $footer_param = array();
|
||||
|
||||
function FPDF_Codebar($sens = 'P', $unit = 'mm', $format = 'A4')
|
||||
{
|
||||
$this->FPDF($sens, $unit, $format);
|
||||
}
|
||||
|
||||
function BARCODE_EAN13($x,$y,$w,$h, $barcode,$label=true)
|
||||
{
|
||||
return $this->Barcode($x,$y,$w,$h, $barcode,13,$label);
|
||||
}
|
||||
|
||||
function BARCODE_UPC_A($x,$y,$w,$h, $barcode,$label=true)
|
||||
{
|
||||
return $this->Barcode($x,$y,$w,$h, $barcode,12,$label);
|
||||
}
|
||||
|
||||
function GetCheckDigit($barcode)
|
||||
{
|
||||
//Compute the check digit
|
||||
$sum=0;
|
||||
for($i=1;$i<=11;$i+=2)
|
||||
$sum+=3*$barcode{$i};
|
||||
for($i=0;$i<=10;$i+=2)
|
||||
$sum+=$barcode{$i};
|
||||
$r=$sum%10;
|
||||
if($r>0)
|
||||
$r=10-$r;
|
||||
return $r;
|
||||
}
|
||||
|
||||
function TestCheckDigit($barcode)
|
||||
{
|
||||
//Test validity of check digit
|
||||
$sum=0;
|
||||
for($i=1;$i<=11;$i+=2)
|
||||
$sum+=3*$barcode{$i};
|
||||
for($i=0;$i<=10;$i+=2)
|
||||
$sum+=$barcode{$i};
|
||||
return ($sum+$barcode{12})%10==0;
|
||||
}
|
||||
|
||||
function Barcode($x,$y,$code_w,$code_h,$barcode,$len, $label=true)
|
||||
{
|
||||
//Padding
|
||||
$barcode=str_pad($barcode,$len-1,'0',STR_PAD_LEFT);
|
||||
if($len==12)
|
||||
$barcode='0'.$barcode;
|
||||
//Add or control the check digit
|
||||
if(strlen($barcode)==12)
|
||||
$barcode.=$this->GetCheckDigit($barcode);
|
||||
elseif(!$this->TestCheckDigit($barcode))
|
||||
$this->Error('Incorrect check digit');
|
||||
//Convert digits to bars
|
||||
$codes=array(
|
||||
'A'=>array(
|
||||
'0'=>'0001101','1'=>'0011001','2'=>'0010011','3'=>'0111101','4'=>'0100011',
|
||||
'5'=>'0110001','6'=>'0101111','7'=>'0111011','8'=>'0110111','9'=>'0001011'),
|
||||
'B'=>array(
|
||||
'0'=>'0100111','1'=>'0110011','2'=>'0011011','3'=>'0100001','4'=>'0011101',
|
||||
'5'=>'0111001','6'=>'0000101','7'=>'0010001','8'=>'0001001','9'=>'0010111'),
|
||||
'C'=>array(
|
||||
'0'=>'1110010','1'=>'1100110','2'=>'1101100','3'=>'1000010','4'=>'1011100',
|
||||
'5'=>'1001110','6'=>'1010000','7'=>'1000100','8'=>'1001000','9'=>'1110100')
|
||||
);
|
||||
$parities=array(
|
||||
'0'=>array('A','A','A','A','A','A'),
|
||||
'1'=>array('A','A','B','A','B','B'),
|
||||
'2'=>array('A','A','B','B','A','B'),
|
||||
'3'=>array('A','A','B','B','B','A'),
|
||||
'4'=>array('A','B','A','A','B','B'),
|
||||
'5'=>array('A','B','B','A','A','B'),
|
||||
'6'=>array('A','B','B','B','A','A'),
|
||||
'7'=>array('A','B','A','B','A','B'),
|
||||
'8'=>array('A','B','A','B','B','A'),
|
||||
'9'=>array('A','B','B','A','B','A')
|
||||
);
|
||||
$code='101';
|
||||
$p=$parities[$barcode{0}];
|
||||
for($i=1;$i<=6;$i++)
|
||||
$code.=$codes[$p[$i-1]][$barcode{$i}];
|
||||
$code.='01010';
|
||||
for($i=7;$i<=12;$i++)
|
||||
$code.=$codes['C'][$barcode{$i}];
|
||||
$code.='101';
|
||||
//Draw bars
|
||||
if (strlen($code))
|
||||
{
|
||||
$w = $code_w / strlen($code);
|
||||
for($i=0;$i<strlen($code);$i++)
|
||||
{
|
||||
if($code{$i}=='1')
|
||||
$this->Rect($x+$i*$w,$y,$w,$code_h,'F');
|
||||
}
|
||||
|
||||
$code_t = substr($barcode,-$len);
|
||||
$code_f = $code_w/strlen($code_t)*$this->k/0.60;
|
||||
|
||||
if ($label)
|
||||
{
|
||||
$this->SetFont('Arial','',$code_f);
|
||||
$this->Text($x,$y+$code_h+0.90*$code_f/$this->k,$code_t);
|
||||
//Print text uder barcode
|
||||
$code_h+= $code_f/$this->k;
|
||||
}
|
||||
}
|
||||
|
||||
return array($code_w, $code_h);
|
||||
}
|
||||
|
||||
function BARCODE_CODE39($x,$y,$w,$h, $barcode, $label=true)
|
||||
{
|
||||
$barChar['0'] = 'nnnwwnwnn';
|
||||
$barChar['1'] = 'wnnwnnnnw';
|
||||
$barChar['2'] = 'nnwwnnnnw';
|
||||
$barChar['3'] = 'wnwwnnnnn';
|
||||
$barChar['4'] = 'nnnwwnnnw';
|
||||
$barChar['5'] = 'wnnwwnnnn';
|
||||
$barChar['6'] = 'nnwwwnnnn';
|
||||
$barChar['7'] = 'nnnwnnwnw';
|
||||
$barChar['8'] = 'wnnwnnwnn';
|
||||
$barChar['9'] = 'nnwwnnwnn';
|
||||
$barChar['A'] = 'wnnnnwnnw';
|
||||
$barChar['B'] = 'nnwnnwnnw';
|
||||
$barChar['C'] = 'wnwnnwnnn';
|
||||
$barChar['D'] = 'nnnnwwnnw';
|
||||
$barChar['E'] = 'wnnnwwnnn';
|
||||
$barChar['F'] = 'nnwnwwnnn';
|
||||
$barChar['G'] = 'nnnnnwwnw';
|
||||
$barChar['H'] = 'wnnnnwwnn';
|
||||
$barChar['I'] = 'nnwnnwwnn';
|
||||
$barChar['J'] = 'nnnnwwwnn';
|
||||
$barChar['K'] = 'wnnnnnnww';
|
||||
$barChar['L'] = 'nnwnnnnww';
|
||||
$barChar['M'] = 'wnwnnnnwn';
|
||||
$barChar['N'] = 'nnnnwnnww';
|
||||
$barChar['O'] = 'wnnnwnnwn';
|
||||
$barChar['P'] = 'nnwnwnnwn';
|
||||
$barChar['Q'] = 'nnnnnnwww';
|
||||
$barChar['R'] = 'wnnnnnwwn';
|
||||
$barChar['S'] = 'nnwnnnwwn';
|
||||
$barChar['T'] = 'nnnnwnwwn';
|
||||
$barChar['U'] = 'wwnnnnnnw';
|
||||
$barChar['V'] = 'nwwnnnnnw';
|
||||
$barChar['W'] = 'wwwnnnnnn';
|
||||
$barChar['X'] = 'nwnnwnnnw';
|
||||
$barChar['Y'] = 'wwnnwnnnn';
|
||||
$barChar['Z'] = 'nwwnwnnnn';
|
||||
$barChar['-'] = 'nwnnnnwnw';
|
||||
$barChar['.'] = 'wwnnnnwnn';
|
||||
$barChar[' '] = 'nwwnnnwnn';
|
||||
$barChar['*'] = 'nwnnwnwnn';
|
||||
$barChar['$'] = 'nwnwnwnnn';
|
||||
$barChar['/'] = 'nwnwnnnwn';
|
||||
$barChar['+'] = 'nwnnnwnwn';
|
||||
$barChar['%'] = 'nnnwnwnwn';
|
||||
|
||||
$barcode = '*'.strtoupper($barcode).'*';
|
||||
$code = '';
|
||||
$w_wide=3; $w_narrow=1; $w_gap=1; $nb_w = 0;
|
||||
for($i=0; $i<strlen($barcode); $i++)
|
||||
{
|
||||
$char = $barcode{$i};
|
||||
if(!isset($barChar[$char]))
|
||||
$this->Error('Invalid character in barcode: '.$char);
|
||||
|
||||
$seq = $barChar[$char];
|
||||
$code.= $seq;
|
||||
|
||||
for($bar=0; $bar<9; $bar++)
|
||||
$nb_w+= ($seq{$bar}=='n' ? $w_narrow : $w_wide);
|
||||
|
||||
$nb_w+= $w_gap;
|
||||
}
|
||||
|
||||
$w_wide = $w/$nb_w*$w_wide;
|
||||
$w_narrow = $w/$nb_w*$w_narrow;
|
||||
$w_gap = $w/$nb_w*$w_gap;
|
||||
$xt = $x;
|
||||
for($i=0; $i<strlen($code); $i++)
|
||||
{
|
||||
$j = $i%9;
|
||||
$w_line = ($code{$i}=='n' ? $w_narrow : $w_wide);
|
||||
if(!($j%2)) $this->Rect($xt, $y, $w_line, $h, 'F');
|
||||
$xt+= $w_line;
|
||||
if ($j==8) $xt+= $w_gap;
|
||||
}
|
||||
|
||||
$code_w = $xt-$x;
|
||||
$code_h = $h;
|
||||
$code_t = $barcode;
|
||||
$code_f = $code_w/strlen($code_t)*$this->k/0.60/2.5;
|
||||
|
||||
if ($label)
|
||||
{
|
||||
//Print text uder barcode
|
||||
$code_h+= $code_f/$this->k;
|
||||
$this->SetFont('Arial','',$code_f);
|
||||
$this->Text($x,$y+$h+0.90*$code_f/$this->k,$code_t);
|
||||
}
|
||||
|
||||
return array($code_w, $code_h);
|
||||
}
|
||||
}
|
||||
}
|
179
library/Vendors/html2pdf/_mypdf/01_fpdf_bookmark.class.php
Normal file
179
library/Vendors/html2pdf/_mypdf/01_fpdf_bookmark.class.php
Normal file
@ -0,0 +1,179 @@
|
||||
<?php
|
||||
/*************************************************************************
|
||||
* http://www.fpdf.org/en/script/script1.php
|
||||
*
|
||||
* @author Olivier
|
||||
*
|
||||
* This extension adds bookmark support. The method to add a bookmark is:
|
||||
*
|
||||
* function Bookmark(string txt [, int level [, float y]])
|
||||
*
|
||||
* txt: the bookmark title.
|
||||
* level: the bookmark level (0 is top level, 1 is just below, and so on).
|
||||
* y: the y position of the bookmark destination in the current page. -1 means the current position. Default value: 0.
|
||||
*
|
||||
* The title must be encoded in ISO Latin-1.
|
||||
************************************************************************/
|
||||
/*************************************************************************
|
||||
* http://www.fpdf.org/en/script/script13.php
|
||||
*
|
||||
* @author Min's
|
||||
*
|
||||
* This class prints an index from the created bookmarks.
|
||||
************************************************************************/
|
||||
|
||||
if (!defined('__CLASS_FPDF_BOOKMARK__'))
|
||||
{
|
||||
define('__CLASS_FPDF_BOOKMARK__', true);
|
||||
|
||||
require_once(dirname(__FILE__).'/00_fpdf_codebar.class.php');
|
||||
|
||||
class FPDF_BookMark extends FPDF_Codebar
|
||||
{
|
||||
var $outlines=array();
|
||||
var $OutlineRoot;
|
||||
|
||||
function FPDF_BookMark($orientation='P',$unit='mm',$format='A4')
|
||||
{
|
||||
$this->FPDF_Codebar($orientation,$unit,$format);
|
||||
|
||||
}
|
||||
|
||||
function Bookmark($txt, $level=0, $y=0)
|
||||
{
|
||||
if($y==-1) $y=$this->GetY();
|
||||
$this->outlines[]=array('t'=>$txt, 'l'=>$level, 'y'=>($this->h-$y)*$this->k, 'p'=>$this->PageNo());
|
||||
}
|
||||
|
||||
function _putbookmarks()
|
||||
{
|
||||
$nb=count($this->outlines);
|
||||
if($nb==0) return;
|
||||
$lru=array();
|
||||
$level=0;
|
||||
foreach($this->outlines as $i=>$o)
|
||||
{
|
||||
if($o['l']>0)
|
||||
{
|
||||
$parent=$lru[$o['l']-1];
|
||||
//Set parent and last pointers
|
||||
$this->outlines[$i]['parent']=$parent;
|
||||
$this->outlines[$parent]['last']=$i;
|
||||
if($o['l']>$level)
|
||||
{
|
||||
//Level increasing: set first pointer
|
||||
$this->outlines[$parent]['first']=$i;
|
||||
}
|
||||
}
|
||||
else
|
||||
$this->outlines[$i]['parent']=$nb;
|
||||
|
||||
if($o['l']<=$level and $i>0)
|
||||
{
|
||||
//Set prev and next pointers
|
||||
$prev=$lru[$o['l']];
|
||||
$this->outlines[$prev]['next']=$i;
|
||||
$this->outlines[$i]['prev']=$prev;
|
||||
}
|
||||
$lru[$o['l']]=$i;
|
||||
$level=$o['l'];
|
||||
}
|
||||
|
||||
//Outline items
|
||||
$n=$this->n+1;
|
||||
foreach($this->outlines as $i=>$o)
|
||||
{
|
||||
$this->_newobj();
|
||||
$this->_out('<</Title '.$this->_textstring($o['t']));
|
||||
$this->_out('/Parent '.($n+$o['parent']).' 0 R');
|
||||
if(isset($o['prev']))
|
||||
$this->_out('/Prev '.($n+$o['prev']).' 0 R');
|
||||
if(isset($o['next']))
|
||||
$this->_out('/Next '.($n+$o['next']).' 0 R');
|
||||
if(isset($o['first']))
|
||||
$this->_out('/First '.($n+$o['first']).' 0 R');
|
||||
if(isset($o['last']))
|
||||
$this->_out('/Last '.($n+$o['last']).' 0 R');
|
||||
$this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]',1+2*$o['p'],$o['y']));
|
||||
$this->_out('/Count 0>>');
|
||||
$this->_out('endobj');
|
||||
}
|
||||
|
||||
//Outline root
|
||||
$this->_newobj();
|
||||
$this->OutlineRoot=$this->n;
|
||||
$this->_out('<</Type /Outlines /First '.$n.' 0 R');
|
||||
$this->_out('/Last '.($n+$lru[0]).' 0 R>>');
|
||||
$this->_out('endobj');
|
||||
}
|
||||
|
||||
function _putresources()
|
||||
{
|
||||
parent::_putresources();
|
||||
$this->_putbookmarks();
|
||||
}
|
||||
|
||||
function _putcatalog()
|
||||
{
|
||||
parent::_putcatalog();
|
||||
if(count($this->outlines)>0)
|
||||
{
|
||||
$this->_out('/Outlines '.$this->OutlineRoot.' 0 R');
|
||||
$this->_out('/PageMode /UseOutlines');
|
||||
}
|
||||
}
|
||||
|
||||
function CreateIndex(&$obj, $titre = 'Index', $size_title = 20, $size_bookmark = 15, $bookmark_title = true, $display_page = true, $page = null)
|
||||
{
|
||||
if ($bookmark_title) $this->Bookmark($titre, 0, -1);
|
||||
|
||||
//Index title
|
||||
$this->SetFontSize($size_title);
|
||||
$this->Cell(0,5,$titre,0,1,'C');
|
||||
$this->SetFontSize($size_bookmark);
|
||||
$this->Ln(10);
|
||||
|
||||
$size=sizeof($this->outlines);
|
||||
$PageCellSize=$this->GetStringWidth('p. '.$this->outlines[$size-1]['p'])+2;
|
||||
for ($i=0;$i<$size;$i++)
|
||||
{
|
||||
if ($this->getY()+$this->FontSize>=($this->h - $this->bMargin))
|
||||
{
|
||||
$obj->INDEX_NewPage($page);
|
||||
$this->SetFontSize($size_bookmark);
|
||||
}
|
||||
|
||||
//Offset
|
||||
$level=$this->outlines[$i]['l'];
|
||||
if($level>0) $this->Cell($level*8);
|
||||
|
||||
//Caption
|
||||
$str=$this->outlines[$i]['t'];
|
||||
$strsize=$this->GetStringWidth($str);
|
||||
$avail_size=$this->w-$this->lMargin-$this->rMargin-$PageCellSize-($level*8)-4;
|
||||
while ($strsize>=$avail_size)
|
||||
{
|
||||
$str=substr($str,0,-1);
|
||||
$strsize=$this->GetStringWidth($str);
|
||||
}
|
||||
if ($display_page)
|
||||
{
|
||||
$this->Cell($strsize+2,$this->FontSize+2,$str);
|
||||
|
||||
//Filling dots
|
||||
$w=$this->w-$this->lMargin-$this->rMargin-$PageCellSize-($level*8)-($strsize+2);
|
||||
$nb=$w/$this->GetStringWidth('.');
|
||||
$dots=str_repeat('.',$nb);
|
||||
$this->Cell($w,$this->FontSize+2,$dots,0,0,'R');
|
||||
|
||||
//Page number
|
||||
$this->Cell($PageCellSize,$this->FontSize+2,'p. '.$this->outlines[$i]['p'],0,1,'R');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->Cell($strsize+2,$this->FontSize+2,$str, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
239
library/Vendors/html2pdf/_mypdf/02_fpdf_formulaire.class.php
Normal file
239
library/Vendors/html2pdf/_mypdf/02_fpdf_formulaire.class.php
Normal file
@ -0,0 +1,239 @@
|
||||
<?php
|
||||
/**
|
||||
* Logiciel : HTML2PDF - classe FPDF_Formulaire
|
||||
*
|
||||
* permet la gestion de champs de formulaire dans un PDF
|
||||
* Inspiré des sources de http://fpdf.org/fr/script/script36.php et http://fpdf.org/fr/script/script40.php
|
||||
*
|
||||
* @author Laurent MINGUET <webmaster@html2pdf.fr>
|
||||
*/
|
||||
|
||||
if (!defined('__CLASS_FPDF_FORMULAIRE__'))
|
||||
{
|
||||
define('__CLASS_FPDF_FORMULAIRE__', true);
|
||||
|
||||
require_once(dirname(__FILE__).'/01_fpdf_bookmark.class.php');
|
||||
|
||||
class FPDF_Formulaire extends FPDF_BookMark
|
||||
{
|
||||
var $javascript = ''; //javascript code
|
||||
var $n_js; //numéro de l'objet javascript
|
||||
var $n_cata; //numéro de l'objet catalogue
|
||||
var $ur; //
|
||||
|
||||
function FPDF_Formulaire($orientation='P',$unit='mm',$format='A4')
|
||||
{
|
||||
$this->FPDF_BookMark($orientation,$unit,$format);
|
||||
$this->PDFVersion='1.6';
|
||||
|
||||
$this->ur = false;
|
||||
}
|
||||
|
||||
function _putuserrights()
|
||||
{
|
||||
if (!$this->ur) return;
|
||||
$this->_out('/Perms<<');
|
||||
|
||||
$this->_out('/UR3<<');
|
||||
$this->_out('/Reference[<<');
|
||||
$this->_out('/Type /SigRef');
|
||||
$this->_out('/TransformMethod /UR3');
|
||||
$this->_out('/TransformParams<<');
|
||||
$this->_out('/Type /TransformParams');
|
||||
$this->_out('/Annots[ /Create /Delete /Modify /Copy /Import /Export ]');
|
||||
$this->_out('/Document [ /FullSave ]');
|
||||
$this->_out('/Form[ /Add /FillIn /Delete /SubmitStandalone ]');
|
||||
$this->_out('/Signature[ /Modify ]');
|
||||
$this->_out('/V /2.2');
|
||||
$this->_out('>>');
|
||||
$this->_out('>>]');
|
||||
$this->_out('>>');
|
||||
$this->_out('>>');
|
||||
}
|
||||
|
||||
function _putresources()
|
||||
{
|
||||
|
||||
parent::_putresources();
|
||||
$this->_putjavascript();
|
||||
}
|
||||
|
||||
function _putcatalog()
|
||||
{
|
||||
$this->n_cata = $this->n;
|
||||
|
||||
parent::_putcatalog();
|
||||
|
||||
if (!empty($this->javascript)) $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
|
||||
$this->_putuserrights();
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a javascript PDF string.
|
||||
* @access protected
|
||||
* @author Johannes Güntert, Nicola Asuni
|
||||
*/
|
||||
function _putjavascript()
|
||||
{
|
||||
if (empty($this->javascript)) return;
|
||||
|
||||
// the following two lines are used to avoid form fields duplication after saving
|
||||
if ($this->ur)
|
||||
{
|
||||
$js1 = "if(!this.getField('pdfoldsaved')) this.addField('pdfoldsaved','text',0, [0, 1, 0, 1]);";
|
||||
$js2 = "getField('pdfoldsaved').value = 'saved';";
|
||||
}
|
||||
else
|
||||
{
|
||||
$js1 = '';
|
||||
$js2 = '';
|
||||
}
|
||||
|
||||
$this->_newobj();
|
||||
$this->n_js = $this->n;
|
||||
$this->_out('<<');
|
||||
$this->_out('/Names [(EmbeddedJS) '.($this->n + 1).' 0 R ]');
|
||||
$this->_out('>>');
|
||||
$this->_out('endobj');
|
||||
$this->_newobj();
|
||||
$this->_out('<<');
|
||||
$this->_out('/S /JavaScript');
|
||||
$this->_out('/JS '.$this->_textstring($js1."\n".$this->javascript."\n".$js2));
|
||||
$this->_out('>>');
|
||||
$this->_out('endobj');
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert color to javascript color.
|
||||
* @param string $color color name or #RRGGBB
|
||||
* @access protected
|
||||
* @author Denis Van Nuffelen, Nicola Asuni
|
||||
*/
|
||||
function _JScolor($color)
|
||||
{
|
||||
static $aColors = array('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray');
|
||||
if (substr($color,0,1) == '#')
|
||||
{
|
||||
return sprintf("['RGB',%.3F,%.3F,%.3F]", hexdec(substr($color,1,2))/255, hexdec(substr($color,3,2))/255, hexdec(substr($color,5,2))/255);
|
||||
}
|
||||
if (!in_array($color,$aColors))
|
||||
{
|
||||
$this->Error('Invalid color: '.$color);
|
||||
}
|
||||
|
||||
return 'color.'.$color;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds a javascript form field.
|
||||
* @param string $type field type
|
||||
* @param string $name field name
|
||||
* @param int $x horizontal position
|
||||
* @param int $y vertical position
|
||||
* @param int $w width
|
||||
* @param int $h height
|
||||
* @param array $prop array of properties. Possible values are (http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf): <ul><li>rect: Position and size of field on page.</li><li>borderStyle: Rectangle border appearance.</li><li>strokeColor: Color of bounding rectangle.</li><li>lineWidth: Width of the edge of the surrounding rectangle.</li><li>rotation: Rotation of field in 90-degree increments.</li><li>fillColor: Background color of field (gray, transparent, RGB, or CMYK).</li><li>userName: Short description of field that appears on mouse-over.</li><li>readonly: Whether the user may change the field contents.</li><li>doNotScroll: Whether text fields may scroll.</li><li>display: Whether visible or hidden on screen or in print.</li><li>textFont: Text font.</li><li>textColor: Text color.</li><li>textSize: Text size.</li><li>richText: Rich text.</li><li>richValue: Text.</li><li>comb: Text comb format.</li><li>multiline: Text multiline.</li><li>charLimit: Text limit to number of characters.</li><li>fileSelect: Text file selection format.</li><li>password: Text password format.</li><li>alignment: Text layout in text fields.</li><li>buttonAlignX: X alignment of icon on button face.</li><li>buttonAlignY: Y alignment of icon on button face.</li><li>buttonFitBounds: Relative scaling of an icon to fit inside a button face.</li><li>buttonScaleHow: Relative scaling of an icon to fit inside a button face.</li><li>buttonScaleWhen: Relative scaling of an icon to fit inside a button face.</li><li>highlight: Appearance of a button when pushed.</li><li>style: Glyph style for checkbox and radio buttons.</li><li>numItems: Number of items in a combo box or list box.</li><li>editable: Whether the user can type in a combo box.</li><li>multipleSelection: Whether multiple list box items may be selected.</li></ul>
|
||||
* @access protected
|
||||
* @author Denis Van Nuffelen, Nicola Asuni
|
||||
*/
|
||||
function _addfield($type, $name, $x, $y, $w, $h, $prop, $js_after = '')
|
||||
{
|
||||
if (!isset($prop['textSize'])) $prop['textSize'] = $this->FontSizePt;
|
||||
if (!isset($prop['strokeColor'])) $prop['strokeColor'] = 'ltGray';
|
||||
if (isset($prop['value'])) $prop['value'] = str_replace('"', '', $prop['value']);
|
||||
$name_field = preg_replace('/[^a-zA-Z0-9_]/isU', '_', $name);
|
||||
|
||||
$this->SetFillColor(240);
|
||||
if ($w>0 && $h>0)
|
||||
{
|
||||
$d = 1/$this->k;
|
||||
$r = 0.1;
|
||||
$this->Rect($x+$d*0.5+$r, $y-$d*0.5+$r, $w-$d-2*$r, $h-$d-2*$r, 'F');
|
||||
}
|
||||
|
||||
// javascript inclus
|
||||
$this->ur = true;
|
||||
|
||||
// the followind avoid fields duplication after saving the document
|
||||
$this->javascript .= "if(this.getField('pdfoldsaved') && this.getField('pdfoldsaved').value != 'saved') {";
|
||||
$this->javascript .= sprintf("f".$name_field."=this.addField('%s','%s',%d,[%.2F,%.2F,%.2F,%.2F]);", $name, $type, $this->PageNo()-1, $x*$this->k, ($this->h-$y)*$this->k+1, ($x+$w)*$this->k, ($this->h-$y-$h)*$this->k+1)."\n";
|
||||
$this->javascript .= 'f'.$name_field.'.textSize='.$this->FontSizePt.";\n";
|
||||
while (list($key, $val) = each($prop))
|
||||
{
|
||||
if (strcmp(substr($key, -5), 'Color') == 0)
|
||||
$val = $this->_JScolor($val);
|
||||
else
|
||||
$val = '"'.$val.'"';
|
||||
$this->javascript .= 'f'.$name_field.'.'.$key.'='.$val.";\n";
|
||||
}
|
||||
|
||||
$this->javascript .= '}';
|
||||
$this->javascript.= "\n".$js_after;
|
||||
}
|
||||
|
||||
function IncludeJS($script)
|
||||
{
|
||||
$this->javascript .= $script;
|
||||
}
|
||||
|
||||
function form_InputHidden($name, $value)
|
||||
{
|
||||
$name_field = preg_replace('/[^a-zA-Z0-9_]/isU', '_', $name);
|
||||
$prop = array('value' => $value);
|
||||
$js_after = '';
|
||||
$this->_addfield('checkbox', $name, 0, 0, 0.1, 0.1, $prop, $js_after);
|
||||
}
|
||||
|
||||
function form_InputCheckBox($name, $x, $y, $w, $checked)
|
||||
{
|
||||
$name_field = preg_replace('/[^a-zA-Z0-9_]/isU', '_', $name);
|
||||
|
||||
$prop = array();
|
||||
$prop['value'] = ($checked ? 'Yes' : 'Off');
|
||||
$js_after = '';
|
||||
$this->_addfield('checkbox', $name, $x, $y, $w, $w, $prop, $js_after);
|
||||
}
|
||||
|
||||
function form_InputRadio($name, $x, $y, $w)
|
||||
{
|
||||
$name_field = preg_replace('/[^a-zA-Z0-9_]/isU', '_', $name);
|
||||
|
||||
$prop = array();
|
||||
$js_after = '';
|
||||
$this->_addfield('radiobutton', $name, $x, $y, $w, $w, $prop, $js_after);
|
||||
}
|
||||
|
||||
function form_InputText($name, $x, $y, $w, $h, $prop)
|
||||
{
|
||||
$name_field = preg_replace('/[^a-zA-Z0-9_]/isU', '_', $name);
|
||||
|
||||
$js_after = '';
|
||||
$this->_addfield('text', $name, $x, $y, $w, $h, $prop, $js_after);
|
||||
}
|
||||
|
||||
function form_InputButton($name, $x, $y, $w, $h, $caption, $action, $prop)
|
||||
{
|
||||
$name_field = preg_replace('/[^a-zA-Z0-9_]/isU', '_', $name);
|
||||
|
||||
if (!isset($prop['borderStyle'])) $prop['borderStyle'] = 'beveled';
|
||||
if (!isset($prop['fillColor'])) $prop['fillColor'] = 'ltGray';
|
||||
if (!isset($prop['strokeColor'])) $prop['strokeColor'] = 'black';
|
||||
|
||||
$js_after = 'f'.$name_field.".buttonSetCaption('".addslashes($caption)."');\n";
|
||||
$js_after.= 'f'.$name_field.".setAction('MouseUp','".addslashes($action)."');\n";
|
||||
$js_after.= 'f'.$name_field.".highlight='push';\n";
|
||||
$js_after.= 'f'.$name_field.".print=false;\n";
|
||||
$this->_addfield('button', $name, $x, $y, $w, $h, $prop, $js_after);
|
||||
}
|
||||
|
||||
function form_Select($name, $x, $y, $w, $h, $values, $multiligne, $prop)
|
||||
{
|
||||
$name_field = preg_replace('/[^a-zA-Z0-9_]/isU', '_', $name);
|
||||
|
||||
$type = ($multiligne ? 'listbox' : 'combobox');
|
||||
$s = ''; foreach ($values as $value) { $s .= ($s ? ',' : '')."'".addslashes($value)."'"; }
|
||||
$js_after = 'f'.$name_field.'.setItems(['.$s."]);\n";
|
||||
$this->_addfield($type, $name, $x, $y, $w, $h, $prop, $js_after);
|
||||
}
|
||||
}
|
||||
}
|
327
library/Vendors/html2pdf/_mypdf/03_fpdf_alpha.class.php
Normal file
327
library/Vendors/html2pdf/_mypdf/03_fpdf_alpha.class.php
Normal file
@ -0,0 +1,327 @@
|
||||
<?php
|
||||
/*************************************************************************
|
||||
* http://staff.dasdeck.de/valentin/fpdf/fpdf_alpha/
|
||||
*
|
||||
* @author Valentin Schmidt
|
||||
*
|
||||
* This script allows to use images (PNGs or JPGs) with alpha-channels.
|
||||
* The alpha-channel can be either supplied as separate 8-bit PNG ("mask"),
|
||||
* or, for PNGs, also an internal alpha-channel can be used.
|
||||
* For the latter, the GD 2.x extension is required.
|
||||
************************************************************************/
|
||||
|
||||
|
||||
if (!defined('__CLASS_FPDF_ALPHA__'))
|
||||
{
|
||||
define('__CLASS_FPDF_ALPHA__', true);
|
||||
|
||||
require_once(dirname(__FILE__).'/02_fpdf_formulaire.class.php');
|
||||
|
||||
class FPDF_Alpha extends FPDF_Formulaire
|
||||
{
|
||||
var $tmpFiles = array();
|
||||
|
||||
function FPDF_Alpha($orientation='P',$unit='mm',$format='A4')
|
||||
{
|
||||
$this->FPDF_Formulaire($orientation,$unit,$format);
|
||||
}
|
||||
|
||||
/* Public methods */
|
||||
function Image($file,$x,$y,$w=0,$h=0,$type='',$link='', $isMask=false, $maskImg=0)
|
||||
{
|
||||
//Put an image on the page
|
||||
if(!isset($this->images[$file]))
|
||||
{
|
||||
//First use of image, get info
|
||||
if($type=='')
|
||||
{
|
||||
/* MODIFICATION HTML2PDF pour le support des images générées */
|
||||
$type = explode('?', $file);
|
||||
$type = pathinfo($type[0]);
|
||||
if (!isset($type['extension']) || !$type['extension'])
|
||||
$type['extension'] = 'php';
|
||||
// $this->Error('Image file has no extension and no type was specified: '.$file);
|
||||
|
||||
$type = $type['extension'];
|
||||
/* FIN MODIFICATION */
|
||||
/*
|
||||
$pos=strrpos($file,'.');
|
||||
if(!$pos)
|
||||
$this->Error('Image file has no extension and no type was specified: '.$file);
|
||||
$type=substr($file,$pos+1);
|
||||
*/
|
||||
}
|
||||
$type=strtolower($type);
|
||||
|
||||
/* MODIFICATION HTML2PDF pour le support des images générées */
|
||||
if ($type=='php' || $type=='cgi')
|
||||
{
|
||||
// identification des infos
|
||||
$infos=@GetImageSize($file);
|
||||
if (!$infos) $this->Error('Unsupported image : '.$file);
|
||||
|
||||
// identification du type
|
||||
$type = explode('/', $infos['mime']);
|
||||
if ($type[0]!='image') $this->Error('Unsupported image : '.$file);
|
||||
$type = $type[1];
|
||||
}
|
||||
/* FIN MODIFICATION */
|
||||
|
||||
// $mqr=get_magic_quotes_runtime();
|
||||
// set_magic_quotes_runtime(0);
|
||||
if($type=='jpg' || $type=='jpeg')
|
||||
$info=$this->_parsejpg($file);
|
||||
elseif($type=='png')
|
||||
{
|
||||
$info=$this->_parsepng($file);
|
||||
if ($info=='alpha')
|
||||
return $this->ImagePngWithAlpha($file,$x,$y,$w,$h,$link);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Allow for additional formats
|
||||
$mtd='_parse'.$type;
|
||||
if(!method_exists($this,$mtd))
|
||||
$this->Error('Unsupported image type: '.$type);
|
||||
$info=$this->$mtd($file);
|
||||
}
|
||||
// set_magic_quotes_runtime($mqr);
|
||||
|
||||
if ($isMask)
|
||||
{
|
||||
$info['cs']="DeviceGray"; // try to force grayscale (instead of indexed)
|
||||
}
|
||||
$info['i']=count($this->images)+1;
|
||||
if ($maskImg>0) $info['masked'] = $maskImg;###
|
||||
$this->images[$file]=$info;
|
||||
}
|
||||
else
|
||||
$info=$this->images[$file];
|
||||
|
||||
//Automatic width and height calculation if needed
|
||||
if($w==0 && $h==0)
|
||||
{
|
||||
//Put image at 72 dpi
|
||||
$w=$info['w']/$this->k;
|
||||
$h=$info['h']/$this->k;
|
||||
}
|
||||
if($w==0)
|
||||
$w=$h*$info['w']/$info['h'];
|
||||
if($h==0)
|
||||
$h=$w*$info['h']/$info['w'];
|
||||
|
||||
if ($isMask) // embed hidden, ouside the canvas
|
||||
{
|
||||
$x = ($this->CurOrientation=='P'?$this->CurPageFormat[0]*2:$this->CurPageFormat[1]*2) + 10;
|
||||
}
|
||||
else // modification by spipu :) pas besoin de tracer l'image si c'est pour faire un mask !!!!
|
||||
{
|
||||
$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
|
||||
if($link) $this->Link($x,$y,$w,$h,$link);
|
||||
}
|
||||
|
||||
return $info['i'];
|
||||
}
|
||||
|
||||
// needs GD 2.x extension
|
||||
// pixel-wise operation, not very fast
|
||||
function ImagePngWithAlpha($file,$x,$y,$w=0,$h=0,$link='')
|
||||
{
|
||||
$tmp_alpha = tempnam(null, 'mska');
|
||||
$this->tmpFiles[] = $tmp_alpha;
|
||||
$tmp_plain = tempnam(null, 'mskp');
|
||||
$this->tmpFiles[] = $tmp_plain;
|
||||
|
||||
list($wpx, $hpx) = @getimagesize($file);
|
||||
$img = imagecreatefrompng($file);
|
||||
$alpha_img = imagecreate( $wpx, $hpx );
|
||||
|
||||
// generate gray scale pallete
|
||||
for($c=0;$c<256;$c++) ImageColorAllocate($alpha_img, $c, $c, $c);
|
||||
|
||||
// extract alpha channel
|
||||
$xpx=0;
|
||||
while ($xpx<$wpx)
|
||||
{
|
||||
$ypx = 0;
|
||||
while ($ypx<$hpx)
|
||||
{
|
||||
$color_index = imagecolorat($img, $xpx, $ypx);
|
||||
$col = imagecolorsforindex($img, $color_index);
|
||||
imagesetpixel($alpha_img, $xpx, $ypx, $this->_gamma( (127-$col['alpha'])*255/127) );
|
||||
++$ypx;
|
||||
}
|
||||
++$xpx;
|
||||
}
|
||||
|
||||
imagepng($alpha_img, $tmp_alpha);
|
||||
imagedestroy($alpha_img);
|
||||
|
||||
// extract image without alpha channel
|
||||
$plain_img = imagecreatetruecolor ( $wpx, $hpx );
|
||||
imagecopy ($plain_img, $img, 0, 0, 0, 0, $wpx, $hpx );
|
||||
imagepng($plain_img, $tmp_plain);
|
||||
imagedestroy($plain_img);
|
||||
|
||||
//first embed mask image (w, h, x, will be ignored)
|
||||
$maskImg = $this->Image($tmp_alpha, 0,0,0,0, 'PNG', '', true);
|
||||
|
||||
//embed image, masked with previously embedded mask
|
||||
$this->Image($tmp_plain,$x,$y,$w,$h,'PNG',$link, false, $maskImg);
|
||||
}
|
||||
|
||||
function Close()
|
||||
{
|
||||
parent::Close();
|
||||
// clean up tmp files
|
||||
foreach($this->tmpFiles as $tmp) @unlink($tmp);
|
||||
}
|
||||
|
||||
/* Private methods */
|
||||
function _putimages()
|
||||
{
|
||||
$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
|
||||
reset($this->images);
|
||||
while(list($file,$info)=each($this->images))
|
||||
{
|
||||
$this->_newobj();
|
||||
$this->images[$file]['n']=$this->n;
|
||||
$this->_out('<</Type /XObject');
|
||||
$this->_out('/Subtype /Image');
|
||||
$this->_out('/Width '.$info['w']);
|
||||
$this->_out('/Height '.$info['h']);
|
||||
|
||||
if (isset($info["masked"])) $this->_out('/SMask '.($this->n-1).' 0 R'); ###
|
||||
|
||||
if($info['cs']=='Indexed')
|
||||
$this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
|
||||
else
|
||||
{
|
||||
$this->_out('/ColorSpace /'.$info['cs']);
|
||||
if($info['cs']=='DeviceCMYK')
|
||||
$this->_out('/Decode [1 0 1 0 1 0 1 0]');
|
||||
}
|
||||
$this->_out('/BitsPerComponent '.$info['bpc']);
|
||||
if(isset($info['f']))
|
||||
$this->_out('/Filter /'.$info['f']);
|
||||
if(isset($info['parms']))
|
||||
$this->_out($info['parms']);
|
||||
if(isset($info['trns']) && is_array($info['trns']))
|
||||
{
|
||||
$trns='';
|
||||
for($i=0;$i<count($info['trns']);$i++)
|
||||
$trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
|
||||
$this->_out('/Mask ['.$trns.']');
|
||||
}
|
||||
$this->_out('/Length '.strlen($info['data']).'>>');
|
||||
$this->_putstream($info['data']);
|
||||
unset($this->images[$file]['data']);
|
||||
$this->_out('endobj');
|
||||
//Palette
|
||||
if($info['cs']=='Indexed')
|
||||
{
|
||||
$this->_newobj();
|
||||
$pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
|
||||
$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
|
||||
$this->_putstream($pal);
|
||||
$this->_out('endobj');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GD seems to use a different gamma, this method is used to correct it again
|
||||
function _gamma($v)
|
||||
{
|
||||
return pow ($v/255, 2.2) * 255;
|
||||
}
|
||||
|
||||
// this method overwriing the original version is only needed to make the Image method support PNGs with alpha channels.
|
||||
// if you only use the ImagePngWithAlpha method for such PNGs, you can remove it from this script.
|
||||
function _parsepng($file)
|
||||
{
|
||||
//Extract info from a PNG file
|
||||
$f=fopen($file,'rb');
|
||||
if(!$f)
|
||||
$this->Error('Can\'t open image file: '.$file);
|
||||
//Check signature
|
||||
if(fread($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
|
||||
$this->Error('Not a PNG file: '.$file);
|
||||
//Read header chunk
|
||||
fread($f,4);
|
||||
if(fread($f,4)!='IHDR')
|
||||
$this->Error('Incorrect PNG file: '.$file);
|
||||
$w=$this->_readint($f);
|
||||
$h=$this->_readint($f);
|
||||
$bpc=ord(fread($f,1));
|
||||
if($bpc>8)
|
||||
$this->Error('16-bit depth not supported: '.$file);
|
||||
$ct=ord(fread($f,1));
|
||||
if($ct==0)
|
||||
$colspace='DeviceGray';
|
||||
elseif($ct==2)
|
||||
$colspace='DeviceRGB';
|
||||
elseif($ct==3)
|
||||
$colspace='Indexed';
|
||||
else
|
||||
{
|
||||
fclose($f); // the only changes are
|
||||
return 'alpha'; // made in those 2 lines
|
||||
}
|
||||
if(ord(fread($f,1))!=0)
|
||||
$this->Error('Unknown compression method: '.$file);
|
||||
if(ord(fread($f,1))!=0)
|
||||
$this->Error('Unknown filter method: '.$file);
|
||||
if(ord(fread($f,1))!=0)
|
||||
$this->Error('Interlacing not supported: '.$file);
|
||||
fread($f,4);
|
||||
$parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
|
||||
//Scan chunks looking for palette, transparency and image data
|
||||
$pal='';
|
||||
$trns='';
|
||||
$data='';
|
||||
do
|
||||
{
|
||||
$n=$this->_readint($f);
|
||||
$type=fread($f,4);
|
||||
if($type=='PLTE')
|
||||
{
|
||||
//Read palette
|
||||
$pal=fread($f,$n);
|
||||
fread($f,4);
|
||||
}
|
||||
elseif($type=='tRNS')
|
||||
{
|
||||
//Read transparency info
|
||||
$t=fread($f,$n);
|
||||
if($ct==0)
|
||||
$trns=array(ord(substr($t,1,1)));
|
||||
elseif($ct==2)
|
||||
$trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1)));
|
||||
else
|
||||
{
|
||||
$pos=strpos($t,chr(0));
|
||||
if($pos!==false)
|
||||
$trns=array($pos);
|
||||
}
|
||||
fread($f,4);
|
||||
}
|
||||
elseif($type=='IDAT')
|
||||
{
|
||||
//Read image data block
|
||||
$data.=fread($f,$n);
|
||||
fread($f,4);
|
||||
}
|
||||
elseif($type=='IEND')
|
||||
break;
|
||||
else
|
||||
fread($f,$n+4);
|
||||
}
|
||||
while($n);
|
||||
if($colspace=='Indexed' && empty($pal))
|
||||
$this->Error('Missing palette in '.$file);
|
||||
fclose($f);
|
||||
return array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$data);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
228
library/Vendors/html2pdf/_mypdf/99_fpdf_protection.class.php
Normal file
228
library/Vendors/html2pdf/_mypdf/99_fpdf_protection.class.php
Normal file
@ -0,0 +1,228 @@
|
||||
<?php
|
||||
/*************************************************************************
|
||||
* http://www.fpdf.org/fr/script/script37.php
|
||||
*
|
||||
* @author Klemen Vodopivec
|
||||
*
|
||||
* Ce script permet de protéger le PDF, c'est-à-dire empêcher l'utilisateur de copier son contenu, de l'imprimer ou de le modifier.
|
||||
*
|
||||
* SetProtection([array permissions [, string user_pass [, string owner_pass]]])
|
||||
*
|
||||
* permissions : l'ensemble des permissions. Vide par défaut (seule la lecture est autorisée).
|
||||
* user_pass : mot de passe utilisateur. Vide par défaut.
|
||||
* owner_pass : mot de passe propriétaire. Par défaut, une valeur aléatoire est choisie.
|
||||
*
|
||||
* Le tableau des permissions est composé de valeurs prises parmi les suivantes :
|
||||
* * copy : copie du texte et des images dans le presse-papier
|
||||
* * print : impression du document
|
||||
* * modify : modification (autre ques les annotations et les formulaires)
|
||||
* * annot-forms : ajout d'annotations ou de formulaires
|
||||
*
|
||||
* Remarque : la protection contre la modification concerne les personnes possédant la version complète d'Acrobat.
|
||||
*
|
||||
* Si vous ne spécifiez pas de mot de passe, le document s'ouvrira normalement. Si vous indiquez un mot de passe utilisateur,
|
||||
* le lecteur de PDF le demandera avant d'afficher le document. Le mot de passe propriétaire, s'il est différent de celui utilisateur,
|
||||
* permet d'obtenir l'accès complet.
|
||||
*
|
||||
* Note : protéger un document nécessite de le crypter, ce qui augmente le temps de traitement de manière importante.
|
||||
* Cela peut dans certains cas entraîner un time-out au niveau de PHP, en particulier si le document contient des
|
||||
* images ou des polices.
|
||||
************************************************************************/
|
||||
|
||||
if (!defined('__CLASS_FPDF_PROTECTION__'))
|
||||
{
|
||||
define('__CLASS_FPDF_PROTECTION__', true);
|
||||
|
||||
require_once(dirname(__FILE__).'/03_fpdf_alpha.class.php');
|
||||
|
||||
class FPDF_Protection extends FPDF_Alpha
|
||||
{
|
||||
var $encrypted; //whether document is protected
|
||||
var $Uvalue; //U entry in pdf document
|
||||
var $Ovalue; //O entry in pdf document
|
||||
var $Pvalue; //P entry in pdf document
|
||||
var $enc_obj_id; //encryption object id
|
||||
var $last_rc4_key; //last RC4 key encrypted (cached for optimisation)
|
||||
var $last_rc4_key_c; //last RC4 computed key
|
||||
|
||||
function FPDF_Protection($orientation='P',$unit='mm',$format='A4')
|
||||
{
|
||||
$this->FPDF_Formulaire($orientation,$unit,$format);
|
||||
|
||||
$this->encrypted=false;
|
||||
$this->last_rc4_key='';
|
||||
$this->padding="\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08".
|
||||
"\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to set permissions as well as user and owner passwords
|
||||
*
|
||||
* - permissions is an array with values taken from the following list:
|
||||
* copy, print, modify, annot-forms
|
||||
* If a value is present it means that the permission is granted
|
||||
* - If a user password is set, user will be prompted before document is opened
|
||||
* - If an owner password is set, document can be opened in privilege mode with no
|
||||
* restriction if that password is entered
|
||||
*/
|
||||
function SetProtection($permissions=array(),$user_pass='',$owner_pass=null)
|
||||
{
|
||||
$options = array('print' => 4, 'modify' => 8, 'copy' => 16, 'annot-forms' => 32 );
|
||||
$protection = 192;
|
||||
foreach($permissions as $permission){
|
||||
if (!isset($options[$permission]))
|
||||
$this->Error('Incorrect permission: '.$permission);
|
||||
$protection += $options[$permission];
|
||||
}
|
||||
if ($owner_pass === null)
|
||||
$owner_pass = uniqid(rand());
|
||||
$this->encrypted = true;
|
||||
$this->_generateencryptionkey($user_pass, $owner_pass, $protection);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* *
|
||||
* Private methods *
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
function _putstream($s)
|
||||
{
|
||||
if ($this->encrypted) {
|
||||
$s = $this->_RC4($this->_objectkey($this->n), $s);
|
||||
}
|
||||
parent::_putstream($s);
|
||||
}
|
||||
|
||||
function _textstring($s)
|
||||
{
|
||||
if ($this->encrypted) {
|
||||
$s = $this->_RC4($this->_objectkey($this->n), $s);
|
||||
}
|
||||
return parent::_textstring($s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute key depending on object number where the encrypted data is stored
|
||||
*/
|
||||
function _objectkey($n)
|
||||
{
|
||||
return substr($this->_md5_16($this->encryption_key.pack('VXxx',$n)),0,10);
|
||||
}
|
||||
|
||||
function _putresources()
|
||||
{
|
||||
parent::_putresources();
|
||||
if ($this->encrypted) {
|
||||
$this->_newobj();
|
||||
$this->enc_obj_id = $this->n;
|
||||
$this->_out('<<');
|
||||
$this->_putencryption();
|
||||
$this->_out('>>');
|
||||
$this->_out('endobj');
|
||||
}
|
||||
}
|
||||
|
||||
function _putencryption()
|
||||
{
|
||||
$this->_out('/Filter /Standard');
|
||||
$this->_out('/V 1');
|
||||
$this->_out('/R 2');
|
||||
$this->_out('/O ('.$this->_escape($this->Ovalue).')');
|
||||
$this->_out('/U ('.$this->_escape($this->Uvalue).')');
|
||||
$this->_out('/P '.$this->Pvalue);
|
||||
}
|
||||
|
||||
function _puttrailer()
|
||||
{
|
||||
parent::_puttrailer();
|
||||
if ($this->encrypted) {
|
||||
$this->_out('/Encrypt '.$this->enc_obj_id.' 0 R');
|
||||
$this->_out('/ID [()()]');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* RC4 is the standard encryption algorithm used in PDF format
|
||||
*/
|
||||
function _RC4($key, $text)
|
||||
{
|
||||
if ($this->last_rc4_key != $key) {
|
||||
$k = str_repeat($key, 256/strlen($key)+1);
|
||||
$rc4 = range(0,255);
|
||||
$j = 0;
|
||||
for ($i=0; $i<256; $i++){
|
||||
$t = $rc4[$i];
|
||||
$j = ($j + $t + ord($k{$i})) % 256;
|
||||
$rc4[$i] = $rc4[$j];
|
||||
$rc4[$j] = $t;
|
||||
}
|
||||
$this->last_rc4_key = $key;
|
||||
$this->last_rc4_key_c = $rc4;
|
||||
} else {
|
||||
$rc4 = $this->last_rc4_key_c;
|
||||
}
|
||||
|
||||
$len = strlen($text);
|
||||
$a = 0;
|
||||
$b = 0;
|
||||
$out = '';
|
||||
for ($i=0; $i<$len; $i++){
|
||||
$a = ($a+1)%256;
|
||||
$t= $rc4[$a];
|
||||
$b = ($b+$t)%256;
|
||||
$rc4[$a] = $rc4[$b];
|
||||
$rc4[$b] = $t;
|
||||
$k = $rc4[($rc4[$a]+$rc4[$b])%256];
|
||||
$out.=chr(ord($text{$i}) ^ $k);
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get MD5 as binary string
|
||||
*/
|
||||
function _md5_16($string)
|
||||
{
|
||||
return pack('H*',md5($string));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute O value
|
||||
*/
|
||||
function _Ovalue($user_pass, $owner_pass)
|
||||
{
|
||||
$tmp = $this->_md5_16($owner_pass);
|
||||
$owner_RC4_key = substr($tmp,0,5);
|
||||
return $this->_RC4($owner_RC4_key, $user_pass);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute U value
|
||||
*/
|
||||
function _Uvalue()
|
||||
{
|
||||
return $this->_RC4($this->encryption_key, $this->padding);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute encryption key
|
||||
*/
|
||||
function _generateencryptionkey($user_pass, $owner_pass, $protection)
|
||||
{
|
||||
// Pad passwords
|
||||
$user_pass = substr($user_pass.$this->padding,0,32);
|
||||
$owner_pass = substr($owner_pass.$this->padding,0,32);
|
||||
// Compute O value
|
||||
$this->Ovalue = $this->_Ovalue($user_pass,$owner_pass);
|
||||
// Compute encyption key
|
||||
$tmp = $this->_md5_16($user_pass.$this->Ovalue.chr($protection)."\xFF\xFF\xFF");
|
||||
$this->encryption_key = substr($tmp,0,5);
|
||||
// Compute U value
|
||||
$this->Uvalue = $this->_Uvalue();
|
||||
// Compute P value
|
||||
$this->Pvalue = -(($protection^255)+1);
|
||||
}
|
||||
}
|
||||
}
|
210
library/Vendors/html2pdf/_mypdf/htmlcolors.php
Normal file
210
library/Vendors/html2pdf/_mypdf/htmlcolors.php
Normal file
@ -0,0 +1,210 @@
|
||||
<?php
|
||||
//============================================================+
|
||||
// File name : htmlcolors.php
|
||||
// Begin : 2002-04-09
|
||||
// Last Update : 2010-04-20
|
||||
// Version : 1.0.004
|
||||
// License : GNU LGPL (http://www.gnu.org/copyleft/lesser.html)
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright (C) 2002-2009 Nicola Asuni - Tecnick.com S.r.l.
|
||||
//
|
||||
// This program 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 2.1 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program 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 program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// See LICENSE.TXT file for more information.
|
||||
// ----------------------------------------------------------------------------
|
||||
//
|
||||
// Description : Array of WEB safe colors
|
||||
//
|
||||
// Author: Nicola Asuni
|
||||
//
|
||||
// (c) Copyright:
|
||||
// Nicola Asuni
|
||||
// Tecnick.com S.r.l.
|
||||
// Via della Pace, 11
|
||||
// 09044 Quartucciu (CA)
|
||||
// ITALY
|
||||
// www.tecnick.com
|
||||
// info@tecnick.com
|
||||
//============================================================+
|
||||
|
||||
/**
|
||||
* Array of WEB safe colors.
|
||||
* @author Nicola Asuni
|
||||
* @copyright 2004-2009 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
|
||||
* @package com.tecnick.tcpdf
|
||||
* @link http://www.tcpdf.org
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
* @since 2.9.000 (2008-03-26)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Array of WEB safe colors
|
||||
*/
|
||||
global $webcolor;
|
||||
$webcolor = array (
|
||||
'aliceblue' => 'f0f8ff',
|
||||
'antiquewhite' => 'faebd7',
|
||||
'aqua' => '00ffff',
|
||||
'aquamarine' => '7fffd4',
|
||||
'azure' => 'f0ffff',
|
||||
'beige' => 'f5f5dc',
|
||||
'bisque' => 'ffe4c4',
|
||||
'black' => '000000',
|
||||
'blanchedalmond' => 'ffebcd',
|
||||
'blue' => '0000ff',
|
||||
'blueviolet' => '8a2be2',
|
||||
'brown' => 'a52a2a',
|
||||
'burlywood' => 'deb887',
|
||||
'cadetblue' => '5f9ea0',
|
||||
'chartreuse' => '7fff00',
|
||||
'chocolate' => 'd2691e',
|
||||
'coral' => 'ff7f50',
|
||||
'cornflowerblue' => '6495ed',
|
||||
'cornsilk' => 'fff8dc',
|
||||
'crimson' => 'dc143c',
|
||||
'cyan' => '00ffff',
|
||||
'darkblue' => '00008b',
|
||||
'darkcyan' => '008b8b',
|
||||
'darkgoldenrod' => 'b8860b',
|
||||
'dkgray' => 'a9a9a9',
|
||||
'darkgray' => 'a9a9a9',
|
||||
'darkgrey' => 'a9a9a9',
|
||||
'darkgreen' => '006400',
|
||||
'darkkhaki' => 'bdb76b',
|
||||
'darkmagenta' => '8b008b',
|
||||
'darkolivegreen' => '556b2f',
|
||||
'darkorange' => 'ff8c00',
|
||||
'darkorchid' => '9932cc',
|
||||
'darkred' => '8b0000',
|
||||
'darksalmon' => 'e9967a',
|
||||
'darkseagreen' => '8fbc8f',
|
||||
'darkslateblue' => '483d8b',
|
||||
'darkslategray' => '2f4f4f',
|
||||
'darkslategrey' => '2f4f4f',
|
||||
'darkturquoise' => '00ced1',
|
||||
'darkviolet' => '9400d3',
|
||||
'deeppink' => 'ff1493',
|
||||
'deepskyblue' => '00bfff',
|
||||
'dimgray' => '696969',
|
||||
'dimgrey' => '696969',
|
||||
'dodgerblue' => '1e90ff',
|
||||
'firebrick' => 'b22222',
|
||||
'floralwhite' => 'fffaf0',
|
||||
'forestgreen' => '228b22',
|
||||
'fuchsia' => 'ff00ff',
|
||||
'gainsboro' => 'dcdcdc',
|
||||
'ghostwhite' => 'f8f8ff',
|
||||
'gold' => 'ffd700',
|
||||
'goldenrod' => 'daa520',
|
||||
'gray' => '808080',
|
||||
'grey' => '808080',
|
||||
'green' => '008000',
|
||||
'greenyellow' => 'adff2f',
|
||||
'honeydew' => 'f0fff0',
|
||||
'hotpink' => 'ff69b4',
|
||||
'indianred' => 'cd5c5c',
|
||||
'indigo' => '4b0082',
|
||||
'ivory' => 'fffff0',
|
||||
'khaki' => 'f0e68c',
|
||||
'lavender' => 'e6e6fa',
|
||||
'lavenderblush' => 'fff0f5',
|
||||
'lawngreen' => '7cfc00',
|
||||
'lemonchiffon' => 'fffacd',
|
||||
'lightblue' => 'add8e6',
|
||||
'lightcoral' => 'f08080',
|
||||
'lightcyan' => 'e0ffff',
|
||||
'lightgoldenrodyellow' => 'fafad2',
|
||||
'ltgray' => 'd3d3d3',
|
||||
'lightgray' => 'd3d3d3',
|
||||
'lightgrey' => 'd3d3d3',
|
||||
'lightgreen' => '90ee90',
|
||||
'lightpink' => 'ffb6c1',
|
||||
'lightsalmon' => 'ffa07a',
|
||||
'lightseagreen' => '20b2aa',
|
||||
'lightskyblue' => '87cefa',
|
||||
'lightslategray' => '778899',
|
||||
'lightslategrey' => '778899',
|
||||
'lightsteelblue' => 'b0c4de',
|
||||
'lightyellow' => 'ffffe0',
|
||||
'lime' => '00ff00',
|
||||
'limegreen' => '32cd32',
|
||||
'linen' => 'faf0e6',
|
||||
'magenta' => 'ff00ff',
|
||||
'maroon' => '800000',
|
||||
'mediumaquamarine' => '66cdaa',
|
||||
'mediumblue' => '0000cd',
|
||||
'mediumorchid' => 'ba55d3',
|
||||
'mediumpurple' => '9370d8',
|
||||
'mediumseagreen' => '3cb371',
|
||||
'mediumslateblue' => '7b68ee',
|
||||
'mediumspringgreen' => '00fa9a',
|
||||
'mediumturquoise' => '48d1cc',
|
||||
'mediumvioletred' => 'c71585',
|
||||
'midnightblue' => '191970',
|
||||
'mintcream' => 'f5fffa',
|
||||
'mistyrose' => 'ffe4e1',
|
||||
'moccasin' => 'ffe4b5',
|
||||
'navajowhite' => 'ffdead',
|
||||
'navy' => '000080',
|
||||
'oldlace' => 'fdf5e6',
|
||||
'olive' => '808000',
|
||||
'olivedrab' => '6b8e23',
|
||||
'orange' => 'ffa500',
|
||||
'orangered' => 'ff4500',
|
||||
'orchid' => 'da70d6',
|
||||
'palegoldenrod' => 'eee8aa',
|
||||
'palegreen' => '98fb98',
|
||||
'paleturquoise' => 'afeeee',
|
||||
'palevioletred' => 'd87093',
|
||||
'papayawhip' => 'ffefd5',
|
||||
'peachpuff' => 'ffdab9',
|
||||
'peru' => 'cd853f',
|
||||
'pink' => 'ffc0cb',
|
||||
'plum' => 'dda0dd',
|
||||
'powderblue' => 'b0e0e6',
|
||||
'purple' => '800080',
|
||||
'red' => 'ff0000',
|
||||
'rosybrown' => 'bc8f8f',
|
||||
'royalblue' => '4169e1',
|
||||
'saddlebrown' => '8b4513',
|
||||
'salmon' => 'fa8072',
|
||||
'sandybrown' => 'f4a460',
|
||||
'seagreen' => '2e8b57',
|
||||
'seashell' => 'fff5ee',
|
||||
'sienna' => 'a0522d',
|
||||
'silver' => 'c0c0c0',
|
||||
'skyblue' => '87ceeb',
|
||||
'slateblue' => '6a5acd',
|
||||
'slategray' => '708090',
|
||||
'slategrey' => '708090',
|
||||
'snow' => 'fffafa',
|
||||
'springgreen' => '00ff7f',
|
||||
'steelblue' => '4682b4',
|
||||
'tan' => 'd2b48c',
|
||||
'teal' => '008080',
|
||||
'thistle' => 'd8bfd8',
|
||||
'tomato' => 'ff6347',
|
||||
'turquoise' => '40e0d0',
|
||||
'violet' => 'ee82ee',
|
||||
'wheat' => 'f5deb3',
|
||||
'white' => 'ffffff',
|
||||
'whitesmoke' => 'f5f5f5',
|
||||
'yellow' => 'ffff00',
|
||||
'yellowgreen' => '9acd32'
|
||||
);
|
||||
|
||||
//============================================================+
|
||||
// END OF FILE
|
||||
//============================================================+
|
||||
?>
|
950
library/Vendors/html2pdf/_mypdf/mypdf.class.php
Normal file
950
library/Vendors/html2pdf/_mypdf/mypdf.class.php
Normal file
@ -0,0 +1,950 @@
|
||||
<?php
|
||||
/**
|
||||
* Logiciel : HTML2PDF - classe MyPDF
|
||||
*
|
||||
* Convertisseur HTML => PDF
|
||||
* Distribué sous la licence LGPL.
|
||||
*
|
||||
* @author Laurent MINGUET <webmaster@html2pdf.fr>
|
||||
* @version 3.31
|
||||
*/
|
||||
|
||||
if (!defined('__CLASS_MYPDF__'))
|
||||
{
|
||||
define('__CLASS_MYPDF__', true);
|
||||
|
||||
require_once(dirname(__FILE__).'/htmlcolors.php'); // couleurs HTML, contient les memes que le fichier de TCPDF
|
||||
require_once(dirname(__FILE__).'/99_fpdf_protection.class.php'); // classe fpdf_protection
|
||||
|
||||
class MyPDF extends FPDF_Protection
|
||||
{
|
||||
var $footer_param = array();
|
||||
var $transf = array();
|
||||
|
||||
var $underline = false;
|
||||
var $linethrough = false;
|
||||
var $overline = false;
|
||||
|
||||
function MyPDF($sens = 'P', $unit = 'mm', $format = 'A4')
|
||||
{
|
||||
$this->underline = false;
|
||||
$this->overline = false;
|
||||
$this->linethrough = false;
|
||||
|
||||
$this->FPDF_Protection($sens, $unit, $format);
|
||||
$this->AliasNbPages();
|
||||
$this->SetMyFooter();
|
||||
}
|
||||
|
||||
function SetMyFooter($page = null, $date = null, $heure = null, $form = null)
|
||||
{
|
||||
$page = ($page ? true : false);
|
||||
$date = ($date ? true : false);
|
||||
$heure = ($heure ? true : false);
|
||||
$form = ($form ? true : false);
|
||||
|
||||
$this->footer_param = array('page' => $page, 'date' => $date, 'heure' => $heure, 'form' => $form);
|
||||
}
|
||||
|
||||
function Footer()
|
||||
{
|
||||
$txt = '';
|
||||
if ($this->footer_param['form']) $txt = (HTML2PDF::textGET('pdf05'));
|
||||
if ($this->footer_param['date'] && $this->footer_param['heure']) $txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf03'));
|
||||
if ($this->footer_param['date'] && !$this->footer_param['heure']) $txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf01'));
|
||||
if (!$this->footer_param['date'] && $this->footer_param['heure']) $txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf02'));
|
||||
if ($this->footer_param['page']) $txt.= ($txt ? ' - ' : '').(HTML2PDF::textGET('pdf04'));
|
||||
|
||||
if (strlen($txt)>0)
|
||||
{
|
||||
$txt = str_replace('[[date_d]]', date('d'), $txt);
|
||||
$txt = str_replace('[[date_m]]', date('m'), $txt);
|
||||
$txt = str_replace('[[date_y]]', date('Y'), $txt);
|
||||
$txt = str_replace('[[date_h]]', date('H'), $txt);
|
||||
$txt = str_replace('[[date_i]]', date('i'), $txt);
|
||||
$txt = str_replace('[[date_s]]', date('s'), $txt);
|
||||
$txt = str_replace('[[current]]', $this->PageNo(), $txt);
|
||||
$txt = str_replace('[[nb]]', '{nb}', $txt);
|
||||
|
||||
parent::SetY(-11);
|
||||
$this->setOverline(false);
|
||||
$this->setLinethrough(false);
|
||||
$this->SetFont('helvetica', 'I', 8);
|
||||
$this->Cell(0, 10, $txt, 0, 0, 'R');
|
||||
}
|
||||
}
|
||||
|
||||
// Draw a polygon
|
||||
// Auteur : Andrew Meier
|
||||
// Licence : Freeware
|
||||
function Polygon($points, $style='D')
|
||||
{
|
||||
if($style=='F') $op='f';
|
||||
elseif($style=='FD' or $style=='DF') $op='b';
|
||||
else $op='s';
|
||||
|
||||
$h = $this->h;
|
||||
$k = $this->k;
|
||||
|
||||
$points_string = '';
|
||||
for($i=0; $i<count($points); $i+=2)
|
||||
{
|
||||
$points_string .= sprintf('%.2F %.2F', $points[$i]*$k, ($h-$points[$i+1])*$k);
|
||||
if($i==0) $points_string .= ' m ';
|
||||
else $points_string .= ' l ';
|
||||
}
|
||||
$this->_out($points_string . $op);
|
||||
}
|
||||
|
||||
function setOverline($value = true)
|
||||
{
|
||||
$this->overline = $value;
|
||||
}
|
||||
|
||||
function setLinethrough($value = true)
|
||||
{
|
||||
$this->linethrough = $value;
|
||||
}
|
||||
|
||||
// redéfinition de la methode Text de FPDF afin de rajouter la gestion des overline et linethrough
|
||||
function Text($x, $y, $txt)
|
||||
{
|
||||
//Output a string
|
||||
$s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt));
|
||||
|
||||
/* MODIFICATION HTML2PDF pour le support de underline, overline, linethrough */
|
||||
if ($txt!='')
|
||||
{
|
||||
if($this->underline) $s.=' '.$this->_dounderline($x,$y,$txt);
|
||||
if($this->overline) $s.=' '.$this->_dooverline($x,$y,$txt);
|
||||
if($this->linethrough) $s.=' '.$this->_dolinethrough($x,$y,$txt);
|
||||
}
|
||||
/* FIN MODIFICATION */
|
||||
|
||||
if($this->ColorFlag)
|
||||
$s='q '.$this->TextColor.' '.$s.' Q';
|
||||
$this->_out($s);
|
||||
}
|
||||
|
||||
// redéfinition de la methode Cell de FPDF afin de rajouter la gestion des overline et linethrough
|
||||
function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='')
|
||||
{
|
||||
//Output a cell
|
||||
$k=$this->k;
|
||||
if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
|
||||
{
|
||||
//Automatic page break
|
||||
$x=$this->x;
|
||||
$ws=$this->ws;
|
||||
if($ws>0) $this->setWordSpacing(0);
|
||||
$this->AddPage($this->CurOrientation,$this->CurPageFormat);
|
||||
$this->x=$x;
|
||||
if($ws>0) $this->setWordSpacing($ws);
|
||||
}
|
||||
if($w==0)
|
||||
$w=$this->w-$this->rMargin-$this->x;
|
||||
$s='';
|
||||
if($fill || $border==1)
|
||||
{
|
||||
if($fill)
|
||||
$op=($border==1) ? 'B' : 'f';
|
||||
else
|
||||
$op='S';
|
||||
$s=sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
|
||||
}
|
||||
if(is_string($border))
|
||||
{
|
||||
$x=$this->x;
|
||||
$y=$this->y;
|
||||
if(strpos($border,'L')!==false)
|
||||
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
|
||||
if(strpos($border,'T')!==false)
|
||||
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
|
||||
if(strpos($border,'R')!==false)
|
||||
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
|
||||
if(strpos($border,'B')!==false)
|
||||
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
|
||||
}
|
||||
|
||||
if($txt!=='')
|
||||
{
|
||||
if($align=='R')
|
||||
$dx=$w-$this->cMargin-$this->GetStringWidth($txt);
|
||||
elseif($align=='C')
|
||||
$dx=($w-$this->GetStringWidth($txt))/2;
|
||||
else
|
||||
$dx=$this->cMargin;
|
||||
if($this->ColorFlag)
|
||||
$s.='q '.$this->TextColor.' ';
|
||||
$txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
|
||||
$s.=sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
|
||||
|
||||
/* MODIFICATION HTML2PDF pour le support de underline, overline, linethrough */
|
||||
if($this->underline) $s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
|
||||
if($this->overline) $s.=' '.$this->_dooverline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
|
||||
if($this->linethrough) $s.=' '.$this->_dolinethrough($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
|
||||
/* FIN MODIFICATION */
|
||||
|
||||
if($this->ColorFlag)
|
||||
$s.=' Q';
|
||||
if($link)
|
||||
$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
|
||||
}
|
||||
|
||||
if($s)
|
||||
$this->_out($s);
|
||||
$this->lasth=$h;
|
||||
if($ln>0)
|
||||
{
|
||||
//Go to next line
|
||||
$this->y+=$h;
|
||||
if($ln==1)
|
||||
$this->x=$this->lMargin;
|
||||
}
|
||||
else
|
||||
$this->x+=$w;
|
||||
}
|
||||
|
||||
function _dounderline($x, $y, $txt)
|
||||
{
|
||||
//Underline text
|
||||
$up=$this->CurrentFont['up'];
|
||||
$ut=$this->CurrentFont['ut'];
|
||||
|
||||
$p_x = $x*$this->k;
|
||||
$p_y = ($this->h-($y-$up/1000*$this->FontSize))*$this->k;
|
||||
$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
|
||||
$p_h = -$ut/1000*$this->FontSizePt;
|
||||
|
||||
return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
|
||||
}
|
||||
|
||||
function _dooverline($x, $y, $txt)
|
||||
{
|
||||
//Overline text
|
||||
$up=$this->CurrentFont['up'];
|
||||
$ut=$this->CurrentFont['ut'];
|
||||
|
||||
$p_x = $x*$this->k;
|
||||
$p_y = ($this->h-($y-(1000+1.5*$up)/1000*$this->FontSize))*$this->k;
|
||||
$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
|
||||
$p_h = -$ut/1000*$this->FontSizePt;
|
||||
|
||||
return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
|
||||
}
|
||||
|
||||
function _dolinethrough($x, $y, $txt)
|
||||
{
|
||||
//Linethrough text
|
||||
$up=$this->CurrentFont['up'];
|
||||
$ut=$this->CurrentFont['ut'];
|
||||
|
||||
$p_x = $x*$this->k;
|
||||
$p_y = ($this->h-($y-(1000+2.5*$up)/2000*$this->FontSize))*$this->k;
|
||||
$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
|
||||
$p_h = -$ut/1000*$this->FontSizePt;
|
||||
|
||||
return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
|
||||
}
|
||||
|
||||
function cloneFontFrom(&$pdf)
|
||||
{
|
||||
$this->fonts = &$pdf->getFonts();
|
||||
$this->FontFiles = &$pdf->getFontFiles();
|
||||
$this->diffs = &$pdf->getDiffs();
|
||||
}
|
||||
|
||||
function &getFonts() { return $this->fonts; }
|
||||
function &getFontFiles() { return $this->FontFiles; }
|
||||
function &getDiffs() { return $this->diffs; }
|
||||
|
||||
function isLoadedFont($fontkey)
|
||||
{
|
||||
if (isset($this->fonts[$fontkey]))
|
||||
return true;
|
||||
|
||||
if (isset($this->CoreFonts[$fontkey]))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function setWordSpacing($ws=0.)
|
||||
{
|
||||
$this->ws = $ws;
|
||||
$this->_out(sprintf('%.3F Tw',$ws*$this->k));
|
||||
}
|
||||
|
||||
function clippingPathOpen($x = null, $y = null, $w = null, $h = null, $coin_TL=null, $coin_TR=null, $coin_BL=null, $coin_BR=null)
|
||||
{
|
||||
$path = '';
|
||||
if ($x!==null && $y!==null && $w!==null && $h!==null)
|
||||
{
|
||||
$x1 = $x*$this->k;
|
||||
$y1 = ($this->h-$y)*$this->k;
|
||||
|
||||
$x2 = ($x+$w)*$this->k;
|
||||
$y2 = ($this->h-$y)*$this->k;
|
||||
|
||||
$x3 = ($x+$w)*$this->k;
|
||||
$y3 = ($this->h-$y-$h)*$this->k;
|
||||
|
||||
$x4 = $x*$this->k;
|
||||
$y4 = ($this->h-$y-$h)*$this->k;
|
||||
|
||||
if ($coin_TL || $coin_TR || $coin_BL || $coin_BR)
|
||||
{
|
||||
if ($coin_TL) { $coin_TL[0] = $coin_TL[0]*$this->k; $coin_TL[1] =-$coin_TL[1]*$this->k; }
|
||||
if ($coin_TR) { $coin_TR[0] = $coin_TR[0]*$this->k; $coin_TR[1] =-$coin_TR[1]*$this->k; }
|
||||
if ($coin_BL) { $coin_BL[0] = $coin_BL[0]*$this->k; $coin_BL[1] =-$coin_BL[1]*$this->k; }
|
||||
if ($coin_BR) { $coin_BR[0] = $coin_BR[0]*$this->k; $coin_BR[1] =-$coin_BR[1]*$this->k; }
|
||||
|
||||
$MyArc = 4/3 * (sqrt(2) - 1);
|
||||
|
||||
if ($coin_TL)
|
||||
$path.= sprintf('%.2F %.2F m ', $x1+$coin_TL[0], $y1);
|
||||
else
|
||||
$path.= sprintf('%.2F %.2F m ', $x1, $y1);
|
||||
|
||||
if ($coin_TR)
|
||||
{
|
||||
$xt1 = ($x2-$coin_TR[0])+$coin_TR[0]*$MyArc;
|
||||
$yt1 = ($y2+$coin_TR[1])-$coin_TR[1];
|
||||
$xt2 = ($x2-$coin_TR[0])+$coin_TR[0];
|
||||
$yt2 = ($y2+$coin_TR[1])-$coin_TR[1]*$MyArc;
|
||||
|
||||
$path.= sprintf('%.2F %.2F l ', $x2-$coin_TR[0], $y2);
|
||||
$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x2, $y2+$coin_TR[1]);
|
||||
}
|
||||
else
|
||||
$path.= sprintf('%.2F %.2F l ', $x2, $y2);
|
||||
|
||||
if ($coin_BR)
|
||||
{
|
||||
$xt1 = ($x3-$coin_BR[0])+$coin_BR[0];
|
||||
$yt1 = ($y3-$coin_BR[1])+$coin_BR[1]*$MyArc;
|
||||
$xt2 = ($x3-$coin_BR[0])+$coin_BR[0]*$MyArc;
|
||||
$yt2 = ($y3-$coin_BR[1])+$coin_BR[1];
|
||||
|
||||
$path.= sprintf('%.2F %.2F l ', $x3, $y3-$coin_BR[1]);
|
||||
$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x3-$coin_BR[0], $y3);
|
||||
}
|
||||
else
|
||||
$path.= sprintf('%.2F %.2F l ', $x3, $y3);
|
||||
|
||||
if ($coin_BL)
|
||||
{
|
||||
$xt1 = ($x4+$coin_BL[0])-$coin_BL[0]*$MyArc;
|
||||
$yt1 = ($y4-$coin_BL[1])+$coin_BL[1];
|
||||
$xt2 = ($x4+$coin_BL[0])-$coin_BL[0];
|
||||
$yt2 = ($y4-$coin_BL[1])+$coin_BL[1]*$MyArc;
|
||||
|
||||
$path.= sprintf('%.2F %.2F l ', $x4+$coin_BL[0], $y4);
|
||||
$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x4, $y4-$coin_BL[1]);
|
||||
}
|
||||
else
|
||||
$path.= sprintf('%.2F %.2F l ', $x4, $y4);
|
||||
|
||||
if ($coin_TL)
|
||||
{
|
||||
$xt1 = ($x1+$coin_TL[0])-$coin_TL[0];
|
||||
$yt1 = ($y1+$coin_TL[1])-$coin_TL[1]*$MyArc;
|
||||
$xt2 = ($x1+$coin_TL[0])-$coin_TL[0]*$MyArc;
|
||||
$yt2 = ($y1+$coin_TL[1])-$coin_TL[1];
|
||||
|
||||
$path.= sprintf('%.2F %.2F l ', $x1, $y1+$coin_TL[1]);
|
||||
$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x1+$coin_TL[0], $y1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$path.= sprintf('%.2F %.2F m ', $x1, $y1);
|
||||
$path.= sprintf('%.2F %.2F l ', $x2, $y2);
|
||||
$path.= sprintf('%.2F %.2F l ', $x3, $y3);
|
||||
$path.= sprintf('%.2F %.2F l ', $x4, $y4);
|
||||
}
|
||||
|
||||
$path.= ' h W n';
|
||||
}
|
||||
$this->_out('q '.$path.' ');
|
||||
}
|
||||
|
||||
function clippingPathClose()
|
||||
{
|
||||
$this->_out(' Q');
|
||||
}
|
||||
|
||||
function drawCourbe($ext1_x, $ext1_y, $ext2_x, $ext2_y, $int1_x, $int1_y, $int2_x, $int2_y, $cen_x, $cen_y)
|
||||
{
|
||||
$MyArc = 4/3 * (sqrt(2) - 1);
|
||||
|
||||
$ext1_x = $ext1_x*$this->k; $ext1_y = ($this->h-$ext1_y)*$this->k;
|
||||
$ext2_x = $ext2_x*$this->k; $ext2_y = ($this->h-$ext2_y)*$this->k;
|
||||
$int1_x = $int1_x*$this->k; $int1_y = ($this->h-$int1_y)*$this->k;
|
||||
$int2_x = $int2_x*$this->k; $int2_y = ($this->h-$int2_y)*$this->k;
|
||||
$cen_x = $cen_x*$this->k; $cen_y = ($this->h-$cen_y) *$this->k;
|
||||
|
||||
$path = '';
|
||||
|
||||
if ($ext1_x-$cen_x!=0)
|
||||
{
|
||||
$xt1 = $cen_x+($ext1_x-$cen_x);
|
||||
$yt1 = $cen_y+($ext2_y-$cen_y)*$MyArc;
|
||||
$xt2 = $cen_x+($ext1_x-$cen_x)*$MyArc;
|
||||
$yt2 = $cen_y+($ext2_y-$cen_y);
|
||||
}
|
||||
else
|
||||
{
|
||||
$xt1 = $cen_x+($ext2_x-$cen_x)*$MyArc;
|
||||
$yt1 = $cen_y+($ext1_y-$cen_y);
|
||||
$xt2 = $cen_x+($ext2_x-$cen_x);
|
||||
$yt2 = $cen_y+($ext1_y-$cen_y)*$MyArc;
|
||||
|
||||
}
|
||||
|
||||
$path.= sprintf('%.2F %.2F m ', $ext1_x, $ext1_y);
|
||||
$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $ext2_x, $ext2_y);
|
||||
|
||||
if ($int1_x-$cen_x!=0)
|
||||
{
|
||||
$xt1 = $cen_x+($int1_x-$cen_x)*$MyArc;
|
||||
$yt1 = $cen_y+($int2_y-$cen_y);
|
||||
$xt2 = $cen_x+($int1_x-$cen_x);
|
||||
$yt2 = $cen_y+($int2_y-$cen_y)*$MyArc;
|
||||
}
|
||||
else
|
||||
{
|
||||
$xt1 = $cen_x+($int2_x-$cen_x);
|
||||
$yt1 = $cen_y+($int1_y-$cen_y)*$MyArc;
|
||||
$xt2 = $cen_x+($int2_x-$cen_x)*$MyArc;
|
||||
$yt2 = $cen_y+($int1_y-$cen_y);
|
||||
|
||||
}
|
||||
|
||||
$path.= sprintf('%.2F %.2F l ', $int2_x, $int2_y);
|
||||
$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $int1_x, $int1_y);
|
||||
|
||||
$this->_out($path . 'f');
|
||||
}
|
||||
|
||||
function drawCoin($ext1_x, $ext1_y, $ext2_x, $ext2_y, $int_x, $int_y, $cen_x, $cen_y)
|
||||
{
|
||||
$MyArc = 4/3 * (sqrt(2) - 1);
|
||||
|
||||
$ext1_x = $ext1_x*$this->k; $ext1_y = ($this->h-$ext1_y)*$this->k;
|
||||
$ext2_x = $ext2_x*$this->k; $ext2_y = ($this->h-$ext2_y)*$this->k;
|
||||
$int_x = $int_x*$this->k; $int_y = ($this->h-$int_y)*$this->k;
|
||||
$cen_x = $cen_x*$this->k; $cen_y = ($this->h-$cen_y) *$this->k;
|
||||
|
||||
$path = '';
|
||||
|
||||
if ($ext1_x-$cen_x!=0)
|
||||
{
|
||||
$xt1 = $cen_x+($ext1_x-$cen_x);
|
||||
$yt1 = $cen_y+($ext2_y-$cen_y)*$MyArc;
|
||||
$xt2 = $cen_x+($ext1_x-$cen_x)*$MyArc;
|
||||
$yt2 = $cen_y+($ext2_y-$cen_y);
|
||||
}
|
||||
else
|
||||
{
|
||||
$xt1 = $cen_x+($ext2_x-$cen_x)*$MyArc;
|
||||
$yt1 = $cen_y+($ext1_y-$cen_y);
|
||||
$xt2 = $cen_x+($ext2_x-$cen_x);
|
||||
$yt2 = $cen_y+($ext1_y-$cen_y)*$MyArc;
|
||||
|
||||
}
|
||||
|
||||
$path.= sprintf('%.2F %.2F m ', $ext1_x, $ext1_y);
|
||||
$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $ext2_x, $ext2_y);
|
||||
$path.= sprintf('%.2F %.2F l ', $int_x, $int_y);
|
||||
$path.= sprintf('%.2F %.2F l ', $ext1_x, $ext1_y);
|
||||
|
||||
$this->_out($path . 'f');
|
||||
}
|
||||
|
||||
function startTransform()
|
||||
{
|
||||
$this->_out('q');
|
||||
}
|
||||
|
||||
function stopTransform()
|
||||
{
|
||||
$this->_out('Q');
|
||||
}
|
||||
|
||||
function setTranslate($t_x, $t_y)
|
||||
{
|
||||
// matrice de transformation
|
||||
$tm[0]=1;
|
||||
$tm[1]=0;
|
||||
$tm[2]=0;
|
||||
$tm[3]=1;
|
||||
$tm[4]=$t_x*$this->k;
|
||||
$tm[5]=-$t_y*$this->k;
|
||||
|
||||
$this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F cm', $tm[0],$tm[1],$tm[2],$tm[3],$tm[4],$tm[5]));
|
||||
}
|
||||
|
||||
function setRotation($angle, $x='', $y='')
|
||||
{
|
||||
if($x === '') $x=$this->x;
|
||||
if($y === '') $y=$this->y;
|
||||
|
||||
$y=($this->h-$y)*$this->k;
|
||||
$x*=$this->k;
|
||||
|
||||
// matrice de transformation
|
||||
$tm[0]=cos(deg2rad($angle));
|
||||
$tm[1]=sin(deg2rad($angle));
|
||||
$tm[2]=-$tm[1];
|
||||
$tm[3]=$tm[0];
|
||||
$tm[4]=$x+$tm[1]*$y-$tm[0]*$x;
|
||||
$tm[5]=$y-$tm[0]*$y-$tm[1]*$x;
|
||||
|
||||
$this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F cm', $tm[0],$tm[1],$tm[2],$tm[3],$tm[4],$tm[5]));
|
||||
}
|
||||
|
||||
function SetX($x)
|
||||
{
|
||||
$this->x=$x;
|
||||
}
|
||||
|
||||
function SetY($y, $resetx=true)
|
||||
{
|
||||
if ($resetx)
|
||||
$this->x=$this->lMargin;
|
||||
|
||||
$this->y=$y;
|
||||
}
|
||||
|
||||
function SetXY($x, $y)
|
||||
{
|
||||
$this->x=$x;
|
||||
$this->y=$y;
|
||||
}
|
||||
|
||||
function getK() { return $this->k; }
|
||||
function getW() { return $this->w; }
|
||||
function getH() { return $this->h; }
|
||||
function getPage() { return $this->page; }
|
||||
function getlMargin() { return $this->lMargin; }
|
||||
function getrMargin() { return $this->rMargin; }
|
||||
function gettMargin() { return $this->tMargin; }
|
||||
function getbMargin() { return $this->bMargin; }
|
||||
function setbMargin($v) { $this->bMargin=$v; }
|
||||
function setcMargin($v) { $this->cMargin=$v; }
|
||||
function setPage($v) { $this->page=$v; }
|
||||
|
||||
function svgSetStyle($styles)
|
||||
{
|
||||
$style = '';
|
||||
|
||||
if ($styles['fill'])
|
||||
{
|
||||
$this->setMyFillColor($styles['fill']);
|
||||
$style.= 'F';
|
||||
}
|
||||
if ($styles['stroke'] && $styles['stroke-width'])
|
||||
{
|
||||
$this->SetMyDrawColor($styles['stroke']);
|
||||
$this->SetLineWidth($styles['stroke-width']);
|
||||
$style.= 'D';
|
||||
}
|
||||
if ($styles['fill-opacity'])
|
||||
{
|
||||
// $this->SetAlpha($styles['fill-opacity']);
|
||||
}
|
||||
|
||||
return $style;
|
||||
}
|
||||
|
||||
function svgRect($x, $y, $w, $h, $style)
|
||||
{
|
||||
$xa=$x; $xb=$x+$w; $xc=$x+$w; $xd=$x;
|
||||
$ya=$y; $yb=$y; $yc=$y+$h; $yd=$y+$h;
|
||||
|
||||
if($style=='F') $op='f';
|
||||
elseif($style=='FD' || $style=='DF') $op='B';
|
||||
else $op='S';
|
||||
$this->_Point($xa, $ya, true);
|
||||
$this->_Line($xb, $yb, true);
|
||||
$this->_Line($xc, $yc, true);
|
||||
$this->_Line($xd, $yd, true);
|
||||
$this->_Line($xa, $ya, true);
|
||||
$this->_out($op);
|
||||
}
|
||||
|
||||
function svgLine($x1, $y1, $x2, $y2)
|
||||
{
|
||||
$op='S';
|
||||
$this->_Point($x1, $y1, true);
|
||||
$this->_Line($x2, $y2, true);
|
||||
$this->_out($op);
|
||||
}
|
||||
|
||||
function svgEllipse($x0, $y0, $rx, $ry, $style)
|
||||
{
|
||||
if($style=='F') $op='f';
|
||||
elseif($style=='FD' || $style=='DF') $op='B';
|
||||
else $op='S';
|
||||
|
||||
$this->_Arc($x0, $y0, $rx, $ry, 0, 2*M_PI, true, true, true);
|
||||
$this->_out($op);
|
||||
}
|
||||
|
||||
function svgPolygone($actions, $style)
|
||||
{
|
||||
if($style=='F') $op='f';
|
||||
elseif($style=='FD' || $style=='DF') $op='B';
|
||||
else $op='S';
|
||||
|
||||
$first = array('', 0, 0);
|
||||
$last = array(0, 0, 0, 0);
|
||||
|
||||
foreach($actions as $action)
|
||||
{
|
||||
switch($action[0])
|
||||
{
|
||||
case 'M':
|
||||
case 'm':
|
||||
$first = $action;
|
||||
$x = $action[1]; $y = $action[2]; $xc = $x; $yc = $y;
|
||||
$this->_Point($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'Z':
|
||||
case 'z':
|
||||
$x = $first[1]; $y = $first[2]; $xc = $x; $yc = $y;
|
||||
$this->_Line($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'L':
|
||||
$x = $action[1]; $y = $action[2]; $xc = $x; $yc = $y;
|
||||
$this->_Line($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
$x = $last[0]+$action[1]; $y = $last[1]+$action[2]; $xc = $x; $yc = $y;
|
||||
$this->_Line($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
$x = $action[1]; $y = $last[1]; $xc = $x; $yc = $y;
|
||||
$this->_Line($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
$x = $last[0]+$action[1]; $y = $last[1]; $xc = $x; $yc = $y;
|
||||
$this->_Line($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
$x = $last[0]; $y = $action[1]; $xc = $x; $yc = $y;
|
||||
$this->_Line($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
$x = $last[0]; $y = $last[1]+$action[1]; $xc = $x; $yc = $y;
|
||||
$this->_Line($x, $y, true);
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
$rx = $action[1]; // rx
|
||||
$ry = $action[2]; // ry
|
||||
$a = $action[3]; // angle de deviation de l'axe X
|
||||
$l = $action[4]; // large-arc-flag
|
||||
$s = $action[5]; // sweep-flag
|
||||
$x1 = $last[0]; // begin x
|
||||
$y1 = $last[1]; // begin y
|
||||
$x2 = $action[6]; // final x
|
||||
$y2 = $action[7]; // final y
|
||||
|
||||
$this->_Arc2($x1, $y1, $x2, $y2, $rx, $ry, $a, $l, $s, true);
|
||||
|
||||
$x = $x2; $y = $y2; $xc = $x; $yc = $y;
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
$rx = $action[1]; // rx
|
||||
$ry = $action[2]; // ry
|
||||
$a = $action[3]; // angle de deviation de l'axe X
|
||||
$l = $action[4]; // large-arc-flag
|
||||
$s = $action[5]; // sweep-flag
|
||||
$x1 = $last[0]; // begin x
|
||||
$y1 = $last[1]; // begin y
|
||||
$x2 = $last[0]+$action[6]; // final x
|
||||
$y2 = $last[1]+$action[7]; // final y
|
||||
|
||||
$this->_Arc2($x1, $y1, $x2, $y2, $rx, $ry, $a, $l, $s, true);
|
||||
|
||||
$x = $x2; $y = $y2; $xc = $x; $yc = $y;
|
||||
break;
|
||||
|
||||
case 'C':
|
||||
$x1 = $action[1];
|
||||
$y1 = $action[2];
|
||||
$x2 = $action[3];
|
||||
$y2 = $action[4];
|
||||
$xf = $action[5];
|
||||
$yf = $action[6];
|
||||
$this->_Curve($x1, $y1, $x2, $y2,$xf, $yf, true);
|
||||
$x = $xf; $y = $yf; $xc = $x2; $yc = $y2;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
$x1 = $last[0]+$action[1];
|
||||
$y1 = $last[1]+$action[2];
|
||||
$x2 = $last[0]+$action[3];
|
||||
$y2 = $last[1]+$action[4];
|
||||
$xf = $last[0]+$action[5];
|
||||
$yf = $last[1]+$action[6];
|
||||
$this->_Curve($x1, $y1, $x2, $y2,$xf, $yf, true);
|
||||
$x = $xf; $y = $yf; $xc = $x2; $yc = $y2;
|
||||
break;
|
||||
|
||||
default:
|
||||
echo 'MyPDF Path : <b>'.$action[0].'</b> non reconnu...';
|
||||
exit;
|
||||
}
|
||||
$last = array($x, $y, $xc, $yc);
|
||||
}
|
||||
$this->_out($op);
|
||||
}
|
||||
|
||||
function _Point($x, $y, $trans = false)
|
||||
{
|
||||
if ($trans) $this->ptTransform($x, $y);
|
||||
|
||||
$this->_out(sprintf('%.2F %.2F m', $x, $y));
|
||||
}
|
||||
|
||||
function _Line($x, $y, $trans = false)
|
||||
{
|
||||
if ($trans) $this->ptTransform($x, $y);
|
||||
|
||||
$this->_out(sprintf('%.2F %.2F l', $x, $y));
|
||||
}
|
||||
|
||||
function _Curve($x1, $y1, $x2, $y2, $x3, $y3, $trans = false)
|
||||
{
|
||||
if ($trans)
|
||||
{
|
||||
$this->ptTransform($x1, $y1);
|
||||
$this->ptTransform($x2, $y2);
|
||||
$this->ptTransform($x3, $y3);
|
||||
}
|
||||
$this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c', $x1, $y1, $x2, $y2, $x3, $y3));
|
||||
}
|
||||
|
||||
function _Arc($xc, $yc, $rx, $ry, $a_debut, $a_fin, $sens = true, $draw_first = true, $trans=false)
|
||||
{
|
||||
$nSeg = 8;
|
||||
|
||||
if (!$sens) $a_debut+= M_PI*2.;
|
||||
|
||||
$totalAngle = $a_fin - $a_debut;
|
||||
$dt = $totalAngle/$nSeg;
|
||||
$dtm = $dt/3;
|
||||
|
||||
$x0 = $xc; $y0 = $yc;
|
||||
|
||||
$t1 = $a_debut;
|
||||
$a0 = $x0 + ($rx * cos($t1));
|
||||
$b0 = $y0 + ($ry * sin($t1));
|
||||
$c0 = -$rx * sin($t1);
|
||||
$d0 = $ry * cos($t1);
|
||||
if ($draw_first) $this->_Point($a0, $b0, $trans);
|
||||
for ($i = 1; $i <= $nSeg; $i++)
|
||||
{
|
||||
// Draw this bit of the total curve
|
||||
$t1 = ($i * $dt)+$a_debut;
|
||||
$a1 = $x0 + ($rx * cos($t1));
|
||||
$b1 = $y0 + ($ry * sin($t1));
|
||||
$c1 = -$rx * sin($t1);
|
||||
$d1 = $ry * cos($t1);
|
||||
$this->_Curve(
|
||||
$a0 + ($c0 * $dtm), $b0 + ($d0 * $dtm),
|
||||
$a1 - ($c1 * $dtm), $b1 - ($d1 * $dtm),
|
||||
$a1, $b1,
|
||||
$trans
|
||||
);
|
||||
$a0 = $a1;
|
||||
$b0 = $b1;
|
||||
$c0 = $c1;
|
||||
$d0 = $d1;
|
||||
}
|
||||
}
|
||||
|
||||
function _Arc2($x1, $y1, $x2, $y2, $rx, $ry, $a=0, $l=0, $s=0, $trans = false)
|
||||
{
|
||||
$v = array();
|
||||
$v['x1'] = $x1;
|
||||
$v['y1'] = $y1;
|
||||
$v['x2'] = $x2;
|
||||
$v['y2'] = $y2;
|
||||
$v['rx'] = $rx;
|
||||
$v['ry'] = $ry;
|
||||
$v['xr1'] = $v['x1']*cos($a) - $v['y1']*sin($a);
|
||||
$v['yr1'] = $v['x1']*sin($a) + $v['y1']*cos($a);
|
||||
$v['xr2'] = $v['x2']*cos($a) - $v['y2']*sin($a);
|
||||
$v['yr2'] = $v['x2']*sin($a) + $v['y2']*cos($a);
|
||||
$v['Xr1'] = $v['xr1']/$v['rx'];
|
||||
$v['Yr1'] = $v['yr1']/$v['ry'];
|
||||
$v['Xr2'] = $v['xr2']/$v['rx'];
|
||||
$v['Yr2'] = $v['yr2']/$v['ry'];
|
||||
$v['dXr'] = $v['Xr2'] - $v['Xr1'];
|
||||
$v['dYr'] = $v['Yr2'] - $v['Yr1'];
|
||||
$v['D'] = $v['dXr']*$v['dXr'] + $v['dYr']*$v['dYr'];
|
||||
|
||||
if ($v['D']==0 || $v['D']>4)
|
||||
{
|
||||
$this->_Line($x2, $y2, $trans);
|
||||
return false;
|
||||
}
|
||||
|
||||
$v['s1'] = array();
|
||||
$v['s2'] = array();
|
||||
$v['s1']['t'] = sqrt((4.-$v['D'])/$v['D']);
|
||||
$v['s1']['Xr'] = ($v['Xr1']+$v['Xr2'])/2. + $v['s1']['t']*($v['Yr2']-$v['Yr1'])/2.;
|
||||
$v['s1']['Yr'] = ($v['Yr1']+$v['Yr2'])/2. + $v['s1']['t']*($v['Xr1']-$v['Xr2'])/2.;
|
||||
$v['s1']['xr'] = $v['s1']['Xr']*$v['rx'];
|
||||
$v['s1']['yr'] = $v['s1']['Yr']*$v['ry'];
|
||||
$v['s1']['x'] = $v['s1']['xr']*cos($a)+$v['s1']['yr']*sin($a);
|
||||
$v['s1']['y'] =-$v['s1']['xr']*sin($a)+$v['s1']['yr']*cos($a);
|
||||
$v['s1']['a1'] = atan2($v['y1']-$v['s1']['y'], $v['x1']-$v['s1']['x']);
|
||||
$v['s1']['a2'] = atan2($v['y2']-$v['s1']['y'], $v['x2']-$v['s1']['x']);
|
||||
if ($v['s1']['a1']>$v['s1']['a2']) $v['s1']['a1']-=2*M_PI;
|
||||
|
||||
$v['s2']['t'] = -$v['s1']['t'];
|
||||
$v['s2']['Xr'] = ($v['Xr1']+$v['Xr2'])/2. + $v['s2']['t']*($v['Yr2']-$v['Yr1'])/2.;
|
||||
$v['s2']['Yr'] = ($v['Yr1']+$v['Yr2'])/2. + $v['s2']['t']*($v['Xr1']-$v['Xr2'])/2.;
|
||||
$v['s2']['xr'] = $v['s2']['Xr']*$v['rx'];
|
||||
$v['s2']['yr'] = $v['s2']['Yr']*$v['ry'];
|
||||
$v['s2']['x'] = $v['s2']['xr']*cos($a)+$v['s2']['yr']*sin($a);
|
||||
$v['s2']['y'] =-$v['s2']['xr']*sin($a)+$v['s2']['yr']*cos($a);
|
||||
$v['s2']['a1'] = atan2($v['y1']-$v['s2']['y'], $v['x1']-$v['s2']['x']);
|
||||
$v['s2']['a2'] = atan2($v['y2']-$v['s2']['y'], $v['x2']-$v['s2']['x']);
|
||||
if ($v['s2']['a1']>$v['s2']['a2']) $v['s2']['a1']-=2*M_PI;
|
||||
|
||||
if (!$l)
|
||||
{
|
||||
if ($s)
|
||||
{
|
||||
$xc = $v['s2']['x'];
|
||||
$yc = $v['s2']['y'];
|
||||
$a1 = $v['s2']['a1'];
|
||||
$a2 = $v['s2']['a2'];
|
||||
$this->_Arc($xc, $yc, $rx, $ry, $a1, $a2, true, false, $trans);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$xc = $v['s1']['x'];
|
||||
$yc = $v['s1']['y'];
|
||||
$a1 = $v['s1']['a1'];
|
||||
$a2 = $v['s1']['a2'];
|
||||
$this->_Arc($xc, $yc, $rx, $ry, $a1, $a2, false, false, $trans);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($s)
|
||||
{
|
||||
$xc = $v['s1']['x'];
|
||||
$yc = $v['s1']['y'];
|
||||
$a1 = $v['s1']['a1'];
|
||||
$a2 = $v['s1']['a2'];
|
||||
$this->_Arc($xc, $yc, $rx, $ry, $a1, $a2, true, false, $trans);
|
||||
}
|
||||
else
|
||||
{
|
||||
$xc = $v['s2']['x'];
|
||||
$yc = $v['s2']['y'];
|
||||
$a1 = $v['s2']['a1'];
|
||||
$a2 = $v['s2']['a2'];
|
||||
$this->_Arc($xc, $yc, $rx, $ry, $a1, $a2, false, false, $trans);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ptTransform(&$x, &$y, $trans=true)
|
||||
{
|
||||
$nb = count($this->transf);
|
||||
if ($nb) $m = $this->transf[$nb-1];
|
||||
else $m = array(1,0,0,1,0,0);
|
||||
|
||||
list($x,$y) = array(($x*$m[0]+$y*$m[2]+$m[4]),($x*$m[1]+$y*$m[3]+$m[5]));
|
||||
|
||||
if ($trans)
|
||||
{
|
||||
$x = $x*$this->k;
|
||||
$y = ($this->h-$y)*$this->k;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function doTransform($n = null)
|
||||
{
|
||||
$nb = count($this->transf);
|
||||
if ($nb) $m = $this->transf[$nb-1];
|
||||
else $m = array(1,0,0,1,0,0);
|
||||
|
||||
if (!$n) $n = array(1,0,0,1,0,0);
|
||||
|
||||
$n = array(
|
||||
$m[0]*$n[0]+$m[2]*$n[1],
|
||||
$m[1]*$n[0]+$m[3]*$n[1],
|
||||
$m[0]*$n[2]+$m[2]*$n[3],
|
||||
$m[1]*$n[2]+$m[3]*$n[3],
|
||||
$m[0]*$n[4]+$m[2]*$n[5]+$m[4],
|
||||
$m[1]*$n[4]+$m[3]*$n[5]+$m[5]
|
||||
);
|
||||
|
||||
// echo 'do-'.count($this->transf).' => '.print_r($n, true).'<br>';
|
||||
$this->transf[] = $n;
|
||||
}
|
||||
|
||||
function undoTransform()
|
||||
{
|
||||
array_pop($this->transf);
|
||||
// echo 'un-'.count($this->transf).'<br>';
|
||||
}
|
||||
|
||||
function setMyDrawColor($c)
|
||||
{
|
||||
$c = $this->setMyColor($c, true);
|
||||
if (!$c) return false;
|
||||
|
||||
$this->DrawColor=$c;
|
||||
if($this->page>0) $this->_out($this->DrawColor);
|
||||
}
|
||||
|
||||
function setMyFillColor($c)
|
||||
{
|
||||
$c = $this->setMyColor($c);
|
||||
if (!$c) return false;
|
||||
|
||||
$this->FillColor=$c;
|
||||
$this->ColorFlag=($this->FillColor!=$this->TextColor);
|
||||
if($this->page>0) $this->_out($this->FillColor);
|
||||
}
|
||||
|
||||
function setMyTextColor($c)
|
||||
{
|
||||
$c = $this->setMyColor($c);
|
||||
if (!$c) return false;
|
||||
|
||||
$this->TextColor=$c;
|
||||
$this->ColorFlag=($this->FillColor!=$this->TextColor);
|
||||
}
|
||||
|
||||
function setMyColor($c, $mode = false)
|
||||
{
|
||||
if (!is_array($c)) return sprintf('%.3F ',$c).($mode ? 'G' : 'g');
|
||||
elseif (count($c)==3) return sprintf('%.3F %.3F %.3F ',$c[0],$c[1],$c[2]).($mode ? 'RG' : 'rg');
|
||||
elseif (count($c)==4) return sprintf('%.3F %.3F %.3F %.3F ',$c[0],$c[1],$c[2],$c[3]).($mode ? 'K' : 'k');
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
106
library/Vendors/html2pdf/_read_me.txt
Normal file
106
library/Vendors/html2pdf/_read_me.txt
Normal file
@ -0,0 +1,106 @@
|
||||
*********************************************************
|
||||
** This program is distributed under the LGPL License, **
|
||||
** for more information see file _LGPL.txt or **
|
||||
** http://www.gnu.org/licenses/lgpl.html **
|
||||
** **
|
||||
** Copyright 2000-2010 by Laurent Minguet **
|
||||
*********************************************************
|
||||
*******************************
|
||||
* HTML2PDF v3.31 - 2010-05-21 *
|
||||
*******************************
|
||||
|
||||
How to use :
|
||||
------------
|
||||
- You need at least PHP 4.3.10
|
||||
|
||||
- Look at the examples provided to see how it works.
|
||||
|
||||
- forms work only with ADOBE READER 8 and 9.0
|
||||
|
||||
- It is very important to provide valid HTML 4.01 to the converter,
|
||||
but only what is in the <body>
|
||||
|
||||
- for borders: it is advised that they are like "solid 1mm #000000"
|
||||
|
||||
- for padding, they are applicable only on tags table, th, td, div, li
|
||||
|
||||
- You can chose the encoding. A specific font must be used. The encodings available are:
|
||||
cp1250, cp1251, cp1252, cp1253, cp1254, cp1255, cp1257, cp1258, cp874,
|
||||
ISO-8859-1, ISO-8859-2, ISO-8859-4, ISO-8859-5, ISO-8859-7, ISO-8859-9,
|
||||
ISO-8859-11, ISO-8859-15, ISO-8859-16, KOI8-R, KOI8-U
|
||||
To use it: $html2pdf->setEncoding('cp1250');
|
||||
|
||||
- A default font can be specified, if the requested font does not exist or if no font is specified:
|
||||
$html2pdf->setDefaultFont('Arial');
|
||||
|
||||
- The possibility to protect your PDF is present, CF Example 7.
|
||||
|
||||
- Some tests can be enabled (true) or disabled (false) :
|
||||
* setTestIsImage method: test that images must exist
|
||||
* setTestTdInOnePage method: test that the contents of TDs fit on one page
|
||||
* setTestIsDeprecated method: test that old properties of specific tags are not used anymore
|
||||
|
||||
- A DEBUG mode to know the resources used is present
|
||||
It is activated by adding the following command just after the contructor (see Example 0):
|
||||
$htmlpdf->setModeDebug();
|
||||
|
||||
- Some specific tags have been introduced:
|
||||
* <page></page> (CF Exemple 7) :
|
||||
determines the orientation, margins left, right, top and bottom, the background image
|
||||
and the background color of a page, its size and position, the footer.
|
||||
It is also possible to keep the header and footer of the previous pages,
|
||||
through the attribut pageset="old" (see Example 3)
|
||||
|
||||
* <page_header></page_header> (CF Example 3)
|
||||
|
||||
* <page_footer></page_footer> (CF Example 3)
|
||||
|
||||
* <nobreak></nobreak> :
|
||||
used to force the display of a section on the same page.
|
||||
If this section does not fit into the rest of the page, a page break is done before.
|
||||
|
||||
* <barcode></barcode> (CF Examples 0 et 9) :
|
||||
can insert barcodes in pdfs, CF Examples 0 and 9
|
||||
The possible types od codebar are: EAN13, UPCA, C39.
|
||||
|
||||
* <qrcode></qrcode> (CF Exemple 13) :
|
||||
permet d'inserer un codebar à 2 dimensions de type QRcode
|
||||
voici un exemple d'utilisation :
|
||||
<qrcode value="votre message ici" size="1mm" ec="M" style="color: black; background-color: white"></qrcode>
|
||||
seul le parametre "value" est obligatoire
|
||||
les différentes valeurs de type de correction sont L, M, Q, H
|
||||
(QR Code is registered trademark of DENSO WAVE INCORPORATED | http://www.denso-wave.com/qrcode/)
|
||||
ATTENTION : l'utilisation des QRCODE nécessite l'utilisation de PHP5
|
||||
|
||||
* <bookmark></bookmark> (CF Examples 7 et About) :
|
||||
can insert bookmark in pdfs, CF Example 7 and About.
|
||||
It is also possible to automatically create an index at the end of
|
||||
documentv CF Example About.
|
||||
|
||||
* css property "rotate" :
|
||||
values : 0, 90, 180, 270
|
||||
works only on div (cf example 8)
|
||||
|
||||
change log :
|
||||
-----------
|
||||
see on this page : http://html2pdf.fr/en/download
|
||||
|
||||
Help & Support :
|
||||
---------------
|
||||
For questions and bug reports, thank you to use only the support link below.
|
||||
I will answer to your questions only on it...
|
||||
|
||||
Informations :
|
||||
-------------
|
||||
Programmer : Spipu
|
||||
email : webmaster@html2pdf.fr
|
||||
web site : http://html2pdf.fr/
|
||||
wiki : http://html2pdf.fr/en/wiki
|
||||
support : http://html2pdf.fr/en/forum
|
||||
|
||||
Thanks :
|
||||
-------
|
||||
* Olivier Plathey: for have made FPDF
|
||||
* Nicola Asuni: for the changes he has agreed to make to TCPDF
|
||||
* yAronet: for hosting support forum
|
||||
* everyone who helped me to develop this library and to bring the texts
|
6105
library/Vendors/html2pdf/html2pdf.class.php
Normal file
6105
library/Vendors/html2pdf/html2pdf.class.php
Normal file
File diff suppressed because it is too large
Load Diff
21
library/Vendors/html2pdf/langues/ca.txt
Normal file
21
library/Vendors/html2pdf/langues/ca.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 L'etiqueta <b><[[OTHER]]></b> encara no existeix.<br><br>Si voleu afegir-la, heu de crear els mètodes <b>o_[[OTHER]]</b> (per l'obertura) i <b>c_[[OTHER]]</b> (pel tancament) seguint el model de les etiquetes existents.<br><br>A més, si creeu nous mètodes, envieu-ho a webmaster@html2pdf.fr per tal d'afegir-los a les següents versions d'HTML2PDF, i que tothom en pugui gaudir.
|
||||
err02 Frase de 1000 línies => massa llarga<br><b>Frase :</b> [[OTHER_0]]<br><b>Mida casella :</b> [[OTHER_1]]<br><b>Mida text :</b> [[OTHER_2]]<br>
|
||||
err03 Codi HTML no vàlid, una etiqueta té un tancament de més : <b><[[OTHER]]></b>
|
||||
err04 Codi HTML no vàlid, les etiquetes no estan tancades en l'ordre correcte.<br>Estat : <pre>[[OTHER]]</pre>
|
||||
err05 Codi HTML no vàlid, totes les etiquetes han de tenir el seu tancament.<br>Estat : <pre>[[OTHER]]</pre>
|
||||
err06 Impossible carregar la imatge <b>[[OTHER]]</b>
|
||||
err07 El contingut d'una etiqueta TD no quep en una sola pàgina
|
||||
err08 <b><[[OTHER]]></b> tag not in a <DRAW> tag
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 ERROR n°
|
||||
txt02 Fitxer :
|
||||
txt03 Línia :
|
||||
pdf01 Document generat el [[date_d]]/[[date_m]]/[[date_y]]
|
||||
pdf02 Document generat a les [[date_h]]:[[date_i]]
|
||||
pdf03 Document generat el [[date_d]]/[[date_m]]/[[date_y]] a les [[date_h]]:[[date_i]]
|
||||
pdf04 Pàgina [[current]]/[[nb]]
|
||||
pdf05 Els formularis requereixen l'ús de l'Adobe Reader 9
|
||||
vue01 CAPÇALERA
|
||||
vue02 PEU DE PÀGINA
|
||||
vue03 PÀGINA
|
||||
vue04 Visualització
|
21
library/Vendors/html2pdf/langues/cs.txt
Normal file
21
library/Vendors/html2pdf/langues/cs.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 Element <b><[[OTHER]]></b> neexistuje.<br><br>Pokud ho chcete přidat, musíte vytvořit metodu <b>o_[[OTHER]]</b> (pro otevření) a <b>c_[[OTHER]]</b> (pro zavření) k začlenění do modelu jako existující element.<br><br>Pokud vytvoříte metodu, nebojte se poslat email na webmaster@html2pdf.fr k zařazení do další verze HTML2PDF.
|
||||
err02 Sentence of 1000 lines => too long<br><b>Sentence :</b> [[OTHER_0]]<br><b>Width box :</b> [[OTHER_1]]<br><b>Length text :</b> [[OTHER_2]]<br>
|
||||
err03 Chyba v HTML, element je příliš mnohokrát zavřen: <b><[[OTHER]]></b>
|
||||
err04 Chyba v HTML, element není uzavřen ve správném pořadí.<br>Stav : <pre>[[OTHER]]</pre>
|
||||
err05 Chyba v HTML, všechny elementy musí být zavřeny.<br>Stav : <pre>[[OTHER]]</pre>
|
||||
err06 Menohu načíst orbázek <b>[[OTHER]]</b>
|
||||
err07 Obsah TD elementu se nevejde na jednu stránku
|
||||
err08 <b><[[OTHER]]></b> element není v <DRAW> elementu
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 CHYBA č.
|
||||
txt02 Soubor :
|
||||
txt03 Řádek :
|
||||
pdf01 Dokument vytvořen dne [[date_d]].[[date_m]].[[date_y]]
|
||||
pdf02 Dokument vytvořen v [[date_h]]:[[date_i]]
|
||||
pdf03 Dokument vytvořen dne [[date_d]].[[date_m]].[[date_y]] v [[date_h]]:[[date_i]]
|
||||
pdf04 Stránka [[current]]/[[nb]]
|
||||
pdf05 Formuláře vyžadují Adobe Reader 9
|
||||
vue01 HLAVIČKA
|
||||
vue02 PATIČKA
|
||||
vue03 STRÁNKA
|
||||
vue04 POHLED
|
21
library/Vendors/html2pdf/langues/da.txt
Normal file
21
library/Vendors/html2pdf/langues/da.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 Tag <b><[[OTHER]]></b> endnu ikke eksisterer.<br><br>Hvis du ønsker at tilføje det, skal du oprette de metoder <b>o_[[OTHER]]</b> (for åbning) og <b>c_[[OTHER]]</b> (for lukning) ved at følge den model af eksisterende tags.<br><br>Hvis du opretter disse metoder, så tøv ikke med at send mig en e-mail til webmaster@html2pdf.fr til indsat dem i den næste version af HTML2PDF.
|
||||
err02 Sætning af 1000 lines => er for lang<br><b>sætning :</b> [[OTHER_0]]<br><b>Bredde boksen :</b> [[OTHER_1]]<br><b>Længde tekst :</b> [[OTHER_2]]<br>
|
||||
err03 HTML-kode er ugyldig, et tag er lukket for mange gange: <b><[[OTHER]]></b>
|
||||
err04 HTML-kode er ugyldig, tags er ikke afsluttet på en ordentlig måde.<br>Status : <pre>[[OTHER]]</pre>
|
||||
err05 HTML-kode er ugyldig, alle tags skal lukkes. <br>Status : <pre>[[OTHER]]</pre>
|
||||
err06 Umuligt at indlæse billedet <b>[[OTHER]]</b>
|
||||
err07 Indholdet af en TD tag ikke passer på én side
|
||||
err08 <b><[[OTHER]]></b> tag not in a <DRAW> tag
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 FEJL n°
|
||||
txt02 File :
|
||||
txt03 Linje :
|
||||
pdf01 Siden oprettet d. [[date_y]]-[[date_m]]-[[date_d]]
|
||||
pdf02 Siden oprettet d. [[date_h]]:[[date_i]]
|
||||
pdf03 Siden oprettet d. [[date_y]]-[[date_m]]-[[date_d]] at [[date_h]]:[[date_i]]
|
||||
pdf04 Side [[current]]/[[nb]]
|
||||
pdf05 De formularer kræver brug af Adobe Reader 9
|
||||
vue01 HEADER
|
||||
vue02 FOOTER
|
||||
vue03 PAGE
|
||||
vue04 View
|
21
library/Vendors/html2pdf/langues/de.txt
Normal file
21
library/Vendors/html2pdf/langues/de.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 Das Tag <b><[[OTHER]]></b> existiert noch nicht.<br><br>Wenn Sie es hinzufügen möchten, sollen Sie die Methoden<b>o_[[OTHER]]</b> (zu öffnen) und <b>c_[[OTHER]]</b> (zu schließen) nach dem Modell den existierenden Tags.<br><br>Wenn Sie diese Methoden außerdem aufbauen, bitte teilen Sie sie duch eine E-Mail an meine Adresse : webmaster@html2pdf.fr, so daß sie künftig in die nächste Version von HTML2PDF erscheinen.
|
||||
err02 1000-Linien Satz => zu lang<br><b>Satz :</b> [[OTHER_0]]<br><b>Breite des Eingabefelds :</b> [[OTHER_1]]<br><b>Länge des Texts :</b> [[OTHER_2]]<br>
|
||||
err03 Falsches HTML Code, überzähliges geschloßene Tag : <b><[[OTHER]]></b>
|
||||
err04 Falsches HTML Code, die Tags sind nicht in richtiger Ordnung geschloßen.<br>Status : <pre>[[OTHER]]</pre>
|
||||
err05 Falsches HTML Code, alle Tags sollen geschloßen sein.<br>Status : <pre>[[OTHER]]</pre>
|
||||
err06 Ladung des Bilds unmöglich <b>[[OTHER]]</b>
|
||||
err07 Er Inhalt eines TD-Tag passt nicht nur auf einer Seite
|
||||
err08 <b><[[OTHER]]></b> tag not in a <DRAW> tag
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 Fehler n°
|
||||
txt02 Datei :
|
||||
txt03 Linie :
|
||||
pdf01 Datei aufgebaut am [[date_d]]/[[date_m]]/[[date_y]]
|
||||
pdf02 Datei aufgebaut um [[date_h]]:[[date_m]]
|
||||
pdf03 Datei aufgebaut am [[date_d]]/[[date_m]]/[[date_y]] um [[date_h]]:[[date_i]]
|
||||
pdf04 Seite [[current]]/[[nb]]
|
||||
pdf05 Die Formulare benötigen Sie den Adobe Reader 9
|
||||
vue01 Seite-Header
|
||||
vue02 Fußzeile
|
||||
vue03 Seite
|
||||
vue04 Visualisierung
|
21
library/Vendors/html2pdf/langues/en.txt
Normal file
21
library/Vendors/html2pdf/langues/en.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 The tag <b><[[OTHER]]></b> does not yet exist.<br><br>If you want to add it, you must create the methods <b>o_[[OTHER]]</b> (for opening) and <b>c_[[OTHER]]</b> (for closure) by following the model of existing tags.<br><br>If you create these methods, do not hesitate to send me an email to webmaster@html2pdf.fr to included them in the next version of HTML2PDF.
|
||||
err02 Sentence of 1000 lines => too long<br><b>Sentence :</b> [[OTHER_0]]<br><b>Width box :</b> [[OTHER_1]]<br><b>Length text :</b> [[OTHER_2]]<br>
|
||||
err03 HTML code invalid, a tag is closed too many times: <b><[[OTHER]]></b>
|
||||
err04 HTML code invalid, the tags are not closed in an orderly fashion.<br>Status : <pre>[[OTHER]]</pre>
|
||||
err05 HTML code invalid, all tags must be closed.<br>Status : <pre>[[OTHER]]</pre>
|
||||
err06 Impossible to load the image <b>[[OTHER]]</b>
|
||||
err07 The content of a TD tag does not fit on only one page
|
||||
err08 <b><[[OTHER]]></b> tag not in a <DRAW> tag
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 ERROR n°
|
||||
txt02 File :
|
||||
txt03 Line :
|
||||
pdf01 Document generated on [[date_y]]-[[date_m]]-[[date_d]]
|
||||
pdf02 Document generated at [[date_h]]:[[date_i]]
|
||||
pdf03 Document generated on [[date_y]]-[[date_m]]-[[date_d]] at [[date_h]]:[[date_i]]
|
||||
pdf04 Page [[current]]/[[nb]]
|
||||
pdf05 The forms require the use of Adobe Reader 9
|
||||
vue01 HEADER
|
||||
vue02 FOOTER
|
||||
vue03 PAGE
|
||||
vue04 View
|
21
library/Vendors/html2pdf/langues/es.txt
Normal file
21
library/Vendors/html2pdf/langues/es.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 La etiqueta <b><[[OTHER]]></b> todavía no existe.<br><br>Si quiere añadirla, debe crear los métodos <b>o_[[OTHER]]</b> (para la apertura) y <b>c_[[OTHER]]</b> (para el cierre) siguiendo el modelo de las etiquetas existentes.<br><br>Si crea nuevos métodos, envíelos a webmaster@html2pdf.fr para añadirlos a las siguientes versiones de HTML2PDF, y que todo el mundo se pueda beneficiar.
|
||||
err02 Frase de 1000 líneas => demasiado larga<br><b>Frase :</b> [[OTHER_0]]<br><b>Tamaño casilla :</b> [[OTHER_1]]<br><b>Tamaño texto :</b> [[OTHER_2]]<br>
|
||||
err03 Código HTML no válido, una etiqueta tiene un cierre de más : <b><[[OTHER]]></b>
|
||||
err04 Código HTML no válido, las etiquetas no estan cerradas en el orden correcto.<br>Estado : <pre>[[OTHER]]</pre>
|
||||
err05 Código HTML no válido, todas las etiquetas deben tener su cierre.<br>Estado : <pre>[[OTHER]]</pre>
|
||||
err06 Imposible cargar la imagen <b>[[OTHER]]</b>
|
||||
err07 El contenido de una etiqueta TD no encaja en una sola página
|
||||
err08 <b><[[OTHER]]></b> tag not in a <DRAW> tag
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 ERROR n°
|
||||
txt02 Fichero :
|
||||
txt03 Línea :
|
||||
pdf01 Documento generado el [[date_d]]/[[date_m]]/[[date_y]]
|
||||
pdf02 Documento generado a las [[date_h]]:[[date_i]]
|
||||
pdf03 Documento generado el [[date_d]]/[[date_m]]/[[date_y]] a las [[date_h]]:[[date_i]]
|
||||
pdf04 Página [[current]]/[[nb]]
|
||||
pdf05 Los formularios requieren el uso de Adobe Reader 9
|
||||
vue01 ENCABEZADO
|
||||
vue02 PIE DE PÁGINA
|
||||
vue03 PÁGINA
|
||||
vue04 Visualización
|
21
library/Vendors/html2pdf/langues/fr.txt
Normal file
21
library/Vendors/html2pdf/langues/fr.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 La balise <b><[[OTHER]]></b> n'existe pas encore.<br><br>Si vous voulez la rajouter, vous devez créer les méthodes <b>o_[[OTHER]]</b> (pour l'ouverture) et <b>c_[[OTHER]]</b> (pour la fermeture) en suivant le modèle des balises existantes.<br><br>De plus, si vous créez ces méthodes, n'hésitez pas à en faire profiter tout le monde en m'écrivant sur webmaster@html2pdf.fr afin qu'elles se retrouvent dans la prochaine version d'HTML2PDF.
|
||||
err02 Phrase de 1000 lignes => trop long<br><b>Phrase :</b> [[OTHER_0]]<br><b>Largeur case :</b> [[OTHER_1]]<br><b>Longueur text :</b> [[OTHER_2]]<br>
|
||||
err03 Code HTML non valide, une balise est fermée en trop : <b><[[OTHER]]></b>
|
||||
err04 Code HTML non valide, les balises ne sont pas fermées dans le bon ordre.<br>Etat : <pre>[[OTHER]]</pre>
|
||||
err05 Code HTML non valide, toutes les balises doivent être fermées.<br>Etat : <pre>[[OTHER]]</pre>
|
||||
err06 Impossible de charger l'image <b>[[OTHER]]</b>
|
||||
err07 le contenu d'une balise TD ne rentre pas sur une seule page
|
||||
err08 Balise <b><[[OTHER]]></b> non contenu dans une balise <DRAW>
|
||||
err09 L'utilisation de la balise <b><[[OTHER_0]]></b> a changé, vous ne pouvez plus utiliser [[OTHER_1]]. Lisez le WIKI
|
||||
txt01 ERREUR n°
|
||||
txt02 Fichier :
|
||||
txt03 Ligne :
|
||||
pdf01 Document généré le [[date_d]]/[[date_m]]/[[date_y]]
|
||||
pdf02 Document généré à [[date_h]]:[[date_i]]
|
||||
pdf03 Document généré le [[date_d]]/[[date_m]]/[[date_y]] à [[date_h]]:[[date_i]]
|
||||
pdf04 Page [[current]]/[[nb]]
|
||||
pdf05 Les formulaires nécessitent l'utilisation de Adobe Reader 9
|
||||
vue01 HEADER
|
||||
vue02 FOOTER
|
||||
vue03 PAGE
|
||||
vue04 Restitution
|
21
library/Vendors/html2pdf/langues/it.txt
Normal file
21
library/Vendors/html2pdf/langues/it.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 Il tag <b><[[OTHER]]></b> non esiste ancora.<br><br>Se si desidera aggiungere, è necessario creare metodi <b>o_[[OTHER]]</b> (di apertura) e <b>C_[[OTHER]]</b> (per la chiusura) secondo il modello esistente di tag.<br><br>Inoltre, se si creare questi metodi, non esitate a portare il mondo intero ha scritto su webmaster@html2pdf.fr in modo che alla fine nella prossima versione di HTML2PDF.
|
||||
err02 Citazione di 1000 linee => troppo lungo<br><b>frase :</b> [[OTHER_0]]<br><b>casella Larghezza :</b> [[OTHER_1]]<br><b>Lunghezza testo :</b> [[OTHER_2]]<br>
|
||||
err03 HTML non valido, un tag è chiusa troppo <b><[[OTHER]]></ b>
|
||||
err04 HTML non validi, i tag non sono chiusi nel corretto ordine.<br>Stato :<pre>[[OTHER]]</pre>
|
||||
err05 HTML non valido, tutte le tag deve essere chiuso.<br>Stato :<pre>[[OTHER]]</pre>
|
||||
err06 Impossibile caricare l'immagine <b>[[OTHER]]</b>
|
||||
err07 il contenuto di un tag TD non rientra in una sola pagina
|
||||
err08 <b><[[OTHER]]></b> tag not in a <DRAW> tag
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 ERRORE n°
|
||||
txt02 File :
|
||||
txt03 Linea :
|
||||
pdf01 Documento generato il [[date_d]]/[[date_m]]/[[date_y]]
|
||||
pdf02 Documento generato [[date_h]]:[[date_i]]
|
||||
pdf03 Documento generato il [[date_d]]/[[date_m]]/[[date_y]] nel [[date_h]]:[[date_i]]
|
||||
pdf04 Pagina [[current]]/[[nb]]
|
||||
pdf05 I moduli richiedono l'uso di Adobe Reader 9
|
||||
vue01 HEADER
|
||||
vue02 FOOTER
|
||||
vue03 PAGINA
|
||||
vue04 Visualization
|
21
library/Vendors/html2pdf/langues/nl.txt
Normal file
21
library/Vendors/html2pdf/langues/nl.txt
Normal file
@ -0,0 +1,21 @@
|
||||
err01 De tag <b><[[OTHER]]></b> bestaat nog niet.<br><br>Om deze toe te voegen, gebruik de methods <b>o_[[OTHER]]</b> (om te openen) en <b>c_[[OTHER]]</b> (om te sluiten) volgens het model van de bestaande tags.<br><br>Als u deze methods maakt, stuur deze dan a.u.b. via e-mail naar webmaster@html2pdf.fr voor opname in de volgende versie van HTML2PDF.
|
||||
err02 Zin van 1000 regels => te lang<br><b>Zin :</b> [[OTHER_0]]<br><b>Kaderbreedte :</b> [[OTHER_1]]<br><b>Tekstlengte :</b> [[OTHER_2]]<br>
|
||||
err03 Ongeldige HTML code, overvloedig afgesloten tag : <b><[[OTHER]]></b>
|
||||
err04 Ongeldige HTML code, de tags zijn niet correct afgesloten.<br>Status : <pre>[[OTHER]]</pre>
|
||||
err05 Ongeldige HTML code, alle tags dienen te zijn gesloten.<br>Status : <pre>[[OTHER]]</pre>
|
||||
err06 Kan afbeelding niet laden: <b>[[OTHER]]</b>
|
||||
err07 De inhoud van de cel (<TD>) past niet op een pagina
|
||||
err08 <b><[[OTHER]]></b> tag not in a <DRAW> tag
|
||||
err09 The using of the <b><[[OTHER_0]]></b>> tag has changed, you can not use [[OTHER_1]] anymore. Read the WIKI
|
||||
txt01 Fout nr
|
||||
txt02 Bestand :
|
||||
txt03 Regel :
|
||||
pdf01 Document gemaakt op [[date_d]]-[[date_m]]-[[date_y]]
|
||||
pdf02 Document gemaakt om [[date_h]]:[[date_i]]
|
||||
pdf03 Document gemaakt op [[date_d]]-[[date_m]]-[[date_y]] om [[date_h]]:[[date_i]]
|
||||
pdf04 Pagina [[current]] van [[nb]]
|
||||
pdf05 De formulieren vereisen het gebruik van Adobe Reader 9
|
||||
vue01 Paginakop
|
||||
vue02 Paginavoet
|
||||
vue03 Pagina
|
||||
vue04 Bekijken
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user