mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Merge branch 'signatur'
This commit is contained in:
@@ -30,6 +30,10 @@
|
||||
- **[CORE]** Update campus.tbl_templates (contentmittitel and contentohnetitel) with system/templates/contentmittitel_xslt_xhtml.xslt andsystem/templates/contentohnetitel_xslt_xhtml.xslt
|
||||
- **[CORE]** Neue Style Anweisungen (div.header_logo, td.headerbar, div.cis_logo) müssen in Custom Stylesheet hinzugefügt werden
|
||||
|
||||
### Removed
|
||||
**[CORE]** Removed Support for XSLFO2PDF Documents - use unoconv instead
|
||||
**[CORE]** Removed Support for FOP Documents - use unoconv instead
|
||||
|
||||
### Deprecated
|
||||
- **[CORE]** Die folgenden Datenbank Tabellen und Spalten wurden als DEPRECATED markiert und werden mit der nächsten Version entfernt:
|
||||
public.tbl_aufnahmeschluessel, public.tbl_aufnahmetermin, public.tbl_aufnahmetermintyp, public.tbl_preinteressent,
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
|
||||
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
|
||||
*/
|
||||
/**
|
||||
* anwesenheitsliste.pdf.php
|
||||
*
|
||||
* Erstellt eine Anwesenheitsliste im PDF-Format
|
||||
*
|
||||
*/
|
||||
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// Datenbankanbindung
|
||||
// ------------------------------------------------------------------------------------------
|
||||
require_once('../../../include/basis_db.class.php');
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Herstellen der Datenbankverbindung');
|
||||
|
||||
// Pfad zu fpdf
|
||||
define('FPDF_FONTPATH','../../../include/pdf/font/');
|
||||
// library einbinden
|
||||
require_once('../../../include/pdf/fpdf.php');
|
||||
|
||||
require_once('../../../include/person.class.php');
|
||||
require_once('../../../include/studiengang.class.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/lehrveranstaltung.class.php');
|
||||
require_once('../../../include/pdf.inc.php');
|
||||
|
||||
//Uebergabeparameter abpruefen
|
||||
if(isset($_GET['stg'])) //Studiengang
|
||||
{
|
||||
if(is_numeric($_GET['stg']))
|
||||
$stg=$_GET['stg'];
|
||||
else
|
||||
die('Fehler bei der Parameteruebergabe');
|
||||
}
|
||||
else
|
||||
$stg='';
|
||||
if(isset($_GET['sem'])) //Semester
|
||||
{
|
||||
if(is_numeric($_GET['sem']))
|
||||
$sem=$_GET['sem'];
|
||||
else
|
||||
die('Fehler bei der Parameteruebergabe');
|
||||
}
|
||||
else
|
||||
$sem='';
|
||||
|
||||
if(isset($_GET['verband'])) //Verband
|
||||
$verband=$_GET['verband'];
|
||||
else
|
||||
$verband='';
|
||||
if(isset($_GET['gruppe'])) //Gruppe
|
||||
$gruppe=$_GET['gruppe'];
|
||||
else
|
||||
$gruppe='';
|
||||
if(isset($_GET['gruppe_kurzbz'])) //Einheit
|
||||
$gruppe_kurzbz = $_GET['gruppe_kurzbz'];
|
||||
else
|
||||
$gruppe_kurzbz='';
|
||||
|
||||
if(isset($_GET['lvid']) && is_numeric($_GET['lvid']))
|
||||
$lvid = $_GET['lvid'];
|
||||
else
|
||||
die('Fehler bei der Parameteruebergabe');
|
||||
|
||||
if(isset($_GET['stsem']))
|
||||
$stsem = $_GET['stsem'];
|
||||
else
|
||||
die('Studiensemester wurde nicht uebergeben');
|
||||
|
||||
$lehreinheit_id = (isset($_GET['lehreinheit_id'])?$_GET['lehreinheit_id']:'');
|
||||
/**
|
||||
* liefert den groesseren der beiden werte
|
||||
*
|
||||
*/
|
||||
function getmax($val1,$val2)
|
||||
{
|
||||
return ($val1>$val2)?$val1:$val2;
|
||||
|
||||
}
|
||||
if (file_exists('../../../addons/sfu-milano/include/'.EXT_FKT_PATH.'/anwesenheitsliste_bilder.inc.php'))
|
||||
require_once('../../../addons/sfu-milano/include/'.EXT_FKT_PATH.'/anwesenheitsliste_bilder.inc.php');
|
||||
else
|
||||
require_once('../../../include/'.EXT_FKT_PATH.'/anwesenheitsliste_bilder.inc.php');
|
||||
|
||||
?>
|
||||
+128
-314
@@ -16,19 +16,18 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/* Erstellt einen Lehrauftrag im PDF Format
|
||||
*
|
||||
* Erstellt ein XML File Transformiert dieses mit
|
||||
* Hilfe der XSL-FO Vorlage aus der DB und generiert
|
||||
* daraus ein PDF (xslfo2pdf)
|
||||
* daraus ein PDF
|
||||
*/
|
||||
require_once('../../config/cis.config.inc.php');
|
||||
require_once('../../include/functions.inc.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/xslfo2pdf/xslfo2pdf.php');
|
||||
require_once('../../include/akte.class.php');
|
||||
require_once('../../include/konto.class.php');
|
||||
require_once('../../include/benutzer.class.php');
|
||||
@@ -37,6 +36,7 @@ require_once('../../include/addon.class.php');
|
||||
require_once('../../include/studiengang.class.php');
|
||||
require_once('../../include/student.class.php');
|
||||
require_once('../../include/prestudent.class.php');
|
||||
require_once('../../include/dokument_export.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Oeffnen der Datenbankverbindung');
|
||||
@@ -48,112 +48,113 @@ $rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
//Parameter holen
|
||||
if(isset($_GET['xml']))
|
||||
$xml=$_GET['xml'];
|
||||
if (isset($_GET['xml']))
|
||||
$xml = $_GET['xml'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
if(isset($_GET['xsl']))
|
||||
$xsl=$_GET['xsl'];
|
||||
if (isset($_GET['xsl']))
|
||||
$xsl = $_GET['xsl'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz=0;
|
||||
$xsl_stg_kz = 0;
|
||||
|
||||
$sign = false;
|
||||
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
if (isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz = $_GET['xsl_stg_kz'];
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
if (isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz = $_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen
|
||||
// in dem der 1. Studierende in der Liste ist
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
if (isset($_GET['uid']) && $_GET['uid'] != '')
|
||||
{
|
||||
if(strstr($_GET['uid'],';'))
|
||||
if (strstr($_GET['uid'],';'))
|
||||
$uids = explode(';',$_GET['uid']);
|
||||
else
|
||||
$uids[1] = $_GET['uid'];
|
||||
|
||||
$student_obj = new student();
|
||||
if($student_obj->load($uids[1]))
|
||||
if ($student_obj->load($uids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$student_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
elseif(isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='')
|
||||
elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id'] != '')
|
||||
{
|
||||
if(strstr($_GET['prestudent_id'],';'))
|
||||
if (strstr($_GET['prestudent_id'],';'))
|
||||
$prestudent_ids = explode(';',$_GET['prestudent_id']);
|
||||
else
|
||||
$prestudent_ids[1] = $_GET['prestudent_id'];
|
||||
|
||||
$prestudent_obj = new prestudent();
|
||||
if($prestudent_obj->load($prestudent_ids[1]))
|
||||
if ($prestudent_obj->load($prestudent_ids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$prestudent_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $prestudent_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
if (isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$version = $_GET['version'];
|
||||
else
|
||||
$version ='';
|
||||
$version = null;
|
||||
|
||||
if(isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz'];
|
||||
if (isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz'];
|
||||
else
|
||||
$xsl_oe_kurzbz='';
|
||||
$xsl_oe_kurzbz = '';
|
||||
|
||||
//Parameter setzen
|
||||
$params='?xmlformat=xml';
|
||||
//if(isset($_GET['uid']))
|
||||
// $params.='&uid='.$_GET['uid'];
|
||||
$params = 'xmlformat=xml';
|
||||
|
||||
//Admins duerfen Dokumente anderer Personen drucken
|
||||
if($rechte->isBerechtigt('admin'))
|
||||
if ($rechte->isBerechtigt('admin'))
|
||||
$user = $_GET['uid'];
|
||||
|
||||
$params.='&uid='.$user;
|
||||
if(isset($_GET['person_id']))
|
||||
$params.='&person_id='.$_GET['person_id'];
|
||||
if(isset($_GET['buchungsnummern']))
|
||||
$params.='&buchungsnummern='.$_GET['buchungsnummern'];
|
||||
if(isset($_GET['stg_kz']))
|
||||
$params.='&stg_kz='.$_GET['stg_kz'];
|
||||
if(isset($_GET['ss']))
|
||||
$params.='&ss='.$_GET['ss'];
|
||||
if(isset($_GET['abschlusspruefung_id']))
|
||||
$params.='&abschlusspruefung_id='.$_GET['abschlusspruefung_id'];
|
||||
if(isset($_GET['typ']))
|
||||
$params.='&typ='.$_GET['typ'];
|
||||
if(isset($_GET['all']))
|
||||
$params.='&all=1';
|
||||
$params .= '&uid='.$user;
|
||||
if (isset($_GET['person_id']))
|
||||
$params .= '&person_id='.$_GET['person_id'];
|
||||
if (isset($_GET['buchungsnummern']))
|
||||
$params .= '&buchungsnummern='.$_GET['buchungsnummern'];
|
||||
if (isset($_GET['stg_kz']))
|
||||
$params .= '&stg_kz='.$_GET['stg_kz'];
|
||||
if (isset($_GET['ss']))
|
||||
$params .= '&ss='.$_GET['ss'];
|
||||
if (isset($_GET['abschlusspruefung_id']))
|
||||
$params .= '&abschlusspruefung_id='.$_GET['abschlusspruefung_id'];
|
||||
if (isset($_GET['typ']))
|
||||
$params .= '&typ='.$_GET['typ'];
|
||||
if (isset($_GET['all']))
|
||||
$params .= '&all=1';
|
||||
|
||||
//OE fuer Output ermitteln
|
||||
|
||||
if ($xsl_oe_kurzbz!='')
|
||||
if ($xsl_oe_kurzbz != '')
|
||||
{
|
||||
$oe_kurzbz = $xsl_oe_kurzbz;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$oe = new studiengang();
|
||||
$oe->load($xsl_stg_kz);
|
||||
$oe_kurzbz = $oe->oe_kurzbz;
|
||||
}
|
||||
|
||||
//Darf der User Dokumente in einem NICHT-PDF-Format exportieren?
|
||||
if (isset($_GET['output']) && $_GET['output']!='pdf')
|
||||
if (isset($_GET['output']) && $_GET['output'] != 'pdf')
|
||||
{
|
||||
if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz))
|
||||
if (!$rechte->isBerechtigt('system/change_outputformat', $oe_kurzbz))
|
||||
{
|
||||
$output = 'pdf';
|
||||
}
|
||||
@@ -167,283 +168,96 @@ else
|
||||
$konto = new konto();
|
||||
if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin'))
|
||||
{
|
||||
$buchungstypen = array();
|
||||
if(defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
{
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
}
|
||||
|
||||
if(isset($_GET['ss']))
|
||||
$stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen, $_GET['ss']);
|
||||
|
||||
if((($xsl=='Inskription') || ($xsl == 'Studienblatt')) && ($_GET["ss"] != $stsem_zahlung))
|
||||
$buchungstypen = array();
|
||||
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
{
|
||||
die('Der Studienbeitrag wurde noch nicht bezahlt');
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
}
|
||||
if(isset($_GET['buchungsnummern']))
|
||||
|
||||
if (isset($_GET['ss']))
|
||||
$stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen, $_GET['ss']);
|
||||
|
||||
if ((($xsl=='Inskription') || ($xsl == 'Studienblatt')) && ($_GET["ss"] != $stsem_zahlung))
|
||||
{
|
||||
//Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren
|
||||
$buchungsnr = explode(';',$_GET['buchungsnummern']);
|
||||
$user_obj = new benutzer();
|
||||
$user_obj->load($user);
|
||||
foreach($buchungsnr as $bnr)
|
||||
{
|
||||
if($bnr!='')
|
||||
die('Der Studienbeitrag wurde noch nicht bezahlt');
|
||||
}
|
||||
if (isset($_GET['buchungsnummern']))
|
||||
{
|
||||
//Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren
|
||||
$buchungsnr = explode(';',$_GET['buchungsnummern']);
|
||||
$user_obj = new benutzer();
|
||||
$user_obj->load($user);
|
||||
foreach($buchungsnr as $bnr)
|
||||
{
|
||||
$konto->load($bnr);
|
||||
if($konto->person_id!=$user_obj->person_id)
|
||||
die('Sie haben keine Berechtigung fuer diese Buchung');
|
||||
if($konto->getDifferenz($bnr)>0)
|
||||
die('Diese Zahlung wurde noch nicht beglichen');
|
||||
if ($bnr != '')
|
||||
{
|
||||
$konto->load($bnr);
|
||||
if ($konto->person_id!=$user_obj->person_id)
|
||||
die('Sie haben keine Berechtigung fuer diese Buchung');
|
||||
if ($konto->getDifferenz($bnr)>0)
|
||||
die('Diese Zahlung wurde noch nicht beglichen');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$xml_url=XML_ROOT.$xml.$params;
|
||||
//echo $xml_url;
|
||||
// Load the XML source
|
||||
$xml_doc = new DOMDocument;
|
||||
$xml_url = XML_ROOT.$xml.$params;
|
||||
|
||||
if(!$xml_doc->load($xml_url))
|
||||
die('unable to load xml');
|
||||
//echo ':'.$xml_doc->saveXML().':';
|
||||
|
||||
//XSL aus der DB holen
|
||||
$vorlage = new vorlage();
|
||||
if($xsl_oe_kurzbz!='')
|
||||
if ($xsl_oe_kurzbz == '')
|
||||
{
|
||||
$vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$stg_obj = new studiengang();
|
||||
if (!$stg_obj->load($xsl_stg_kz))
|
||||
die($stg_obj->errormsg);
|
||||
$xsl_oe_kurzbz = $stg_obj->oe_kurzbz;
|
||||
}
|
||||
|
||||
$dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version);
|
||||
$dokument->addDataURL($xml, $params);
|
||||
|
||||
switch($xsl)
|
||||
{
|
||||
case 'LV_Informationen':
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz;
|
||||
break;
|
||||
case 'Honorarvertrag':
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname;
|
||||
break;
|
||||
case 'Studienordnung':
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'.
|
||||
$filename .= sprintf("%'.04d",$studienordnung->studiengang_kz).
|
||||
$filename .= '-'.$studienordnung->studiengangkurzbzlang;
|
||||
break;
|
||||
default:
|
||||
$filename = $xsl;
|
||||
}
|
||||
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
if (!$dokument->create($output))
|
||||
die($dokument->errormsg);
|
||||
|
||||
if ($sign === true)
|
||||
{
|
||||
if ($dokument->sign($user))
|
||||
{
|
||||
$dokument->output();
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $dokument->errormsg;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($vorlage->text))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tmp = sys_get_temp_dir();
|
||||
$tempfolder = $tmp.'/FHC'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
// Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den
|
||||
// Styleanweisungen und ebenfalls zum Zip hinzugefuegt
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
{
|
||||
//Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet
|
||||
if($vorlage->style!='')
|
||||
{
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($vorlage->style))
|
||||
die('unable to load xsl from tbl_vorlagestudiengang');
|
||||
}
|
||||
else
|
||||
{
|
||||
$style_xsl=$_GET['style_xsl'];
|
||||
$style_vorlage = new vorlage();
|
||||
$style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version);
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($style_vorlage->text))
|
||||
die('unable to load xsl');
|
||||
}
|
||||
|
||||
// Configure the transformer
|
||||
$style_proc = new XSLTProcessor;
|
||||
$style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules
|
||||
|
||||
$stylebuffer = $style_proc->transformToXml($xml_doc);
|
||||
|
||||
file_put_contents('styles.xml', $stylebuffer);
|
||||
}
|
||||
|
||||
$vorlage_found=false;
|
||||
$addons = new addon();
|
||||
|
||||
foreach($addons->aktive_addons as $addon)
|
||||
{
|
||||
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
if(file_exists($zipfile))
|
||||
{
|
||||
$vorlage_found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$vorlage_found)
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
|
||||
clearstatcache();
|
||||
if($vorlage->bezeichnung!='')
|
||||
$filename = $vorlage->bezeichnung;
|
||||
else
|
||||
$filename = $vorlage->vorlage_kurzbz;
|
||||
if($output == 'pdf')
|
||||
{
|
||||
if($xsl == 'LV_Informationen')
|
||||
{
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Honorarvertrag")
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.pdf';
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
}
|
||||
else
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
$filename = $filename.'.pdf';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='odt')
|
||||
{
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = $filename.'_'.$studienordnung->studiengangkurzbzlang;
|
||||
}
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='doc')
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.doc';
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.doc';
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = $filename.'.doc';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/vnd.ms-word');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
unlink('content.xml');
|
||||
if(file_exists('styles.xml'))
|
||||
unlink('styles.xml');
|
||||
unlink($tempname_zip);
|
||||
if($output=='pdf' || $output=='doc')
|
||||
unlink($tempPdfName);
|
||||
rmdir($tempfolder);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($vorlage->text))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//in $buffer steht nun das xsl-fo file mit den daten
|
||||
$buffer = '<?xml version="1.0" encoding="utf-8" ?>'.substr($buffer, strpos($buffer,"\n"),strlen($buffer));
|
||||
|
||||
//Pdf erstellen
|
||||
$fo2pdf = new XslFo2Pdf();
|
||||
|
||||
//wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen
|
||||
$nachname='';
|
||||
|
||||
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
$uid = str_replace(';','',$_GET['uid']);
|
||||
$qry = "SELECT nachname FROM campus.vw_benutzer WHERE uid=".$db->db_add_param($uid);
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$nachname = '_'.$row->nachname;
|
||||
}
|
||||
}
|
||||
}
|
||||
$filename=$xsl.$nachname;
|
||||
|
||||
if (!$fo2pdf->generatePdf($buffer, $filename, "D"))
|
||||
{
|
||||
echo('Failed to generate PDF');
|
||||
}
|
||||
}
|
||||
$dokument->output();
|
||||
$dokument->close();
|
||||
}
|
||||
else
|
||||
{
|
||||
// kein berechtigung
|
||||
// keine berechtigung
|
||||
echo "<html><body><h3>Sie haben keine Berechtigung zum Anzeigen dieser Seite</h3></body></html>";
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -25,7 +25,10 @@ require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/konto.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/prestudent.class.php');
|
||||
require_once('../../../include/student.class.php');
|
||||
require_once('../../../include/akte.class.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
@@ -49,12 +52,12 @@ if(isset($_GET['uid']))
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($uid);
|
||||
if($rechte->isBerechtigt('admin'))
|
||||
{
|
||||
{
|
||||
$uid = $_GET['uid'];
|
||||
$getParam = "&uid=" . $uid;
|
||||
}
|
||||
else
|
||||
$getParam = "";
|
||||
$getParam = "&uid=" . $uid;
|
||||
}
|
||||
else
|
||||
$getParam = "";
|
||||
}
|
||||
else
|
||||
$getParam='';
|
||||
@@ -65,135 +68,186 @@ $xsl_stg_kz = $student_studiengang->studiengang_kz;
|
||||
|
||||
$stg = '';
|
||||
|
||||
if(!($erg=$db->db_query("SELECT * FROM campus.vw_benutzer WHERE uid='".addslashes($uid)."'")))
|
||||
die($db->db_last_error());
|
||||
$num_rows=$db->db_num_rows($erg);
|
||||
if ($num_rows==1)
|
||||
if(isset($_GET['action']) && $_GET['action']=='download')
|
||||
{
|
||||
$vorname=$db->db_result($erg,0,"vorname");
|
||||
$vornamen=$db->db_result($erg,0,"vornamen");
|
||||
$nachname=$db->db_result($erg,0,"nachname");
|
||||
$gebdatum=$db->db_result($erg,0,"gebdatum");
|
||||
$gebort=$db->db_result($erg,0,"gebort");
|
||||
$titelpre=$db->db_result($erg,0,"titelpre");
|
||||
$titelpost=$db->db_result($erg,0,"titelpost");
|
||||
$email=$db->db_result($erg,0,"uid").'@'.DOMAIN;
|
||||
$email_alias=$db->db_result($erg,0,"alias");
|
||||
$hp=$db->db_result($erg,0,"homepage");
|
||||
if(isset($_GET['id']) && is_numeric($_GET['id']))
|
||||
{
|
||||
$id = $_GET['id'];
|
||||
$akte = new akte();
|
||||
$akte->load($id);
|
||||
if ($akte->person_id == $student_studiengang->person_id
|
||||
&& $akte->signiert
|
||||
&& $akte->stud_selfservice)
|
||||
{
|
||||
if($akte->inhalt!='')
|
||||
{
|
||||
//Header fuer Datei schicken
|
||||
header("Content-type: $akte->mimetype");
|
||||
header('Content-Disposition: attachment; filename="'.$akte->titel.'"');
|
||||
echo base64_decode($akte->inhalt);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Id ist ungueltig');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Id ist ungueltig');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Id ist ungueltig');
|
||||
}
|
||||
}
|
||||
if(!($erg_stud=$db->db_query("SELECT studiengang_kz, semester, verband, gruppe, matrikelnr, typ::varchar(1) || kurzbz AS stgkz, tbl_studiengang.bezeichnung AS stgbz FROM public.tbl_student JOIN public.tbl_studiengang USING(studiengang_kz) WHERE student_uid='".addslashes($uid)."'")))
|
||||
die($db->db_last_error());
|
||||
$stud_num_rows=$db->db_num_rows($erg_stud);
|
||||
|
||||
if ($stud_num_rows==1)
|
||||
{
|
||||
$stg=$db->db_result($erg_stud,0,"studiengang_kz");
|
||||
$stgbez=$db->db_result($erg_stud,0,"stgbz");
|
||||
$stgkz=$db->db_result($erg_stud,0,"stgkz");
|
||||
$semester=$db->db_result($erg_stud,0,"semester");
|
||||
$verband=$db->db_result($erg_stud,0,"verband");
|
||||
$gruppe=$db->db_result($erg_stud,0,"gruppe");
|
||||
$matrikelnr=$db->db_result($erg_stud,0,"matrikelnr");
|
||||
}
|
||||
if(!($erg_lekt=$db->db_query("SELECT * FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."'")))
|
||||
die($db->db_last_error());
|
||||
$lekt_num_rows=$db->db_num_rows($erg_lekt);
|
||||
if ($lekt_num_rows==1)
|
||||
{
|
||||
$row=$db->db_fetch_object($erg_lekt,0);
|
||||
$kurzbz=$row->kurzbz;
|
||||
$tel=$row->telefonklappe;
|
||||
}
|
||||
|
||||
// Mail-Groups
|
||||
if(!($erg_mg=$db->db_query("SELECT gruppe_kurzbz, beschreibung FROM campus.vw_persongruppe WHERE mailgrp AND uid='".addslashes($uid)."' ORDER BY gruppe_kurzbz")))
|
||||
die($db->db_last_error());
|
||||
$nr_mg=$db->db_num_rows($erg_mg);
|
||||
|
||||
echo '
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
echo '<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>'.$p->t('tools/dokumente').'</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
function MM_jumpMenu(targ, selObj, restore)
|
||||
{
|
||||
eval(targ + ".location=\'" + selObj.options[selObj.selectedIndex].value + "'.$getParam.'\'");
|
||||
<title>'.$p->t('tools/dokumente').'</title>
|
||||
<meta charset="UTF-8">
|
||||
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">';
|
||||
include('../../../include/meta/jquery.php');
|
||||
include('../../../include/meta/jquery-tablesorter.php');
|
||||
echo '
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
|
||||
if(restore)
|
||||
{
|
||||
selObj.selectedIndex = 0;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t1").tablesorter(
|
||||
{
|
||||
sortList: [[0,1]],
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
});
|
||||
|
||||
function changeSemester(obj)
|
||||
{
|
||||
self.location = obj.options[obj.selectedIndex].value + "'.$getParam.'";
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>'.$p->t('tools/dokumente').'</h1>';
|
||||
<h1>'.$p->t('tools/dokumente').'</h1>
|
||||
|
||||
<h2>Bestätigungen</h2>';
|
||||
|
||||
//Aktuelles Studiensemester oder gewaehltes Studiensemester
|
||||
$prestudent = new prestudent();
|
||||
$prestudent->getPrestudentRolle($student_studiengang->prestudent_id);
|
||||
|
||||
$stsem_arr = array();
|
||||
$laststsem = '';
|
||||
foreach($prestudent->result as $row)
|
||||
{
|
||||
$stsem_arr[] = $row->studiensemester_kurzbz;
|
||||
$laststsem = $row->studiensemester_kurzbz;
|
||||
}
|
||||
$stsem_arr = array_unique($stsem_arr);
|
||||
if($stsem == '')
|
||||
$stsem = $laststsem;
|
||||
|
||||
/*//Aktuelles Studiensemester oder gewaehltes Studiensemester
|
||||
$stsem_obj = new studiensemester();
|
||||
if($stsem=='')
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
if($stsem == '')
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
|
||||
$stsem_obj->getAll();
|
||||
*/
|
||||
echo $p->t('global/studiensemester');
|
||||
echo ' <SELECT name="stsem" onChange="changeSemester(this)">';
|
||||
|
||||
echo "<br><hr>";
|
||||
echo $p->t('global/studiensemester')."</b> <SELECT name='stsem' onChange=\"MM_jumpMenu('self',this,0)\">";
|
||||
foreach ($stsem_obj->studiensemester as $semrow)
|
||||
foreach ($stsem_arr as $semrow)
|
||||
{
|
||||
if ($stsem == $semrow)
|
||||
{
|
||||
if($stsem == $semrow->studiensemester_kurzbz)
|
||||
echo "<OPTION value='dokumente.php?stsem=$semrow->studiensemester_kurzbz' selected>$semrow->studiensemester_kurzbz</OPTION>";
|
||||
else
|
||||
echo "<OPTION value='dokumente.php?stsem=$semrow->studiensemester_kurzbz'>$semrow->studiensemester_kurzbz</OPTION>";
|
||||
echo '<OPTION value="dokumente.php?stsem='.$semrow.'" selected>';
|
||||
echo $semrow;
|
||||
echo '</OPTION>';
|
||||
}
|
||||
echo "</SELECT><br />";
|
||||
else
|
||||
{
|
||||
echo '<OPTION value="dokumente.php?stsem='.$semrow.'">';
|
||||
echo $semrow;
|
||||
echo '</OPTION>';
|
||||
}
|
||||
}
|
||||
echo '</SELECT><br /><br />';
|
||||
|
||||
$konto = new konto();
|
||||
|
||||
$buchungstypen = array();
|
||||
if(defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
{
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
}
|
||||
|
||||
$stsem_zahlung = $konto->getLastStSemBuchungstypen($uid, $buchungstypen, $stsem);
|
||||
if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung)
|
||||
{
|
||||
echo "<a href='../pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=".$stsem."&uid=".$uid."&xsl_stg_kz=".$xsl_stg_kz."'>".$p->t('tools/inskriptionsbestaetigung')."</a>";
|
||||
$path = "../pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=".$stsem."&uid=".$uid."&xsl_stg_kz=".$xsl_stg_kz;
|
||||
echo '<a href="'.$path.'">'.$p->t('tools/inskriptionsbestaetigung').'</a>';
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem));
|
||||
echo '<br /><br />';
|
||||
}
|
||||
else
|
||||
echo $p->t('tools/inskriptionsbestaetigung')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
|
||||
echo "<hr>";
|
||||
|
||||
if(defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN)
|
||||
{
|
||||
if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung)
|
||||
{
|
||||
echo "<a href='../pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=".$stsem."&uid=".$uid."'>".$p->t('tools/studienbuchblatt')."</a>";
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem));
|
||||
}
|
||||
else
|
||||
echo $p->t('tools/studienbuchblatt')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
|
||||
echo "<hr>";
|
||||
echo $p->t('tools/inskriptionsbestaetigung');
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
echo '<br /><br />';
|
||||
}
|
||||
|
||||
if(defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN)
|
||||
if (defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN)
|
||||
{
|
||||
if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung)
|
||||
{
|
||||
$pfad = "../pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=".$stsem."&uid=".$uid;
|
||||
echo '<a href="'.$pfad.'">'.$p->t('tools/studienbuchblatt').'</a>';
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem));
|
||||
}
|
||||
else
|
||||
echo $p->t('tools/studienbuchblatt')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
|
||||
echo '<br /><br />';
|
||||
}
|
||||
|
||||
if (defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN)
|
||||
{
|
||||
echo "<a href='studienerfolgsbestaetigung.php?".$getParam."' class='Item'>".$p->t('tools/studienerfolgsbestaetigung')." Deutsch</a><br>";
|
||||
echo "<a href='studienerfolgsbestaetigung.php?lang=en".$getParam."' class='Item'>".$p->t('tools/studienerfolgsbestaetigung')." Englisch</a>";
|
||||
echo "<hr>";
|
||||
echo "<br />";
|
||||
}
|
||||
echo "<br>";
|
||||
echo "<br />";
|
||||
|
||||
$akte = new akte();
|
||||
if($akte->getArchiv($student_studiengang->person_id, true, true) && count($akte->result)>0)
|
||||
{
|
||||
echo '
|
||||
<h2>Abschlussdokumente</h2>
|
||||
<table id="t1" style="width:auto;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Erstelldatum</th>
|
||||
<th>Dokument</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
';
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
foreach($akte->result as $row)
|
||||
{
|
||||
$pfad = 'dokumente.php?action=download&id='.$row->akte_id.'&uid='.$uid;
|
||||
echo '<tr>';
|
||||
echo '<td>'.$datum_obj->formatDatum($row->erstelltam,'d.m.Y').'</td>';
|
||||
echo '<td><a href="'.$pfad.'"><img src="../../../skin/images/pdfpic.gif" /> '.$row->bezeichnung.'</a></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
echo '</tbody></table>';
|
||||
}
|
||||
echo '</body>
|
||||
</html>
|
||||
';
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -1,219 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/* Erstellt einen Lehrauftrag im PDF Format
|
||||
*
|
||||
* Erstellt ein XML File Transformiert dieses mit
|
||||
* Hilfe der XSL-FO Vorlage aus der DB und generiert
|
||||
* daraus ein PDF (xslfo2pdf)
|
||||
*/
|
||||
session_cache_limiter('none'); //muss gesetzt werden sonst funktioniert der Download mit IE8 nicht
|
||||
session_start();
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/xslfo2pdf/xslfo2pdf.php');
|
||||
require_once('../include/fop.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
|
||||
//Parameter holen
|
||||
if(isset($_GET['xml']))
|
||||
$xml=$_GET['xml'];
|
||||
else
|
||||
die('Fehlerhafte1 Parameteruebergabe');
|
||||
|
||||
|
||||
if(isset($_GET['xsl']))
|
||||
$xsl=$_GET['xsl'];
|
||||
else
|
||||
die('Fehlerhafte2 Parameteruebergabe');
|
||||
|
||||
$xsl_stg_kz=0;
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
else
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
else
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
if(strstr($_GET['uid'],';'))
|
||||
$uids = explode(';',$_GET['uid']);
|
||||
else
|
||||
$uids = $_GET['uid'];
|
||||
|
||||
$qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($uids[1]);
|
||||
if($result_std = $db->db_query($qry))
|
||||
if($db->db_num_rows($result_std)==1)
|
||||
{
|
||||
$row_std = $db->db_fetch_object($result_std);
|
||||
$xsl_stg_kz=$row_std->studiengang_kz;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz'];
|
||||
else
|
||||
$xsl_oe_kurzbz='';
|
||||
|
||||
//Parameter setzen
|
||||
$params='?xmlformat=xml';
|
||||
if(isset($_GET['uid']))
|
||||
$params.='&uid='.$_GET['uid'];
|
||||
if(isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$version = $_GET['version'];
|
||||
else
|
||||
$version ='';
|
||||
|
||||
$output = (isset($_GET['output'])?$_GET['output']:'odt');
|
||||
|
||||
//Berechtigung pruefen
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
$xml_url=XML_ROOT.$xml.$params;
|
||||
|
||||
// Load the XML source
|
||||
$xml_doc = new DOMDocument;
|
||||
|
||||
if(!$xml_doc->load($xml_url))
|
||||
die('unable to load xml: '.$xml_url);
|
||||
|
||||
//XSL aus der DB holen
|
||||
$vorlage = new vorlage();
|
||||
if($xsl_oe_kurzbz!='')
|
||||
{
|
||||
$vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
|
||||
$xsl_content = $vorlage->text;
|
||||
loadVariables($user);
|
||||
|
||||
if (!isset($_REQUEST["archive"]))
|
||||
{
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tempfolder = '/tmp/'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, 'AusbildStatus', $version);
|
||||
$xsl_content = $vorlage->text;
|
||||
|
||||
|
||||
$xsl_doc = new DOMDocument;
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer1 = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
chdir($tempfolder);
|
||||
file_put_contents('styles.xml', $buffer1);
|
||||
|
||||
|
||||
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/Ausbildungsver.'.$endung;
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
clearstatcache();
|
||||
|
||||
if($output == 'pdf')
|
||||
{
|
||||
$tempPdfName = 'Ausbildungsver.pdf';
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$tempPdfName.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='odt')
|
||||
{
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="Ausbildungsver.odt"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
unlink('content.xml');
|
||||
unlink('styles.xml');
|
||||
unlink($tempname_zip);
|
||||
if($output=='pdf')
|
||||
unlink($tempPdfName);
|
||||
rmdir($tempfolder);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
+222
-575
@@ -16,14 +16,14 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/* Erstellt diverse Dokumente
|
||||
*
|
||||
* Erstellt ein XML File Transformiert dieses mit
|
||||
* Hilfe der XSL-FO Vorlage aus der DB und generiert
|
||||
* daraus ein PDF mittels xslfo2pdf bzw unoconv
|
||||
* daraus ein PDF mittels unoconv
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -34,18 +34,17 @@ session_start();*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/xslfo2pdf/xslfo2pdf.php');
|
||||
require_once('../include/fop.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
require_once('../include/student.class.php');
|
||||
require_once('../include/prestudent.class.php');
|
||||
require_once('../include/variable.class.php');
|
||||
require_once('../include/addon.class.php');
|
||||
require_once('../include/mitarbeiter.class.php');
|
||||
require_once('../include/studiengang.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/studienordnung.class.php');
|
||||
//require_once('../include/betriebsmittel.class.php');
|
||||
require_once('../include/dokument_export.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
@@ -54,125 +53,97 @@ $variable_obj = new variable();
|
||||
$variable_obj->loadVariables($user);
|
||||
|
||||
//Parameter holen
|
||||
if(isset($_GET['xml']))
|
||||
$xml=$_GET['xml'];
|
||||
if (isset($_GET['xml']))
|
||||
$xml = $_GET['xml'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
if(isset($_GET['xsl']))
|
||||
$xsl=$_GET['xsl'];
|
||||
if (isset($_GET['xsl']))
|
||||
$xsl = $_GET['xsl'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
|
||||
if(isset($_GET['sign']))
|
||||
$sign = true;
|
||||
else
|
||||
$sign = false;
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz=0;
|
||||
$xsl_stg_kz = 0;
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
if (isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz = $_GET['xsl_stg_kz'];
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
if (isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz = $_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen
|
||||
// in dem der 1. Studierende in der Liste ist
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
if (isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
if(strstr($_GET['uid'],';'))
|
||||
if (strstr($_GET['uid'],';'))
|
||||
$uids = explode(';',$_GET['uid']);
|
||||
else
|
||||
$uids[1] = $_GET['uid'];
|
||||
|
||||
$student_obj = new student();
|
||||
if($student_obj->load($uids[1]))
|
||||
if ($student_obj->load($uids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$student_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
elseif(isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='')
|
||||
elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='')
|
||||
{
|
||||
if(strstr($_GET['prestudent_id'],';'))
|
||||
if (strstr($_GET['prestudent_id'],';'))
|
||||
$prestudent_ids = explode(';',$_GET['prestudent_id']);
|
||||
else
|
||||
$prestudent_ids[1] = $_GET['prestudent_id'];
|
||||
|
||||
$prestudent_obj = new prestudent();
|
||||
if($prestudent_obj->load($prestudent_ids[1]))
|
||||
if ($prestudent_obj->load($prestudent_ids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$prestudent_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $prestudent_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz'];
|
||||
if (isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz'];
|
||||
else
|
||||
$xsl_oe_kurzbz='';
|
||||
$xsl_oe_kurzbz = '';
|
||||
|
||||
//Parameter setzen
|
||||
$params='?xmlformat=xml';
|
||||
if(isset($_GET['uid']))
|
||||
$params.='&uid='.urlencode($_GET['uid']);
|
||||
if(isset($_GET['stg_kz']))
|
||||
$params.='&stg_kz='.urlencode($_GET['stg_kz']);
|
||||
if(isset($_GET['person_id']))
|
||||
$params.='&person_id='.urlencode($_GET['person_id']);
|
||||
if(isset($_GET['id']))
|
||||
$params.='&id='.urlencode($_GET['id']);
|
||||
if(isset($_GET['prestudent_id']))
|
||||
$params.='&prestudent_id='.urlencode($_GET['prestudent_id']);
|
||||
if(isset($_GET['buchungsnummern']))
|
||||
$params.='&buchungsnummern='.urlencode($_GET['buchungsnummern']);
|
||||
if(isset($_GET['ss']))
|
||||
$params.='&ss='.urlencode($_GET['ss']);
|
||||
if(isset($_GET['abschlusspruefung_id']))
|
||||
$params.='&abschlusspruefung_id='.urlencode($_GET['abschlusspruefung_id']);
|
||||
if(isset($_GET['typ']))
|
||||
$params.='&typ='.urlencode($_GET['typ']);
|
||||
if(isset($_GET['all']))
|
||||
$params.='&all='.urlencode($_GET['all']);
|
||||
if(isset($_GET['preoutgoing_id']))
|
||||
$params.='&preoutgoing_id='.urlencode($_GET['preoutgoing_id']);
|
||||
if(isset($_GET["lvid"]))
|
||||
$params.='&lvid='.urlencode($_GET["lvid"]);
|
||||
if(isset($_GET['projekt_kurzbz']))
|
||||
$params.='&projekt_kurzbz='.urlencode($_GET['projekt_kurzbz']);
|
||||
if(isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$params = 'xmlformat=xml';
|
||||
|
||||
// GET Parameter die an XML durchgereicht werden
|
||||
foreach ($_GET as $getkey=>$getvalue)
|
||||
{
|
||||
if (in_array($getkey,
|
||||
array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id',
|
||||
'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis',
|
||||
'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort',
|
||||
'abrechnungsmonat', 'form')
|
||||
)
|
||||
)
|
||||
{
|
||||
$params .= '&'.$getkey.'='.urlencode($getvalue);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['vertrag_id']))
|
||||
{
|
||||
foreach($_GET['vertrag_id'] as $id)
|
||||
{
|
||||
$params .= '&vertrag_id[]='.urlencode($id);
|
||||
}
|
||||
}
|
||||
if (isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$version = $_GET['version'];
|
||||
else
|
||||
$version ='';
|
||||
if(isset($_GET['von']))
|
||||
$params.='&von='.urlencode($_GET['von']);
|
||||
if(isset($_GET['bis']))
|
||||
$params.='&bis='.urlencode($_GET['bis']);
|
||||
if(isset($_GET['stundevon']))
|
||||
$params.='&stundevon='.urlencode($_GET['stundevon']);
|
||||
if(isset($_GET['stundebis']))
|
||||
$params.='&stundebis='.urlencode($_GET['stundebis']);
|
||||
if(isset($_GET['sem']))
|
||||
$params.='&sem='.urlencode($_GET['sem']);
|
||||
if(isset($_GET['lehreinheit']))
|
||||
$params.='&lehreinheit='.urlencode($_GET['lehreinheit']);
|
||||
if(isset($_GET['mitarbeiter_uid']))
|
||||
$params.='&mitarbeiter_uid='.urlencode($_GET['mitarbeiter_uid']);
|
||||
if(isset($_GET['vertrag_id']))
|
||||
{
|
||||
foreach($_GET['vertrag_id'] as $id)
|
||||
{
|
||||
$params.='&vertrag_id[]='.urlencode($id);
|
||||
}
|
||||
}
|
||||
if(isset($_GET['studienordnung_id']))
|
||||
$params.='&studienordnung_id='.urlencode($_GET['studienordnung_id']);
|
||||
if(isset($_GET['fixangestellt']))
|
||||
$params.='&fixangestellt='.urlencode($_GET['fixangestellt']);
|
||||
if(isset($_GET['standort']))
|
||||
$params.='&standort='.urlencode($_GET['standort']);
|
||||
if(isset($_GET['abrechnungsmonat']))
|
||||
$params.='&abrechnungsmonat='.urlencode($_GET['abrechnungsmonat']);
|
||||
if(isset($_GET['form']))
|
||||
$params.='&form='.urlencode($_GET['form']);
|
||||
$version = null;
|
||||
|
||||
$output = (isset($_GET['output'])?$_GET['output']:'odt');
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
@@ -180,21 +151,21 @@ $rechte->getBerechtigungen($user);
|
||||
|
||||
//OE fuer Output ermitteln
|
||||
|
||||
if ($xsl_oe_kurzbz!='')
|
||||
if ($xsl_oe_kurzbz != '')
|
||||
{
|
||||
$oe_kurzbz = $xsl_oe_kurzbz;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$oe = new studiengang();
|
||||
$oe->load($xsl_stg_kz);
|
||||
$oe_kurzbz = $oe->oe_kurzbz;
|
||||
}
|
||||
|
||||
//Darf der User Dokumente in einem NICHT-PDF-Format exportieren?
|
||||
if (isset($_GET['output']) && $_GET['output']!='pdf')
|
||||
if (isset($_GET['output']) && $_GET['output'] != 'pdf')
|
||||
{
|
||||
if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz))
|
||||
{
|
||||
@@ -206,28 +177,12 @@ if (isset($_GET['output']) && $_GET['output']!='pdf')
|
||||
else
|
||||
$output = 'pdf';
|
||||
|
||||
|
||||
//XSL aus der DB holen
|
||||
$vorlage = new vorlage();
|
||||
if($xsl_oe_kurzbz!='')
|
||||
{
|
||||
$vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
|
||||
$xsl_content = $vorlage->text;
|
||||
|
||||
if($xsl_content=='')
|
||||
die('Für diese Organisationseinheit ist keine Vorlage im System hinterlegt');
|
||||
if(!$vorlage->loadVorlage($xsl))
|
||||
die('Vorlage wurde nicht gefunden');
|
||||
|
||||
//Berechtigung pruefen
|
||||
if($xsl=='AccountInfo')
|
||||
if ($xsl == 'AccountInfo')
|
||||
{
|
||||
$isberechtigt = false;
|
||||
|
||||
@@ -235,102 +190,61 @@ if($xsl=='AccountInfo')
|
||||
foreach ($uids as $uid)
|
||||
{
|
||||
//Berechtigung fuer das Drucken des Accountinfoblattes pruefen
|
||||
$qry = "SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."'";
|
||||
if($result_ma = $db->db_query($qry))
|
||||
$ma = new mitarbeiter();
|
||||
if($ma->load($uid))
|
||||
{
|
||||
if($db->db_num_rows($result_ma)==1)
|
||||
//Mitarbeiterrechte erforderlich
|
||||
if ($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid'))
|
||||
{
|
||||
//Mitarbeiterrechte erforderlich
|
||||
if($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid'))
|
||||
{
|
||||
$isberechtigt=true;
|
||||
}
|
||||
$isberechtigt = true;
|
||||
}
|
||||
}
|
||||
|
||||
$qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE student_uid='".addslashes($uid)."'";
|
||||
if($result_std = $db->db_query($qry))
|
||||
$stud = new student();
|
||||
if ($stud->load($uid))
|
||||
{
|
||||
if($db->db_num_rows($result_std)==1)
|
||||
//Rechte pruefen
|
||||
if ($rechte->isBerechtigt('admin', $stud->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('admin', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', $stud->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('support', 0, 'suid'))
|
||||
{
|
||||
$row_std = $db->db_fetch_object($result_std);
|
||||
//Rechte pruefen
|
||||
if($rechte->isBerechtigt('admin', $row_std->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('admin', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', $row_std->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('support', 0, 'suid'))
|
||||
{
|
||||
$isberechtigt=true;
|
||||
}
|
||||
$isberechtigt=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$isberechtigt)
|
||||
if (!$isberechtigt)
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung um dieses AccountInfoBlatt zu drucken';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif(in_array($xsl,array('Lehrveranstaltungszeugnis','Zertifikat','Diplomurkunde','Diplomzeugnis','Bescheid', 'BescheidEng','Bakkurkunde','BakkurkundeEng','Bakkzeugnis',
|
||||
'PrProtokollBakk','PrProtokollDipl','Lehrauftrag','DiplomurkundeEng','Zeugnis','ZeugnisEng','StudienerfolgEng',
|
||||
'Sammelzeugnis','PrProtDiplEng','PrProtBakkEng','BakkzeugnisEng','DiplomzeugnisEng','statusbericht',
|
||||
'DiplSupplement','Zutrittskarte','Projektbeschr','Ausbildungsver','AusbildStatus','PrProtBA','PrProtMA',
|
||||
'PrProtBAEng','PrProtMAEng','Studienordnung','Erfolgsnachweis','ErfolgsnwHead','Studienblatt','LV_Informationen',
|
||||
'LVZeugnis','AnwListBarcode','Honorarvertrag','AusbVerEng','AusbVerEngHead','Zeugnis','ZeugnisNeu','ZeugnisEngNeu','ErfolgsnachweisE','ErfolgsnwHeadE','Magisterurkunde','Masterurkunde',
|
||||
'Defensiourkunde','Magisterzeugnis','Laufzettel','StudienblattEng','Zahlung1','Terminliste','Studienbuchblatt','Veranstaltungen')))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif(in_array($xsl,array('Ressource')))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('lehre/lvplan'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif(in_array($xsl,array('Inskription','Studienerfolg','OutgoingLearning','OutgoingChangeL','LearningAgree','Zahlung','DichiaSost')))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif($xsl=='Uebernahme')
|
||||
{
|
||||
if(!$rechte->isBerechtigt('wawi/inventar') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('basis/betriebsmittel'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif($xsl=='Bestellung')
|
||||
{
|
||||
if(!$rechte->isBerechtigt('wawi/bestellung'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Wenn Berechtigung direkt beim der Vorlage angegeben ist
|
||||
if(count($vorlage->berechtigung)>0)
|
||||
$vorlagestudiengang = new vorlage();
|
||||
if ($xsl_oe_kurzbz != '')
|
||||
{
|
||||
$allowed=false;
|
||||
foreach($vorlage->berechtigung as $berechtigung_kurzbz)
|
||||
$vorlagestudiengang->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
|
||||
$vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
// Wenn Berechtigung direkt beim der Vorlage angegeben ist
|
||||
if (count($vorlagestudiengang->berechtigung)>0)
|
||||
{
|
||||
$allowed = false;
|
||||
foreach($vorlagestudiengang->berechtigung as $berechtigung_kurzbz)
|
||||
{
|
||||
if($rechte->isBerechtigt($berechtigung_kurzbz))
|
||||
$allowed=true;
|
||||
if ($rechte->isBerechtigt($berechtigung_kurzbz))
|
||||
$allowed = true;
|
||||
}
|
||||
if(!$allowed)
|
||||
if (!$allowed)
|
||||
{
|
||||
echo 'unbekanntes Dokument oder keine Berechtigung';
|
||||
exit;
|
||||
@@ -343,272 +257,100 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$xml_found = false;
|
||||
$addons = new addon();
|
||||
|
||||
foreach($addons->aktive_addons as $addon)
|
||||
{
|
||||
$xmlfile = DOC_ROOT.'addons/'.$addon.'/rdf/'.$xml;
|
||||
if(file_exists($xmlfile))
|
||||
{
|
||||
$xml_found = true;
|
||||
$xml_url = XML_ROOT.'../addons/'.$addon.'/rdf/'.$xml.$params;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$xml_found)
|
||||
$xml_url=XML_ROOT.$xml.$params;
|
||||
|
||||
|
||||
// Load the XML source
|
||||
$xml_doc = new DOMDocument;
|
||||
|
||||
//echo $xml_url;
|
||||
if(!$xml_doc->load($xml_url))
|
||||
die('unable to load xml: '.$xml_url);
|
||||
|
||||
//Pdf erstellen
|
||||
|
||||
//wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen
|
||||
$nachname='';
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
$nachname = '';
|
||||
if (isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
$uid = str_replace(';','',$_GET['uid']);
|
||||
$benutzer_obj = new benutzer();
|
||||
if($benutzer_obj->load($uid))
|
||||
if ($benutzer_obj->load($uid))
|
||||
$nachname = '_'.convertProblemChars($benutzer_obj->nachname);
|
||||
|
||||
}
|
||||
$filename=$xsl.$nachname;
|
||||
$filename = $xsl.$nachname;
|
||||
|
||||
if ($xsl_oe_kurzbz == '')
|
||||
{
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$stg_obj = new studiengang();
|
||||
if (!$stg_obj->load($xsl_stg_kz))
|
||||
die($stg_obj->errormsg);
|
||||
$xsl_oe_kurzbz = $stg_obj->oe_kurzbz;
|
||||
}
|
||||
|
||||
if($sign === true && $vorlage->signierbar === false)
|
||||
{
|
||||
die('Diese Vorlage darf nicht signiert werden');
|
||||
}
|
||||
|
||||
if (!isset($_REQUEST["archive"]))
|
||||
{
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
if (mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
$dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version);
|
||||
$dokument->addDataURL($xml, $params);
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tmp = sys_get_temp_dir();
|
||||
$tempfolder = $tmp.'/FHC'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
// Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den
|
||||
// Styleanweisungen und ebenfalls zum Zip hinzugefuegt
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
{
|
||||
//Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet
|
||||
if($vorlage->style!='')
|
||||
{
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($vorlage->style))
|
||||
die('unable to load xsl from tbl_vorlagestudiengang');
|
||||
}
|
||||
else
|
||||
{
|
||||
$style_xsl=$_GET['style_xsl'];
|
||||
$style_vorlage = new vorlage();
|
||||
$style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version);
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($style_vorlage->text))
|
||||
die('unable to load xsl');
|
||||
}
|
||||
|
||||
// Configure the transformer
|
||||
$style_proc = new XSLTProcessor;
|
||||
$style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules
|
||||
|
||||
$stylebuffer = $style_proc->transformToXml($xml_doc);
|
||||
|
||||
file_put_contents('styles.xml', $stylebuffer);
|
||||
}
|
||||
|
||||
$vorlage_found=false;
|
||||
$addons = new addon();
|
||||
|
||||
foreach($addons->aktive_addons as $addon)
|
||||
{
|
||||
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
if(file_exists($zipfile))
|
||||
{
|
||||
$vorlage_found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$vorlage_found)
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
|
||||
clearstatcache();
|
||||
if($vorlage->bezeichnung!='')
|
||||
$filename = $vorlage->bezeichnung.$nachname;
|
||||
else
|
||||
$filename = $vorlage->vorlage_kurzbz.$nachname;
|
||||
if($output == 'pdf')
|
||||
{
|
||||
if($xsl == 'LV_Informationen')
|
||||
{
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Honorarvertrag")
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang;
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
}
|
||||
else
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
$filename = $filename.'.pdf';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='odt')
|
||||
{
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang;
|
||||
}
|
||||
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='doc')
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.doc';
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang.'.doc';
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = $filename.'.doc';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/vnd.ms-word');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
unlink('content.xml');
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
unlink('styles.xml');
|
||||
unlink($tempname_zip);
|
||||
if($output=='pdf' || $output=='doc')
|
||||
unlink($tempPdfName);
|
||||
rmdir($tempfolder);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(PDF_CREATE_FUNCTION=='FOP')
|
||||
{
|
||||
$fop = new fop();
|
||||
$xml = $xml_doc->saveXML();
|
||||
//$xml = '<personen></personen>';
|
||||
//$xsl='foobar';
|
||||
$fop->generatePdf($xml, $xsl_content, $filename, "D");
|
||||
}
|
||||
/**
|
||||
* Get Filename
|
||||
* TODO cleanup
|
||||
*/
|
||||
if ($vorlage->bezeichnung!='')
|
||||
$filename = $vorlage->bezeichnung.$nachname;
|
||||
else
|
||||
$filename = $vorlage->vorlage_kurzbz.$nachname;
|
||||
|
||||
switch($xsl)
|
||||
{
|
||||
$fo2pdf = new XslFo2Pdf();
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
if (!$fo2pdf->generatePdf($buffer, $filename, "D"))
|
||||
{
|
||||
echo('Failed to generate PDF');
|
||||
}
|
||||
case 'LV_Informationen':
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz;
|
||||
break;
|
||||
case 'Honorarvertrag':
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname;
|
||||
break;
|
||||
case 'Studienordnung':
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang;
|
||||
break;
|
||||
}
|
||||
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
if ($sign === true)
|
||||
{
|
||||
$dokument->sign($user);
|
||||
}
|
||||
|
||||
if ($dokument->create($output))
|
||||
$dokument->output();
|
||||
else
|
||||
echo $dokument->errormsg;
|
||||
|
||||
$dokument->close();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$vorlage->archivierbar)
|
||||
die('Dieses Dokument ist nicht archivierbar');
|
||||
|
||||
// Archivieren von Dokumenten
|
||||
$uid = $_REQUEST["uid"];
|
||||
$heute = date('Y-m-d');
|
||||
|
||||
$student=new student();
|
||||
$student = new student();
|
||||
$student->load($uid);
|
||||
|
||||
if(isset($_REQUEST['ss']))
|
||||
if (isset($_REQUEST['ss']))
|
||||
{
|
||||
$ss = $_REQUEST["ss"];
|
||||
|
||||
$prestudent=new prestudent();
|
||||
$prestudent = new prestudent();
|
||||
$prestudent->getLastStatus($student->prestudent_id,$ss);
|
||||
$semester=$prestudent->ausbildungssemester;
|
||||
$semester = $prestudent->ausbildungssemester;
|
||||
|
||||
$query = "SELECT
|
||||
tbl_studiengang.studiengang_kz, tbl_studentlehrverband.semester, tbl_studiengang.typ,
|
||||
@@ -621,9 +363,9 @@ else
|
||||
AND tbl_studentlehrverband.student_uid = ".$db->db_add_param($uid)."
|
||||
AND tbl_studentlehrverband.studiensemester_kurzbz = ".$db->db_add_param($ss);
|
||||
|
||||
if($result = $db->db_query($query))
|
||||
if ($result = $db->db_query($query))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
if ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$person_id = $row->person_id;
|
||||
$titel = $xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester;
|
||||
@@ -632,7 +374,7 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
$echo = 'Datensatz wurde nicht gefunden';
|
||||
die('Student hat keinen Status in diesem Semester');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -646,170 +388,75 @@ else
|
||||
$bezeichnung = $vorlage->bezeichnung.'_'.$studiengang->kuerzel;
|
||||
}
|
||||
|
||||
if($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid'))
|
||||
if ($rechte->isBerechtigt('admin', $studiengang_kz, 'suid')
|
||||
|| $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid'))
|
||||
{
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
$dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version);
|
||||
$dokument->addDataURL($xml, $params);
|
||||
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
$error = false;
|
||||
|
||||
// Beim Archivieren wird das Dokument immer signiert wenn moeglich
|
||||
if($vorlage->signierbar)
|
||||
$sign = true;
|
||||
|
||||
if ($sign === true)
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tmp = sys_get_temp_dir();
|
||||
$tempfolder = $tmp.'/FHC'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
// Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den
|
||||
// Styleanweisungen und ebenfalls zum Zip hinzugefuegt
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
{
|
||||
//Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet
|
||||
if($vorlage->style!='')
|
||||
{
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($vorlage->style))
|
||||
die('unable to load xsl from tbl_vorlagestudiengang');
|
||||
}
|
||||
else
|
||||
{
|
||||
$style_xsl=$_GET['style_xsl'];
|
||||
$style_vorlage = new vorlage();
|
||||
$style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version);
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($style_vorlage->text))
|
||||
die('unable to load xsl');
|
||||
}
|
||||
|
||||
// Configure the transformer
|
||||
$style_proc = new XSLTProcessor;
|
||||
$style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules
|
||||
|
||||
$stylebuffer = $style_proc->transformToXml($xml_doc);
|
||||
|
||||
file_put_contents('styles.xml', $stylebuffer);
|
||||
}
|
||||
|
||||
$vorlage_found=false;
|
||||
$addons = new addon();
|
||||
|
||||
foreach($addons->aktive_addons as $addon)
|
||||
{
|
||||
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
if(file_exists($zipfile))
|
||||
{
|
||||
$vorlage_found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$vorlage_found)
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
|
||||
clearstatcache();
|
||||
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
}
|
||||
$file = $tempfolder.'/'.$tempPdfName;
|
||||
$dokument->sign($user);
|
||||
}
|
||||
|
||||
if ($dokument->create($output))
|
||||
$doc = $dokument->output(false);
|
||||
else
|
||||
{
|
||||
if(PDF_CREATE_FUNCTION=='FOP')
|
||||
$errormsg = $dokument->errormsg;
|
||||
$error = true;
|
||||
}
|
||||
|
||||
$dokument->close();
|
||||
|
||||
if(!$error)
|
||||
{
|
||||
$hex = base64_encode($doc);
|
||||
$akte = new akte();
|
||||
$akte->person_id = $person_id;
|
||||
if($vorlage->dokument_kurzbz!='')
|
||||
$akte->dokument_kurzbz = $vorlage->dokument_kurzbz;
|
||||
else
|
||||
$akte->dokument_kurzbz = 'Zeugnis';
|
||||
$akte->inhalt = $hex;
|
||||
$akte->mimetype = 'application/pdf';
|
||||
$akte->erstelltam = $heute;
|
||||
$akte->gedruckt = true;
|
||||
$akte->titel = $titel.'.pdf';
|
||||
$akte->bezeichnung = $bezeichnung;
|
||||
$akte->updateamum = '';
|
||||
$akte->updatevon = '';
|
||||
$akte->insertamum = date('Y-m-d H:i:s');
|
||||
$akte->insertvon = $user;
|
||||
$akte->ext_id = '';
|
||||
$akte->uid = $uid;
|
||||
$akte->new = true;
|
||||
$akte->archiv = true;
|
||||
$akte->signiert = $sign;
|
||||
$akte->stud_selfservice = $vorlage->stud_selfservice;
|
||||
|
||||
if (!$akte->save())
|
||||
{
|
||||
$fop = new fop();
|
||||
$file = $fop->generatePdf($xml_doc->saveXML(), $xsl_content, $filename, "F");
|
||||
echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = $user;
|
||||
$fo2pdf = new XslFo2Pdf();
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
|
||||
if (!$fo2pdf->generatePdf($buffer, $filename, 'F'))
|
||||
{
|
||||
echo('Failed to generate PDF');
|
||||
}
|
||||
$tmp = sys_get_temp_dir();
|
||||
$file = $tmp."/FHC".$filename.".pdf";
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
$handle = fopen($file, "rb");
|
||||
$string = fread($handle, filesize($file));
|
||||
fclose($handle);
|
||||
//$string = file_get_contents($file);
|
||||
unlink($file);
|
||||
|
||||
$hex="";
|
||||
//for ($i=0;$i<mb_strlen($string);$i++)
|
||||
// $hex.=(mb_strlen(dechex(ord(mb_substr($string,$i,1)))<2)? "0".dechex(ord(mb_substr($string,$i,1))): dechex(ord(mb_substr($string,$i,1))));
|
||||
|
||||
$hex = base64_encode($string);
|
||||
$akte = new akte();
|
||||
$akte->person_id = $person_id;
|
||||
$akte->dokument_kurzbz = "Zeugnis";
|
||||
$akte->inhalt = $hex;
|
||||
$akte->mimetype = "application/octet-stream";
|
||||
$akte->erstelltam = $heute;
|
||||
$akte->gedruckt = true;
|
||||
$akte->titel = $titel.".pdf";
|
||||
$akte->bezeichnung = $bezeichnung;
|
||||
$akte->updateamum = "";
|
||||
$akte->updatevon = "";
|
||||
$akte->insertamum = date('Y-m-d h:m:s');
|
||||
$akte->insertvon = $user;
|
||||
$akte->ext_id = "";
|
||||
$akte->uid = $uid;
|
||||
$akte->new = true;
|
||||
if (!$akte->save())
|
||||
{
|
||||
echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
echo $errormsg;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1274,7 +1274,7 @@ function StudentAuswahl()
|
||||
{
|
||||
// *** Zeugnis ***
|
||||
zeugnistree = document.getElementById('student-zeugnis-tree');
|
||||
url='<?php echo APP_ROOT;?>rdf/akte.rdf.php?person_id='+person_id+"&dokument_kurzbz=Zeugnis&"+gettimestamp();
|
||||
url='<?php echo APP_ROOT;?>rdf/akte.rdf.php?person_id='+person_id+"&"+gettimestamp();
|
||||
|
||||
try
|
||||
{
|
||||
@@ -2933,7 +2933,9 @@ function StudentAkteDel()
|
||||
// ****
|
||||
function StudentAkteDisableFields(val)
|
||||
{
|
||||
document.getElementById('student-zeugnis-button-archivieren').disabled=val;
|
||||
document.getElementById('student-zeugnis-button-archive').disabled=val;
|
||||
// Zeugnis als Default markieren
|
||||
document.getElementById('student-zeugnis-menulist-dokument').value='Zeugnis';
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -2962,14 +2964,8 @@ function StudentAkteUpload()
|
||||
window.open('../vilesci/personen/akteupdate.php?akte_id='+akte_id);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Startet das Script zum Archivieren des Zeugnisses und
|
||||
// * Refresht dann den Tree
|
||||
// ****
|
||||
function StudentZeugnisArchivieren(lang)
|
||||
function StudentZeugnisDokumentArchivieren()
|
||||
{
|
||||
lang = lang || 'ger';
|
||||
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('student-tree');
|
||||
|
||||
@@ -2988,6 +2984,47 @@ function StudentZeugnisArchivieren(lang)
|
||||
var errormsg = '';
|
||||
var stsem = getStudiensemester();
|
||||
|
||||
var vorlage = document.getElementById('student-zeugnis-menulist-dokument').value;
|
||||
var url = '<?php echo APP_ROOT; ?>content/pdfExport.php';
|
||||
var xml = '';
|
||||
|
||||
switch(vorlage)
|
||||
{
|
||||
case 'Zeugnis':
|
||||
case 'ZeugnisEng':
|
||||
xml = 'zeugnis.rdf.php'
|
||||
break;
|
||||
|
||||
case 'PrProtokollBakk':
|
||||
case 'PrProtBakkEng':
|
||||
case 'PrProtBA':
|
||||
case 'PrProtBAEng':
|
||||
case 'PrProtokollDipl':
|
||||
case 'PrProtDiplEng':
|
||||
case 'PrProtMA':
|
||||
case 'PrProtMAEng':
|
||||
case 'Bescheid':
|
||||
case 'BescheidEng':
|
||||
xml = 'abschlusspruefung.rdf.php';
|
||||
break;
|
||||
|
||||
case 'DiplSupplement':
|
||||
xml = 'diplomasupplement.xml.php';
|
||||
break;
|
||||
|
||||
case 'Studienblatt':
|
||||
case 'StudienblattEng':
|
||||
xml = 'studienblatt.xml.php';
|
||||
break;
|
||||
default:
|
||||
alert('Das archivieren fuer diesen Dokumenttyp wird derzeit nicht unterstuetzt');
|
||||
return
|
||||
break;
|
||||
}
|
||||
|
||||
var labelalt = document.getElementById('student-zeugnis-button-archive').label;
|
||||
document.getElementById('student-zeugnis-button-archive').label='Loading...';
|
||||
|
||||
//Zeugnis fuer alle markierten Studenten archivieren
|
||||
for (var t=0; t<numRanges; t++)
|
||||
{
|
||||
@@ -2996,14 +3033,12 @@ function StudentZeugnisArchivieren(lang)
|
||||
{
|
||||
uid = getTreeCellText(tree, 'student-treecol-uid', v);
|
||||
|
||||
var xsl_vorlage;
|
||||
if(lang=='eng')
|
||||
xsl_vorlage = 'ZeugnisEng';
|
||||
else
|
||||
xsl_vorlage = 'Zeugnis';
|
||||
url = '<?php echo APP_ROOT; ?>content/pdfExport.php?xsl='+xsl_vorlage+'&xml=zeugnis.rdf.php&uid='+uid+'&ss='+stsem+'&archive=1';
|
||||
|
||||
var req = new phpRequest(url,'','');
|
||||
req.add('xsl', vorlage);
|
||||
req.add('xml', xml);
|
||||
req.add('ss', stsem);
|
||||
req.add('archive', '1');
|
||||
req.add('uid', uid);
|
||||
|
||||
var response = req.execute();
|
||||
if(response!='')
|
||||
@@ -3013,61 +3048,7 @@ function StudentZeugnisArchivieren(lang)
|
||||
|
||||
if(errormsg!='')
|
||||
alert(errormsg);
|
||||
|
||||
StudentAkteTreeDatasource.Refresh(false);
|
||||
}
|
||||
|
||||
// * Startet das Script zum Archivieren des Bescheids und
|
||||
// * Refresht dann den Tree
|
||||
// ****
|
||||
function StudentBescheidArchivieren(lang)
|
||||
{
|
||||
lang = lang || 'ger';
|
||||
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('student-tree');
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
{
|
||||
alert('Student muss ausgewaehlt sein');
|
||||
return;
|
||||
}
|
||||
|
||||
var tree=document.getElementById('student-tree');
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var anzfault=0;
|
||||
var uid='';
|
||||
var errormsg = '';
|
||||
var stsem = getStudiensemester();
|
||||
|
||||
//Bescheid fuer alle markierten Studenten archivieren
|
||||
for (var t=0; t<numRanges; t++)
|
||||
{
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (v=start.value; v<=end.value; v++)
|
||||
{
|
||||
uid = getTreeCellText(tree, 'student-treecol-uid', v);
|
||||
|
||||
var xsl_vorlage;
|
||||
if(lang=='eng')
|
||||
xsl_vorlage = 'BescheidEng';
|
||||
else
|
||||
xsl_vorlage = 'Bescheid';
|
||||
url = '<?php echo APP_ROOT; ?>content/pdfExport.php?xsl='+xsl_vorlage+'&xml=abschlusspruefung.rdf.php&uid='+uid+'&ss='+stsem+'&archive=1';
|
||||
|
||||
var req = new phpRequest(url,'','');
|
||||
|
||||
var response = req.execute();
|
||||
if(response!='')
|
||||
errormsg = errormsg + response;
|
||||
}
|
||||
}
|
||||
|
||||
if(errormsg!='')
|
||||
alert(errormsg);
|
||||
|
||||
document.getElementById('student-zeugnis-button-archive').label=labelalt;
|
||||
StudentAkteTreeDatasource.Refresh(false);
|
||||
}
|
||||
|
||||
@@ -3618,36 +3599,6 @@ function StudentNotenTreeSelectDifferent()
|
||||
function StudentLvGesamtNotenTreeSelectID()
|
||||
{
|
||||
StudentNotenTreeSelectDifferent();
|
||||
|
||||
/*
|
||||
var tree=document.getElementById('student-lvgesamtnoten-tree');
|
||||
if(tree.view)
|
||||
var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
|
||||
else
|
||||
return false;
|
||||
|
||||
//In der globalen Variable ist die zu selektierende Eintrag gespeichert
|
||||
if(StudentLvGesamtNotenSelectLehrveranstaltungID!=null)
|
||||
{
|
||||
for(var i=0;i<items;i++)
|
||||
{
|
||||
//ID der row holen
|
||||
col = tree.columns ? tree.columns["student-lvgesamtnoten-tree-lehrveranstaltung_id"] : "student-lvgesamtnoten-tree-lehrveranstaltung_id";
|
||||
var lehrveranstaltung_id=tree.view.getCellText(i,col);
|
||||
|
||||
//wenn dies die zu selektierende Zeile
|
||||
if(lehrveranstaltung_id == StudentLvGesamtNotenSelectLehrveranstaltungID)
|
||||
{
|
||||
//Zeile markieren
|
||||
tree.view.selection.select(i);
|
||||
//Sicherstellen, dass die Zeile im sichtbaren Bereich liegt
|
||||
tree.treeBoxObject.ensureRowIsVisible(i);
|
||||
StudentNotenSelectLehrveranstaltungID=null;
|
||||
StudentNotenSelectStudentUID=null;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
// ***
|
||||
@@ -4365,7 +4316,6 @@ function StudentPruefungAuswahl()
|
||||
|
||||
//Lehrveranstaltung Drop Down laden
|
||||
var LVDropDown = document.getElementById('student-pruefung-menulist-lehrveranstaltung');
|
||||
//url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&"+gettimestamp();
|
||||
var uid = document.getElementById('student-detail-textbox-uid').value;
|
||||
url="<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid="+uid+"&"+gettimestamp();
|
||||
|
||||
@@ -4483,9 +4433,9 @@ function StudentAnrechnungenTreeSelectID()
|
||||
//In der globalen Variable ist die zu selektierende Eintrag gespeichert
|
||||
if(StudentAnrechnungSelectID!=null)
|
||||
{
|
||||
for(var i=0;i<items;i++)
|
||||
{
|
||||
//ID der row holen
|
||||
for(var i=0;i<items;i++)
|
||||
{
|
||||
//ID der row holen
|
||||
col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id=tree.view.getCellText(i,col);
|
||||
|
||||
@@ -4499,7 +4449,7 @@ function StudentAnrechnungenTreeSelectID()
|
||||
StudentAnrechnungSelectID=null;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4517,7 +4467,7 @@ function StudentNotizNeu()
|
||||
}
|
||||
|
||||
//Ausgewaehlte ID holen
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id = tree.view.getCellText(tree.currentIndex,col);
|
||||
|
||||
window.open("<?php echo APP_ROOT; ?>content/notizdialog.xul.php?anrechnung_id="+anrechnung_id,"","chrome, status=no, width=500, height=500, centerscreen, resizable");
|
||||
@@ -4565,7 +4515,7 @@ function StudentAnrechnungNeu()
|
||||
|
||||
document.getElementById("student-anrechnungen-menulist-kompatible_lehrveranstaltung-row").hidden = true;
|
||||
StudentAnrechnungDetailDisableFields(false);
|
||||
StudentAnrechnungResetNotizLabel();
|
||||
StudentAnrechnungResetNotizLabel();
|
||||
|
||||
// Prestudent-ID in hidden field speichern
|
||||
var col = tree.columns ? tree.columns["student-treecol-prestudent_id"] : "student-treecol-prestudent_id";
|
||||
@@ -4751,7 +4701,7 @@ function StudentAnrechnungDelete()
|
||||
}
|
||||
|
||||
//Ausgewaehlte ID holen
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id = tree.view.getCellText(tree.currentIndex,col);
|
||||
|
||||
// Studiengang ermitteln
|
||||
@@ -4793,7 +4743,7 @@ function StudentAnrechnungDelete()
|
||||
// ****
|
||||
function StudentAnrechnungResetNotizLabel()
|
||||
{
|
||||
document.getElementById('student-anrechnungen-button-notiz').label = "Notiz hinzufügen";
|
||||
document.getElementById('student-anrechnungen-button-notiz').label = "Notiz hinzufügen";
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -4809,7 +4759,7 @@ function StudentAnrechnungAuswahl()
|
||||
StudentAnrechnungDetailDisableFields(false);
|
||||
|
||||
//Ausgewaehlte ID holen
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id = tree.view.getCellText(tree.currentIndex,col);
|
||||
|
||||
// Prestudent-ID in hidden field speichern
|
||||
@@ -4821,7 +4771,7 @@ function StudentAnrechnungAuswahl()
|
||||
var url = '<?php echo APP_ROOT ?>rdf/anrechnung.rdf.php?anrechnung_id='+anrechnung_id+'&'+gettimestamp();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
var dsource = rdfService.GetDataSourceBlocking(url);
|
||||
var dsource = rdfService.GetDataSourceBlocking(url);
|
||||
var subject = rdfService.GetResource("http://www.technikum-wien.at/anrechnung/" + anrechnung_id);
|
||||
var predicateNS = "http://www.technikum-wien.at/anrechnung/rdf";
|
||||
|
||||
@@ -5198,46 +5148,6 @@ function StudentCreateDiplSupplement(event)
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=diplomasupplement.xml.php&output='+output+'&xsl=DiplSupplement&xsl_stg_kz='+stg_kz+'&uid='+paramList,'DiplomaSupplement', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Archiviert das Diplomasupplement einer Person
|
||||
// ****
|
||||
function StudentDiplomasupplementArchivieren()
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
tree = document.getElementById('student-tree');
|
||||
|
||||
//Markierte Studenten holen
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
var paramList= '';
|
||||
var errormsg='';
|
||||
|
||||
var labelalt = document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label;
|
||||
document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label='Loading...';
|
||||
for (var t = 0; t < numRanges; t++)
|
||||
{
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (var v = start.value; v <= end.value; v++)
|
||||
{
|
||||
var col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
|
||||
var uid=tree.view.getCellText(v,col);
|
||||
stg_kz=getTreeCellText(tree,"student-treecol-studiengang_kz", v);
|
||||
|
||||
url = '<?php echo APP_ROOT; ?>content/pdfExport.php?xml=diplomasupplement.xml.php&output=pdf&xsl=DiplSupplement&xsl_stg_kz='+stg_kz+'&uid='+uid+'&archive=true';
|
||||
var req = new phpRequest(url,'','');
|
||||
|
||||
var response = req.execute();
|
||||
if(response!='')
|
||||
errormsg = errormsg + response;
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label=labelalt;
|
||||
StudentAkteTreeDatasource.Refresh(false);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Erstellt den Ausbildungsvertrag fuer einen oder mehrere Studenten
|
||||
// ****
|
||||
@@ -5284,7 +5194,7 @@ function StudentPrintAusbildungsvertrag(event)
|
||||
}
|
||||
|
||||
//PDF erzeugen
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&style_xsl=AusbildStatus&output='+output+'&prestudent_id='+paramList,'Ausbildungsvertrag', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&output='+output+'&prestudent_id='+paramList,'Ausbildungsvertrag', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
//****
|
||||
@@ -5333,7 +5243,7 @@ function StudentPrintAusbildungsvertragEnglisch(event)
|
||||
}
|
||||
|
||||
//PDF erzeugen
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&style_xsl=AusbVerEngHead&output='+output+'&prestudent_id='+paramList,'AusbildungsvertragEng', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output='+output+'&prestudent_id='+paramList,'AusbildungsvertragEng', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -5558,7 +5468,7 @@ function StudentPrestudentRolleVorruecken()
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
{
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
//markierte Rolle holen
|
||||
|
||||
@@ -77,7 +77,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#erstelltam" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-zeugnis-tree-gedruckt" label="Gedruckt" flex="2" hidden="false"
|
||||
<treecol id="student-zeugnis-tree-gedruckt" label="Gedruckt" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#gedruckt" />
|
||||
<splitter class="tree-splitter"/>
|
||||
@@ -85,6 +85,14 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#akte_id" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-zeugnis-tree-signiert" label="Signiert" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#signiert" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-zeugnis-tree-stud_selfservice" label="Selfservice" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#stud_selfservice" />
|
||||
<splitter class="tree-splitter"/>
|
||||
</treecols>
|
||||
|
||||
<template>
|
||||
@@ -96,22 +104,48 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#erstelltam"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#gedruckt"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#akte_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#signiert"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#stud_selfservice"/>
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</template>
|
||||
</tree>
|
||||
</groupbox>
|
||||
<vbox id="student-zeugnis-buttons">
|
||||
<spacer flex="1"/>
|
||||
<button id="student-zeugnis-button-archivieren" label="aktuelles Zeugnis archivieren" disabled="false" oncommand="StudentZeugnisArchivieren()"/>
|
||||
<button id="student-zeugnis-button-archivieren-englisch" label="aktuelles Zeugnis archivieren (englisch)" disabled="false" oncommand="StudentZeugnisArchivieren('eng')"/>
|
||||
<button id="student-zeugnis-button-archivieren-diplomasupplement" label="Diplomasupplement archivieren" disabled="false" oncommand="StudentDiplomasupplementArchivieren()"/>
|
||||
<button id="student-bescheid-button-archivieren" label="Bescheid archivieren" disabled="false" oncommand="StudentBescheidArchivieren()"/>
|
||||
<button id="student-bescheid-button-archivieren-englisch" label="Bescheid archivieren (englisch)" disabled="false" oncommand="StudentBescheidArchivieren('eng')"/>
|
||||
<spacer flex="1"/>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<groupbox id="student-zeugnis-groupbox-archive">
|
||||
<caption label="Dokument archivieren" />
|
||||
<grid id="student-zeugnis-grid-archive" style="margin:4px;" flex="3">
|
||||
<columns >
|
||||
<column flex="1"/>
|
||||
<column flex="8"/>
|
||||
<column flex="2"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value="Dokument" control="student-zeugnis-menulist-dokument"/>
|
||||
<menulist id="student-zeugnis-menulist-dokument"
|
||||
datasources="../rdf/vorlage.rdf.php" flex="1"
|
||||
ref="http://www.technikum-wien.at/vorlage"
|
||||
style="min-width:300px" >
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem value="rdf:http://www.technikum-wien.at/vorlage/rdf#vorlage_kurzbz"
|
||||
label="rdf:http://www.technikum-wien.at/vorlage/rdf#bezeichnung"
|
||||
uri="rdf:*"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
<button id="student-zeugnis-button-archive" label="Archivieren" disabled="false" oncommand="StudentZeugnisDokumentArchivieren()"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</groupbox>
|
||||
<spacer flex="1" />
|
||||
</hbox>
|
||||
<vbox>
|
||||
</vbox>
|
||||
<spacer flex="8" />
|
||||
</vbox>
|
||||
</overlay>
|
||||
|
||||
+292
-358
@@ -1,358 +1,292 @@
|
||||
<?php
|
||||
/* Copyright (C) 2012 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
*/
|
||||
/* Erstellt ein Dokument zum Drucken der Zutrittskarten
|
||||
*
|
||||
* Parameter:
|
||||
* data ... Liste der UIDs mit Strichpunkt getrennt
|
||||
* type ... normal | datum - wenn datum übergeben wird, wird nur das Gueltigkeitsdatum erstellt,
|
||||
* sonst alle Kartendaten
|
||||
*
|
||||
*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/benutzer.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
require_once('../include/datum.class.php');
|
||||
require_once('../include/mitarbeiter.class.php');
|
||||
require_once('../include/konto.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/student.class.php');
|
||||
require_once('../include/studiengang.class.php');
|
||||
require_once('../include/benutzerfunktion.class.php');
|
||||
require_once('../include/organisationseinheit.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
|
||||
$datum_obj = new datum();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if(!$rechte->isBerechtigt('mitarbeiter/stammdaten') && !$rechte->isBerechtigt('student/stammdaten'))
|
||||
{
|
||||
die('Sie haben keine Berechtigung fuer diese Seite');
|
||||
}
|
||||
|
||||
//UIDs werden entweder als data Parameter mit ";" getrennt übergeben
|
||||
$uid = isset($_REQUEST['data'])?$_REQUEST['data']:'';
|
||||
//ODER als POST Array über den Parameter users
|
||||
$users = isset($_REQUEST['users'])?$_REQUEST['users']:'';
|
||||
$type = isset($_REQUEST['type'])?$_REQUEST['type']:'normal';
|
||||
$output = isset($_REQUEST['output'])?$_REQUEST['output']:'pdf';
|
||||
if($uid=='' && $users=='')
|
||||
die('Parameter data is missing');
|
||||
|
||||
$uid_arr = array();
|
||||
if($users!='')
|
||||
$uid_arr = $users;
|
||||
else
|
||||
$uid_arr = explode(';',$uid);
|
||||
|
||||
// Wenn Array mehrere Elemente hat und erstes Element im Array leer ist -> entfernen
|
||||
if (isset($uid_arr[1]) && $uid_arr[0] == '')
|
||||
array_shift($uid_arr);
|
||||
|
||||
// Tempordner fuer das erstellen des ODT anlegen
|
||||
$tempfolder = '/tmp/'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
|
||||
// Unterordner fuer die Bilder erstellen
|
||||
mkdir('Pictures');
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz=0;
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Vorlage des Studiengangs aus $uid_arr ermitteln (1. Studierender im Array)
|
||||
if($uid_arr[0] != '')
|
||||
{
|
||||
$student_obj = new student();
|
||||
if($student_obj->load($uid_arr[0]))
|
||||
{
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Vorlage der Zutrittskarte laden
|
||||
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage = new vorlage();
|
||||
if(!$vorlage->getAktuelleVorlage($xsl_stg_kz, 'Zutrittskarte'))
|
||||
die($vorlage->errormsg);
|
||||
$xsl_content = $vorlage->text;
|
||||
|
||||
// Vorlage ODT in den Temp Ordner kopieren
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.odt';
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
// XML mit den Personendaten erstellen
|
||||
$xml ="<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
|
||||
<zutrittskarte>";
|
||||
|
||||
foreach($uid_arr as $uid)
|
||||
{
|
||||
$bn = new benutzer();
|
||||
if($bn->load($uid))
|
||||
{
|
||||
$gueltigbis = '';
|
||||
|
||||
// Bild der Person holen
|
||||
$bild = $qry = "SELECT inhalt as foto FROM public.tbl_akte WHERE dokument_kurzbz='Lichtbil' AND person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
$cTmpHEX='/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q==';
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
//Wenn kein Lichtbild in den Akten vorhanden ist, Foto aus tbl_person holen
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$cTmpHEX = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
//Wenn der Inhalt des Lichtbilds leer ist, Foto aus tbl_person holen
|
||||
if ($row->foto =='')
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$cTmpHEX = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
$cTmpHEX = $row->foto;
|
||||
}
|
||||
}
|
||||
|
||||
// Bild in den Temp Ordner zwischenspeichern
|
||||
file_put_contents($tempfolder.'/Pictures/'.$bn->uid.'.jpg',base64_decode($cTmpHEX));
|
||||
|
||||
// Bild zum Manifest-File des ODTs hinzufuegen
|
||||
addImageToManifest($tempname_zip, 'Pictures/'.$bn->uid.'.jpg', $contenttype='image/jpeg');
|
||||
|
||||
if(check_lektor($uid))
|
||||
{
|
||||
$ma = new mitarbeiter();
|
||||
$ma->load($uid);
|
||||
$benutzerfunktion = new benutzerfunktion();
|
||||
$benutzerfunktion->getBenutzerFunktionByUid($uid, NULL, date("Y-m-d"), date("Y-m-d"));
|
||||
if(!empty($benutzerfunktion->result[0]))
|
||||
{
|
||||
$oe = new organisationseinheit($benutzerfunktion->result[0]->oe_kurzbz);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oe = new organisationseinheit();
|
||||
}
|
||||
$xml.="
|
||||
<mitarbeiter>
|
||||
<uid><![CDATA[".$bn->uid."]]></uid>
|
||||
<vorname><![CDATA[".$bn->vorname."]]></vorname>
|
||||
<nachname><![CDATA[".$bn->nachname."]]></nachname>
|
||||
<titelpre><![CDATA[".$bn->titelpre."]]></titelpre>
|
||||
<titelpost><![CDATA[".$bn->titelpost."]]></titelpost>
|
||||
<personalnummer><![CDATA[".$ma->personalnummer."]]></personalnummer>
|
||||
<ausstellungsdatum><![CDATA[".date('d.m.Y')."]]></ausstellungsdatum>
|
||||
<gebdatum><![CDATA[".$datum_obj->formatDatum($ma->gebdatum,'d.m.Y')."]]></gebdatum>
|
||||
<organisationseinheit><![CDATA[".$oe->bezeichnung."]]></organisationseinheit>
|
||||
</mitarbeiter>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$student = new student();
|
||||
$student->load($bn->uid);
|
||||
$konto = new konto();
|
||||
$studiengang = new studiengang();
|
||||
$studiengang->load($student->studiengang_kz);
|
||||
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
$stsem_obj->load($stsem);
|
||||
|
||||
if($konto->checkStudienbeitrag($bn->uid, $stsem_obj->studiensemester_kurzbz))
|
||||
{
|
||||
$gueltigbis=$stsem_obj->ende;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Studiengebuehr noch nicht bezahlt
|
||||
$gueltigbis=$stsem_obj->ende;
|
||||
}
|
||||
|
||||
if($type=='datum')
|
||||
{
|
||||
//Nur der Datumsstempel wird erstellt
|
||||
$xml.="
|
||||
<datum>
|
||||
<gueltigbis><![CDATA[".$datum_obj->formatDatum($gueltigbis,'d/m/Y')."]]></gueltigbis>
|
||||
</datum>";
|
||||
}
|
||||
else
|
||||
{
|
||||
//Student
|
||||
$xml.="
|
||||
<student>
|
||||
<uid><![CDATA[".$bn->uid."]]></uid>
|
||||
<vorname><![CDATA[".$bn->vorname."]]></vorname>
|
||||
<nachname><![CDATA[".$bn->nachname."]]></nachname>
|
||||
<titelpre><![CDATA[".$bn->titelpre."]]></titelpre>
|
||||
<titelpost><![CDATA[".$bn->titelpost."]]></titelpost>
|
||||
<studiengang><![CDATA[".$studiengang->kurzbzlang."]]></studiengang>
|
||||
<gebdatum><![CDATA[".$datum_obj->formatDatum($bn->gebdatum,'d.m.Y')."]]></gebdatum>
|
||||
<matrikelnummer><![CDATA[".$student->matrikelnr."]]></matrikelnummer>
|
||||
<ausstellungsdatum><![CDATA[".date('M.Y')."]]></ausstellungsdatum>
|
||||
<gueltigbis><![CDATA[".$datum_obj->formatDatum($gueltigbis,'d.m.Y')."]]></gueltigbis>
|
||||
</student>";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$xml.="</zutrittskarte>";
|
||||
|
||||
// XSL-Vorlage von content.xml laden
|
||||
$xsl_doc = new DOMDocument;
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('Fehler beim Laden der XSL Vorlage von content.xml.');
|
||||
|
||||
// XML Dokument in ein DOM Objekt laden
|
||||
$xml_doc = new DOMDocument;
|
||||
if(!$xml_doc->loadXML($xml))
|
||||
die('Fehler beim Laden des XML');
|
||||
|
||||
// XSL File in den Processor laden
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc);
|
||||
|
||||
// XSL-Transformation starten
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
|
||||
// Konvertierte content.xml ins Filesystem schreiben
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
//Debugging XML
|
||||
//file_put_contents('Pictures/out.xml', $xml);
|
||||
|
||||
// Bilder zum ZIP-File hinzufuegen
|
||||
exec("zip $tempname_zip Pictures/*");
|
||||
|
||||
// content.xml ins ZIP-File hinzufuegen
|
||||
exec("zip $tempname_zip content.xml");
|
||||
|
||||
if($output=='pdf')
|
||||
{
|
||||
exec("unoconv --stdout -f pdf $tempname_zip > out.pdf");
|
||||
$tempname_zip='out.pdf';
|
||||
}
|
||||
|
||||
//Ausgeben des Dokuments
|
||||
clearstatcache();
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
if($output=='pdf')
|
||||
{
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$vorlage->vorlage_kurzbz.'.pdf"');
|
||||
}
|
||||
else
|
||||
{
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="'.$vorlage->vorlage_kurzbz.'.odt"');
|
||||
}
|
||||
header('Content-Length: '.$fsize);
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
//Loeschen der Temporaeren Dateien
|
||||
//unlink('content.xml');
|
||||
//Unlinking Pictures ?
|
||||
//unlink($tempname_zip);
|
||||
//rmdir($tempfolder);
|
||||
exec('rm -r '.$tempfolder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fuegt ein Bild zur Manifest-Datei eines ODT Files hinzu
|
||||
*
|
||||
* @param $zip Zip Pfad
|
||||
* @param $image Bild Pfad
|
||||
* @param $contenttype Content-Type des Bildes
|
||||
*/
|
||||
function addImageToManifest($zip, $image, $contenttype='image/png')
|
||||
{
|
||||
// Manifest Datei holen
|
||||
exec('unzip '.$zip.' META-INF/manifest.xml');
|
||||
// Bild zur Manifest Datei hinzufuegen
|
||||
$manifest = file_get_contents('META-INF/manifest.xml');
|
||||
$xml_doc = new DOMDocument;
|
||||
if(!$xml_doc->loadXML($manifest))
|
||||
die('Manifest File ungueltig');
|
||||
//root-node holen
|
||||
$root = $xml_doc->getElementsByTagName('manifest')->item(0);
|
||||
|
||||
//Neues Element unterhalb des Root Nodes anlegen
|
||||
$node = $xml_doc->createElement("manifest:file-entry");
|
||||
$node->setAttribute("manifest:media-type",$contenttype);
|
||||
$node->setAttribute("manifest:full-path",$image);
|
||||
$root->appendChild($node);
|
||||
$out = $xml_doc->saveXML();
|
||||
|
||||
//geaenderte Manifest Datei speichern und wieder ins Zip packen
|
||||
file_put_contents('META-INF/manifest.xml', $out);
|
||||
exec('zip '.$zip.' META-INF/*');
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/* Copyright (C) 2012 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
*/
|
||||
/* Erstellt ein Dokument zum Drucken der Zutrittskarten
|
||||
*
|
||||
* Parameter:
|
||||
* data ... Liste der UIDs mit Strichpunkt getrennt
|
||||
* type ... normal | datum - wenn datum übergeben wird, wird nur das Gueltigkeitsdatum erstellt,
|
||||
* sonst alle Kartendaten
|
||||
*
|
||||
*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/benutzer.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
require_once('../include/datum.class.php');
|
||||
require_once('../include/mitarbeiter.class.php');
|
||||
require_once('../include/konto.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/student.class.php');
|
||||
require_once('../include/studiengang.class.php');
|
||||
require_once('../include/benutzerfunktion.class.php');
|
||||
require_once('../include/organisationseinheit.class.php');
|
||||
require_once('../include/dokument_export.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
|
||||
$datum_obj = new datum();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if (!$rechte->isBerechtigt('mitarbeiter/stammdaten') && !$rechte->isBerechtigt('student/stammdaten'))
|
||||
{
|
||||
die('Sie haben keine Berechtigung fuer diese Seite');
|
||||
}
|
||||
|
||||
//UIDs werden entweder als data Parameter mit ";" getrennt übergeben
|
||||
$uid = isset($_REQUEST['data'])?$_REQUEST['data']:'';
|
||||
//ODER als POST Array über den Parameter users
|
||||
$users = isset($_REQUEST['users'])?$_REQUEST['users']:'';
|
||||
$type = isset($_REQUEST['type'])?$_REQUEST['type']:'normal';
|
||||
$output = isset($_REQUEST['output'])?$_REQUEST['output']:'pdf';
|
||||
if ($uid == '' && $users == '')
|
||||
die('Parameter data is missing');
|
||||
|
||||
$images = array();
|
||||
$uid_arr = array();
|
||||
if ($users != '')
|
||||
$uid_arr = $users;
|
||||
else
|
||||
$uid_arr = explode(';', $uid);
|
||||
|
||||
// Wenn Array mehrere Elemente hat und erstes Element im Array leer ist -> entfernen
|
||||
if (isset($uid_arr[1]) && $uid_arr[0] == '')
|
||||
array_shift($uid_arr);
|
||||
|
||||
// Tempordner fuer das erstellen des ODT anlegen
|
||||
$tempfolder = '/tmp/fhc-'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
|
||||
// Unterordner fuer die Bilder erstellen
|
||||
mkdir('Pictures');
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz = 0;
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if (isset($_GET['xsl_stg_kz']))
|
||||
{
|
||||
$xsl_stg_kz = $_GET['xsl_stg_kz'];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if (isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz = $_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Vorlage des Studiengangs aus $uid_arr ermitteln (1. Studierender im Array)
|
||||
if ($uid_arr[0] != '')
|
||||
{
|
||||
$student_obj = new student();
|
||||
if ($student_obj->load($uid_arr[0]))
|
||||
{
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Vorlage der Zutrittskarte laden
|
||||
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
|
||||
$xsl_oe_kurzbz = '';
|
||||
$stg = new studiengang();
|
||||
if ($stg->load($xsl_stg_kz))
|
||||
{
|
||||
$xsl_oe_kurzbz = $stg->oe_kurzbz;
|
||||
}
|
||||
else
|
||||
die('Unknown Studiengang');
|
||||
|
||||
$dokument = new dokument_export('Zutrittskarte', $xsl_oe_kurzbz);
|
||||
$filename = 'Zutrittskarte';
|
||||
|
||||
foreach ($uid_arr as $uid)
|
||||
{
|
||||
$bn = new benutzer();
|
||||
if ($bn->load($uid))
|
||||
{
|
||||
$gueltigbis = '';
|
||||
|
||||
// Bild der Person holen
|
||||
$qry = "SELECT
|
||||
inhalt as foto
|
||||
FROM
|
||||
public.tbl_akte
|
||||
WHERE
|
||||
dokument_kurzbz = 'Lichtbil'
|
||||
AND person_id = ".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
$b64bild = '/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/';
|
||||
$b64bild .= '9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/';
|
||||
$b64bild .= '9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/';
|
||||
$b64bild .= '8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/';
|
||||
$b64bild .= 'EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q==';
|
||||
|
||||
if ($result = $db->db_query($qry))
|
||||
{
|
||||
//Wenn kein Lichtbild in den Akten vorhanden ist, Foto aus tbl_person holen
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person
|
||||
WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if ($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if ($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if ($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$b64bild = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
//Wenn der Inhalt des Lichtbilds leer ist, Foto aus tbl_person holen
|
||||
if ($row->foto == '')
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person
|
||||
WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if ($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if ($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if ($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$b64bild = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
$b64bild = $row->foto;
|
||||
}
|
||||
}
|
||||
|
||||
$imagefilename = $tempfolder.'/Pictures/'.$bn->uid.'.jpg';
|
||||
// Bild in den Temp Ordner zwischenspeichern
|
||||
file_put_contents($imagefilename, base64_decode($b64bild));
|
||||
|
||||
$images[] = $imagefilename;
|
||||
// Bild zum Manifest-File des ODTs hinzufuegen
|
||||
$dokument->addImage($imagefilename, $bn->uid.'.jpg', 'image/jpg');
|
||||
|
||||
if (check_lektor($uid))
|
||||
{
|
||||
$ma = new mitarbeiter();
|
||||
$ma->load($uid);
|
||||
$benutzerfunktion = new benutzerfunktion();
|
||||
$benutzerfunktion->getBenutzerFunktionByUid($uid, null, date("Y-m-d"), date("Y-m-d"));
|
||||
if (!empty($benutzerfunktion->result[0]))
|
||||
{
|
||||
$oe = new organisationseinheit($benutzerfunktion->result[0]->oe_kurzbz);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oe = new organisationseinheit();
|
||||
}
|
||||
$data[]['mitarbeiter'] = array(
|
||||
'uid' => $bn->uid,
|
||||
'vorname' => $bn->vorname,
|
||||
'nachname' => $bn->nachname,
|
||||
'titelpre' => $bn->titelpre,
|
||||
'titepost' => $bn->titelpost,
|
||||
'personalnummer' => $ma->personalnummer,
|
||||
'ausstellungsdatum' => date('d.m.Y'),
|
||||
'gebdatum' => $datum_obj->formatDatum($ma->gebdatum, 'd.m.Y'),
|
||||
'organisationseinheit' => $oe->bezeichnung
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$student = new student();
|
||||
$student->load($bn->uid);
|
||||
$konto = new konto();
|
||||
$studiengang = new studiengang();
|
||||
$studiengang->load($student->studiengang_kz);
|
||||
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
$stsem_obj->load($stsem);
|
||||
|
||||
if ($konto->checkStudienbeitrag($bn->uid, $stsem_obj->studiensemester_kurzbz))
|
||||
{
|
||||
$gueltigbis = $stsem_obj->ende;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Studiengebuehr noch nicht bezahlt
|
||||
$gueltigbis = $stsem_obj->ende;
|
||||
}
|
||||
|
||||
if ($type == 'datum')
|
||||
{
|
||||
//Nur der Datumsstempel wird erstellt
|
||||
$data[]['datum'] = array(
|
||||
'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd/m/Y')
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[]['student'] = array(
|
||||
'uid' => $bn->uid,
|
||||
'vorname' => $bn->vorname,
|
||||
'nachname' => $bn->nachname,
|
||||
'titelpre' => $bn->titelpre,
|
||||
'titepost' => $bn->titelpost,
|
||||
'studiengang' => $studiengang->kurzbzlang,
|
||||
'gebdatum' => $datum_obj->formatDatum($bn->gebdatum, 'd.m.Y'),
|
||||
'matrikelnummer' => $student->matrikelnr,
|
||||
'ausstellungsdatum' => date('M.Y'),
|
||||
'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd.m.Y')
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$dokument->addDataArray($data, 'zutrittskarte');
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
if (!$dokument->create($output))
|
||||
die($dokument->errormsg);
|
||||
|
||||
$dokument->output();
|
||||
$dokument->close();
|
||||
|
||||
// Cleanup Temp Images
|
||||
foreach($images as $image)
|
||||
{
|
||||
if(file_exists($image))
|
||||
unlink($image);
|
||||
}
|
||||
rmdir($tempfolder.'/Pictures');
|
||||
rmdir($tempfolder);
|
||||
|
||||
+105
-7
@@ -51,6 +51,9 @@ class akte extends basis_db
|
||||
public $nachgereicht_am;
|
||||
public $ausstellungsnation;
|
||||
public $formal_geprueft_amum;
|
||||
public $archiv = false;
|
||||
public $signiert = false;
|
||||
public $stud_selfservice = false;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
@@ -106,6 +109,10 @@ class akte extends basis_db
|
||||
$this->nachgereicht_am = $row->nachgereicht_am;
|
||||
$this->ausstellungsnation = $row->ausstellungsnation;
|
||||
$this->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$this->archiv = $this->db_parse_bool($row->archiv);
|
||||
$this->signiert = $this->db_parse_bool($row->signiert);
|
||||
$this->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -189,7 +196,8 @@ class akte extends basis_db
|
||||
//Neuen Datensatz anlegen
|
||||
$qry = "BEGIN;INSERT INTO public.tbl_akte (person_id, dokument_kurzbz, inhalt, mimetype, erstelltam, gedruckt, titel,
|
||||
bezeichnung, updateamum, updatevon, insertamum, insertvon, uid, dms_id, nachgereicht, anmerkung,
|
||||
titel_intern, anmerkung_intern, nachgereicht_am, ausstellungsnation, formal_geprueft_amum) VALUES (".
|
||||
titel_intern, anmerkung_intern, nachgereicht_am, ausstellungsnation, formal_geprueft_amum,
|
||||
archiv, signiert, stud_selfservice) VALUES (".
|
||||
$this->db_add_param($this->person_id, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->dokument_kurzbz).', '.
|
||||
$this->db_add_param($this->inhalt).', '.
|
||||
@@ -210,7 +218,10 @@ class akte extends basis_db
|
||||
$this->db_add_param($this->anmerkung_intern).','.
|
||||
$this->db_add_param($this->nachgereicht_am).','.
|
||||
$this->db_add_param($this->ausstellungsnation).','.
|
||||
$this->db_add_param($this->formal_geprueft_amum).');';
|
||||
$this->db_add_param($this->formal_geprueft_amum).','.
|
||||
$this->db_add_param($this->archiv, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->signiert, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -234,7 +245,10 @@ class akte extends basis_db
|
||||
" anmerkung_intern=".$this->db_add_param($this->anmerkung_intern).",".
|
||||
" nachgereicht_am=".$this->db_add_param($this->nachgereicht_am).",".
|
||||
" ausstellungsnation=".$this->db_add_param($this->ausstellungsnation).",".
|
||||
" formal_geprueft_amum=".$this->db_add_param($this->formal_geprueft_amum).
|
||||
" formal_geprueft_amum=".$this->db_add_param($this->formal_geprueft_amum).",".
|
||||
" archiv=".$this->db_add_param($this->archiv, FHC_BOOLEAN).",".
|
||||
" signiert=".$this->db_add_param($this->signiert, FHC_BOOLEAN).",".
|
||||
" stud_selfservice=".$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).
|
||||
" WHERE akte_id=".$this->db_add_param($this->akte_id, FHC_INTEGER);
|
||||
}
|
||||
|
||||
@@ -285,13 +299,13 @@ class akte extends basis_db
|
||||
* nicht mehr angezeigt werden
|
||||
* @return true wenn ok, sonst false
|
||||
*/
|
||||
public function getAkten($person_id, $dokument_kurzbz=null, $stg_kz = null, $prestudent_id= null)
|
||||
public function getAkten($person_id, $dokument_kurzbz=null, $stg_kz = null, $prestudent_id = null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, dms_id, anmerkung, nachgereicht,
|
||||
CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden,
|
||||
nachgereicht_am, ausstellungsnation, formal_geprueft_amum
|
||||
nachgereicht_am, ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
|
||||
if($dokument_kurzbz!=null)
|
||||
$qry.=" AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz);
|
||||
@@ -334,6 +348,9 @@ class akte extends basis_db
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
@@ -359,7 +376,7 @@ class akte extends basis_db
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid,
|
||||
dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am,
|
||||
ausstellungsnation, formal_geprueft_amum
|
||||
ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
|
||||
|
||||
$qry.=" AND dokument_kurzbz IN ('Lebenslf','Motivat','LearnAgr')";
|
||||
@@ -393,6 +410,9 @@ class akte extends basis_db
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
@@ -417,7 +437,7 @@ class akte extends basis_db
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid,
|
||||
dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am,
|
||||
ausstellungsnation, formal_geprueft_amum
|
||||
ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM public.tbl_akte WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)."
|
||||
ORDER BY erstelltam";
|
||||
|
||||
@@ -449,6 +469,84 @@ class akte extends basis_db
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert die Archivdokumente einer Person
|
||||
*
|
||||
* @param $person_id ID der Person.
|
||||
* @param $signiert Boolean Wenn true werden nur Dokumente geliefert die digital signiert wurden.
|
||||
* @param $stud_selfservice Boolean Wenn true werden nur Dokumente geliefert die Studierende selbst herunterladen duerfen.
|
||||
* @return true wenn ok, sonst false
|
||||
*/
|
||||
public function getArchiv($person_id, $signiert = null, $stud_selfservice = null)
|
||||
{
|
||||
$qry = "
|
||||
SELECT
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, dms_id, anmerkung, nachgereicht,
|
||||
CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden,
|
||||
nachgereicht_am, ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM
|
||||
public.tbl_akte
|
||||
WHERE
|
||||
person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
|
||||
AND archiv = true";
|
||||
|
||||
if(!is_null($signiert))
|
||||
$qry.=" AND signiert=".($signiert?'true':'false');
|
||||
if(!is_null($stud_selfservice))
|
||||
$qry.=" AND stud_selfservice=".($stud_selfservice?'true':'false');
|
||||
|
||||
$qry.=" ORDER BY erstelltam";
|
||||
|
||||
$this->errormsg = $qry;
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$akten = new akte();
|
||||
|
||||
$akten->akte_id = $row->akte_id;
|
||||
$akten->person_id = $row->person_id;
|
||||
$akten->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
//$akte->inhalt = $row->inhalt;
|
||||
$akten->inhalt_vorhanden = $this->db_parse_bool($row->inhalt_vorhanden);
|
||||
$akten->mimetype = $row->mimetype;
|
||||
$akten->erstelltam = $row->erstelltam;
|
||||
$akten->gedruckt = $this->db_parse_bool($row->gedruckt);
|
||||
$akten->titel = $row->titel;
|
||||
$akten->bezeichnung = $row->bezeichnung;
|
||||
$akten->updateamum = $row->updateamum;
|
||||
$akten->updatevon = $row->updatevon;
|
||||
$akten->insertamum = $row->insertamum;
|
||||
$akten->insertvon = $row->insertvon;
|
||||
$akten->uid = $row->uid;
|
||||
$akten->dms_id = $row->dms_id;
|
||||
$akten->nachgereicht = $this->db_parse_bool($row->nachgereicht);
|
||||
$akten->anmerkung = $row->anmerkung;
|
||||
$akten->titel_intern = $row->titel_intern;
|
||||
$akten->anmerkung_intern = $row->anmerkung_intern;
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
|
||||
@@ -31,12 +31,16 @@ class dokument_export
|
||||
private $vorlage_file; // Vorlage ODT/ODS in das hineingezippt wird
|
||||
private $outputformat; // Datentyp des Ausgabefiles
|
||||
private $filename; // Dateiname des Ausgabefiles
|
||||
private $temp_filename;
|
||||
private $temp_folder;
|
||||
private $temp_filename; // Dateinamen des Temp. Ausgabefiles
|
||||
private $temp_folder; // Ordner in dem die Temp Dateien abgelegt werden
|
||||
private $signed_filename; // Dateiname der signierten Datei
|
||||
private $images=array();
|
||||
private $sourceDir;
|
||||
public $errormsg;
|
||||
private $unoconv_version;
|
||||
private $sign;
|
||||
private $sign_user;
|
||||
private $sign_profile;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
@@ -151,7 +155,7 @@ class dokument_export
|
||||
$this->xml_data = new DOMDocument;
|
||||
|
||||
if(!$this->xml_data->load($xml_url))
|
||||
die('unable to load xml: '.$xml_url);
|
||||
die('unable to load xml: '.$xml_url.' XML:'.$xml.' PARAMs:'.$params);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -298,6 +302,9 @@ class dokument_export
|
||||
|
||||
}
|
||||
|
||||
if($this->sign)
|
||||
return $this->_sign();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -309,10 +316,18 @@ class dokument_export
|
||||
*/
|
||||
public function output($download=true)
|
||||
{
|
||||
|
||||
$fsize = filesize($this->temp_filename);
|
||||
if(!$handle = fopen($this->temp_filename,'r'))
|
||||
die('load failed');
|
||||
if($this->signed_filename!='')
|
||||
{
|
||||
$fsize = filesize($this->signed_filename);
|
||||
if(!$handle = fopen($this->signed_filename,'r'))
|
||||
die('load failed');
|
||||
}
|
||||
else
|
||||
{
|
||||
$fsize = filesize($this->temp_filename);
|
||||
if(!$handle = fopen($this->temp_filename,'r'))
|
||||
die('load failed');
|
||||
}
|
||||
|
||||
if($download)
|
||||
{
|
||||
@@ -368,6 +383,10 @@ class dokument_export
|
||||
unlink('styles.xml');
|
||||
|
||||
unlink($this->temp_filename);
|
||||
|
||||
if($this->signed_filename != '')
|
||||
unlink($this->signed_filename);
|
||||
|
||||
if(file_exists("out.zip"))
|
||||
unlink('out.zip');
|
||||
|
||||
@@ -461,5 +480,99 @@ class dokument_export
|
||||
{
|
||||
$this->filename = $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Markiert das Dokument zur Signatur
|
||||
* Fuegt automatisch einen XML Tag fuer Signatur zun Dokument hinzu
|
||||
* @param $user User der die Signatur erstellen will
|
||||
* @param $profile Signaturprofil mit der das Dokument signiert werden soll (Optional)
|
||||
*/
|
||||
public function sign($user, $profile = null)
|
||||
{
|
||||
$this->sign = true;
|
||||
$this->sign_user = $user;
|
||||
$this->sign_profile = $profile;
|
||||
|
||||
$signblock = $this->xml_data->createElement("signed","true");
|
||||
$this->xml_data->documentElement->appendChild($signblock);
|
||||
}
|
||||
|
||||
/**
|
||||
* Schickt das Dokument an den Signaturserver um dieses mit einer Amtssignatur zu versehen
|
||||
* Es koennen nur PDFs signiert werden
|
||||
*/
|
||||
private function _sign()
|
||||
{
|
||||
if($this->outputformat != 'pdf')
|
||||
{
|
||||
$this->errormsg = 'Derzeit koennen nur PDFs signiert werden';
|
||||
return false;
|
||||
}
|
||||
|
||||
// Load the File
|
||||
$file_data = file_get_contents($this->temp_filename);
|
||||
|
||||
$data = new stdClass();
|
||||
$data->document = base64_encode($file_data);
|
||||
|
||||
// Signatur Profil
|
||||
if(!is_null($this->sign_profile))
|
||||
$data->profile = $this->sign_profile;
|
||||
else
|
||||
$data->profile = SIGNATUR_DEFAULT_PROFILE;
|
||||
|
||||
// Username des Endusers der die Signatur angefordert hat
|
||||
$data->user = $this->sign_user;
|
||||
|
||||
$ch = curl_init();
|
||||
|
||||
curl_setopt($ch, CURLOPT_URL, SIGNATUR_URL);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 7);
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, "FH-Complete");
|
||||
|
||||
// SSL Zertifikatsprüfung deaktivieren
|
||||
// Besser ist es das Zertifikat am Server zu installieren!
|
||||
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
|
||||
$data_string = json_encode($data,JSON_FORCE_OBJECT);
|
||||
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json',
|
||||
'Content-Length:'.mb_strlen($data_string),
|
||||
'Authorization: Basic '.base64_encode(SIGNATUR_USER.":".SIGNATUR_PASSWORD)
|
||||
)
|
||||
);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch))
|
||||
{
|
||||
curl_close($ch);
|
||||
$this->errormsg = 'Signaturserver ist derzeit nicht erreichbar';
|
||||
}
|
||||
else
|
||||
{
|
||||
curl_close($ch);
|
||||
$resultdata = json_decode($result);
|
||||
|
||||
if (isset($resultdata->success) && $resultdata->success == 'true')
|
||||
{
|
||||
$this->signed_filename = $this->temp_folder .'/signed.pdf';
|
||||
file_put_contents($this->signed_filename, base64_decode($resultdata->document));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($resultdata->errormsg))
|
||||
$this->errormsg = $resultdata->errormsg;
|
||||
else
|
||||
$this->errormsg = 'Unknown Error:'.print_r($resultdata,true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/**
|
||||
* Erstellt ein PDF mithilfe Apache FOP
|
||||
*
|
||||
* $xml = file_get_contents('/path/to/your/xmlfile.xml');
|
||||
* $xsl = file_get_contenst('/path/to/your/xslfile.xsl');
|
||||
* $fop = new fop();
|
||||
* $pdf_filename = $fop->create_pdf($xml, $xsl);
|
||||
*/
|
||||
class fop
|
||||
{
|
||||
var $xml;
|
||||
var $xsl;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//Apache FOP
|
||||
}
|
||||
|
||||
public function generatePdf($xml, $xsl, $filename, $destination)
|
||||
{
|
||||
$tmppdf = tempnam('/tmp', 'FAS_FOP');
|
||||
|
||||
$tmpxml = tempnam('/tmp', 'FAS_FOP');
|
||||
$tmpxsl = tempnam('/tmp', 'FAS_FOP');
|
||||
|
||||
$bytes1 = file_put_contents($tmpxml, $xml);
|
||||
$bytes2 = file_put_contents($tmpxsl, $xsl);
|
||||
|
||||
|
||||
exec("fop -xml {$tmpxml} -xsl {$tmpxsl} -pdf {$tmppdf} 2>&1", $output);
|
||||
//error_log("FOP Execute: fop -xml {$tmpxml} -xsl {$tmpxsl} -pdf {$tmppdf} 2>&1 b1:$bytes1 b2: $bytes2 Output: ".print_r($output, true));
|
||||
|
||||
@unlink($tmpxml);
|
||||
@unlink($tmpxsl);
|
||||
|
||||
/*if(count($output)>0)
|
||||
exit(print_r($output, true));*/
|
||||
|
||||
switch($destination)
|
||||
{
|
||||
case "D": // Download
|
||||
$buffer = file_get_contents($tmppdf);
|
||||
if(headers_sent())
|
||||
{
|
||||
echo 'Some data has already been output to browser, can\'t send PDF file';
|
||||
break;
|
||||
}
|
||||
|
||||
if(isset($_SERVER['HTTP_USER_AGENT']) && mb_strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
|
||||
header('Content-Type: application/force-download');
|
||||
else
|
||||
header('Content-Type: application/octet-stream');
|
||||
|
||||
header('Content-Length: '.mb_strlen($buffer));
|
||||
header('Content-disposition: attachment; filename="'.$filename.'.pdf"');
|
||||
|
||||
|
||||
echo $buffer;
|
||||
unlink($tmppdf);
|
||||
break;
|
||||
case "F": // im Filesystem speichern
|
||||
break;
|
||||
|
||||
case "I": //auf Stdout ausgeben
|
||||
echo file_get_contents($tmppdf);
|
||||
break;
|
||||
}
|
||||
|
||||
return($tmppdf);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,263 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2008 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
|
||||
//PDF fuer die Anwesenheitsliste auf CIS
|
||||
|
||||
$db = new basis_db();
|
||||
|
||||
//PDF erzeugen
|
||||
$pdf = new PDF('P','pt');
|
||||
$pdf->Open();
|
||||
$pdf->AddPage();
|
||||
$pdf->AliasNbPages();
|
||||
|
||||
$pdf->SetFillColor(111,111,111);
|
||||
$pdf->SetXY(30,40);
|
||||
$stgobj=new studiengang();
|
||||
$stgobj->load($stg);
|
||||
//Logo
|
||||
$pdf->Image("../../../skin/styles/tw/logo.jpg","470","45","","50","jpg","");
|
||||
//$pdf->Image("../../../skin/images/tw_logo_02.jpg","400","30","116","43","jpg","");
|
||||
|
||||
$bezeichnung='';
|
||||
if ($lvobj = new lehrveranstaltung($lvid))
|
||||
$bezeichnung=mb_convert_encoding($lvobj->bezeichnung,'ISO-8859-15','UTF-8');
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','',16);
|
||||
$pdf->MultiCell(0,20,'Fotoliste '.$bezeichnung,0,'L',0);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetFillColor(190,190,190);
|
||||
//Bei langen Namen muss der Gruppenname etwas weiter unten angezeigt werden da er
|
||||
//sonst von der zweiten Zeile des Titels ueberschrieben wird.
|
||||
if(strlen($bezeichnung)>50)
|
||||
$pdf->SetXY(30,75);
|
||||
else
|
||||
$pdf->SetXY(30,60);
|
||||
|
||||
//$stsem_obj = new studiensemester($conn);
|
||||
//$stsem = $stsem_obj->getaktorNext();
|
||||
|
||||
$qry = "SELECT DISTINCT ON
|
||||
(kuerzel, semester, verband, gruppe, gruppe_kurzbz)
|
||||
UPPER(stg_typ::varchar(1) || stg_kurzbz) as kuerzel,
|
||||
semester,
|
||||
verband,
|
||||
gruppe,
|
||||
gruppe_kurzbz
|
||||
FROM
|
||||
campus.vw_lehreinheit
|
||||
WHERE
|
||||
lehrveranstaltung_id=".$db->db_add_param($lvid)."
|
||||
AND
|
||||
studiensemester_kurzbz=".$db->db_add_param($stsem);
|
||||
if($lehreinheit_id!='')
|
||||
$qry.=" AND lehreinheit_id=".$db->db_add_param($lehreinheit_id);
|
||||
|
||||
$gruppen='';
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
if($gruppen!='')
|
||||
$gruppen.=', ';
|
||||
if($row->gruppe_kurzbz=='')
|
||||
$gruppen.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe);
|
||||
else
|
||||
$gruppen.=$row->gruppe_kurzbz;
|
||||
}
|
||||
}
|
||||
$gruppen=mb_convert_encoding($gruppen,'ISO-8859-15','UTF-8');
|
||||
|
||||
$pdf->MultiCell(0,20,'Gruppe: '.$gruppen);
|
||||
$semester = new studiensemester($stsem);
|
||||
$pdf->MultiCell(0,20,'Studiensemester: '.(($semester->beschreibung != '') ? $semester->beschreibung : $stsem));
|
||||
|
||||
$maxY=$pdf->GetY();
|
||||
$maxY=getmax($maxY,$pdf->GetY());
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','B',12);
|
||||
|
||||
//Studenten
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$maxY=$pdf->GetY();
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
|
||||
$maxY=$pdf->GetY();
|
||||
$pdf->tablewidths = array(20,140,60,60,60); //Spaltenbreiten setzen
|
||||
$pdf->SetLeftMargin(30);
|
||||
$pdf->SetTopMargin(100); // Auch in der Funktion Header umstellen!!!
|
||||
|
||||
$aligns = array('R','L','C','C','C'); //Ausrichtung der Tabellen festlegen
|
||||
$maxY+=10;
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->SetXY(30,$maxY);
|
||||
$lineheight=10;
|
||||
|
||||
//Studenten holen
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$maxY=$pdf->GetY();
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(20,$lineheight,'',1,'R',0);
|
||||
$maxX +=20;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','B',8);
|
||||
$pdf->MultiCell(130,$lineheight,mb_convert_encoding('HörerIn/Name','ISO-8859-15','UTF-8'),1,'L',0);
|
||||
$maxX +=130;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(70,$lineheight,'Kennzeichen',1,'C',0);
|
||||
$maxX +=70;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(65,$lineheight,'Gruppe',1,'C',0);
|
||||
$maxX +=65;
|
||||
//$pdf->SetXY($maxX,$maxY);
|
||||
//$pdf->MultiCell(80,$lineheight,'Foto',1,'C',0);
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem_obj->load($stsem);
|
||||
$stsemdatumvon = $stsem_obj->start;
|
||||
$stsemdatumbis = $stsem_obj->ende;
|
||||
$qry = "SELECT
|
||||
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, foto_sperre,
|
||||
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
|
||||
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
|
||||
tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von,
|
||||
tbl_zeugnisnote.note
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
WHERE
|
||||
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid)." AND
|
||||
vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);
|
||||
|
||||
if($lehreinheit_id!='')
|
||||
$qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id=".$db->db_add_param($lehreinheit_id);
|
||||
$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC';
|
||||
|
||||
$lineheight=80;
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$i=0;
|
||||
while($elem = $db->db_fetch_object($result))
|
||||
{
|
||||
//Abbrecher und Unterbrecher nicht anzeigen
|
||||
if($elem->status!='Abbrecher' && $elem->status!='Unterbrecher')
|
||||
{
|
||||
$i++;
|
||||
if($i%2)
|
||||
$pdf->SetFillColor(190,190,190);
|
||||
else
|
||||
$pdf->SetFillColor(255,255,255);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$maxY=$pdf->GetY();
|
||||
if($maxY>660)
|
||||
{
|
||||
$pdf->AddPage();
|
||||
$maxY=$pdf->GetY();
|
||||
}
|
||||
|
||||
|
||||
$vorname=mb_convert_encoding(trim($elem->vorname),'ISO-8859-15','UTF-8');
|
||||
$nachname=mb_convert_encoding(trim($elem->nachname),'ISO-8859-15','UTF-8');
|
||||
$name="$vorname $nachname";
|
||||
|
||||
$matrikelnr=trim(mb_convert_encoding($elem->matrikelnr,'ISO-8859-15','UTF-8'));
|
||||
|
||||
$sem_verb_grup=trim(mb_convert_encoding($elem->semester.$elem->verband.$elem->gruppe,'ISO-8859-15','UTF-8'));
|
||||
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(20,$lineheight,$i,1,'R',1);
|
||||
$maxX +=20;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Courier','B',10);
|
||||
$pdf->MultiCell(130,$lineheight,$nachname,1,'L',1);
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY($maxX+strlen($nachname)*6+2,$maxY);
|
||||
if($elem->status=='Incoming')
|
||||
$inc=' (i)';
|
||||
else
|
||||
$inc='';
|
||||
|
||||
if($elem->bisio_id!='' && $elem->status!='Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis=='') && $elem->von < $stsemdatumbis) //Outgoing
|
||||
$inc.=' (o)';
|
||||
|
||||
if($elem->note==6) //angerechnet
|
||||
$inc.=' (ar)';
|
||||
|
||||
$pdf->MultiCell(130,$lineheight,$vorname.$inc,0,'L',0);
|
||||
$maxX +=130;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->MultiCell(70,$lineheight,trim($matrikelnr),1,'C',1);
|
||||
$maxX +=70;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(65,$lineheight,$sem_verb_grup,1,'C',1);
|
||||
$maxX +=65;
|
||||
// $pdf->SetXY($maxX,$maxY);
|
||||
// $pdf->MultiCell(80,$lineheight,'',0,'L',1);
|
||||
if($elem->foto_sperre=='f')
|
||||
{
|
||||
$pdf->Image(APP_ROOT."cis/public/bild.php?src=person&person_id=".$elem->person_id,$maxX+1,$maxY+1,0,"78","jpg","");
|
||||
}
|
||||
$inhalt[]=array($i,$name,$matrikelnr,$sem_verb_grup,'');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$lineheight=10;
|
||||
//Fussnote
|
||||
$maxY=$pdf->GetY()+5;
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->MultiCell(520,$lineheight,'(i) ... Incoming',0,'L',0);
|
||||
$pdf->MultiCell(520,$lineheight,'(o) ... Outgoing',0,'L',0);
|
||||
$pdf->MultiCell(520,$lineheight,'(ar) ... angerechnet',0,'L',0);
|
||||
|
||||
//FHStg
|
||||
$maxY=$pdf->GetY()+5;
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','B',8);
|
||||
|
||||
$bezeichnung=mb_convert_encoding('Fachhochschulstudiengang ('.strtoupper($stgobj->typ).') '.$stgobj->bezeichnung,'ISO-8859-15','UTF-8');
|
||||
$pdf->MultiCell(520,$lineheight,$bezeichnung,0,'L',0);
|
||||
|
||||
//FHStg
|
||||
/*
|
||||
$maxY=$pdf->GetY();
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->MultiCell(520,$lineheight,'Fehlt ein Student l�nger als 2 Wochen, bitte um einen deutlichen Vermerk auf der Anwesenheitsliste. Die Anwesenheitsliste bitte am Ende des Monats im Sekretariat abgeben! Bitte achten Sie darauf, dass Sie nur VOLLST�NDIG AUSGEF�LLTE LISTEN abgeben!',0,'L',0);
|
||||
*/
|
||||
|
||||
$pdf->Output('fotoliste.pdf','I');
|
||||
?>
|
||||
@@ -48,6 +48,11 @@ class vorlage extends basis_db
|
||||
public $anmerkung_vorlagestudiengang; // text
|
||||
public $aktiv; // boolean
|
||||
|
||||
public $archivierbar = false;
|
||||
public $signierbar = false;
|
||||
public $stud_selfservice = false;
|
||||
public $dokument_kurzbz;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
@@ -72,6 +77,10 @@ class vorlage extends basis_db
|
||||
$this->bezeichnung = $row->bezeichnung;
|
||||
$this->anmerkung = $row->anmerkung;
|
||||
$this->mimetype = $row->mimetype;
|
||||
$this->signierbar = $this->db_parse_bool($row->signierbar);
|
||||
$this->archivierbar = $this->db_parse_bool($row->archivierbar);
|
||||
$this->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
$this->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -100,18 +109,27 @@ class vorlage extends basis_db
|
||||
|
||||
if($new)
|
||||
{
|
||||
$qry = "INSERT INTO public.tbl_vorlage(vorlage_kurzbz, bezeichnung, anmerkung, mimetype) VALUES(".
|
||||
$qry = "INSERT INTO public.tbl_vorlage(vorlage_kurzbz, bezeichnung, anmerkung, mimetype,
|
||||
archivierbar, signierbar, stud_selfservice, dokument_kurzbz) VALUES(".
|
||||
$this->db_add_param($this->vorlage_kurzbz).','.
|
||||
$this->db_add_param($this->bezeichnung).','.
|
||||
$this->db_add_param($this->anmerkung).','.
|
||||
$this->db_add_param($this->mimetype).');';
|
||||
$this->db_add_param($this->mimetype).','.
|
||||
$this->db_add_param($this->archivierbar, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->signierbar, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->dokument_kurzbz).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE public.tbl_vorlage
|
||||
SET bezeichnung='.$this->db_add_param($this->bezeichnung).',
|
||||
anmerkung='.$this->db_add_param($this->anmerkung).',
|
||||
mimetype='.$this->db_add_param($this->mimetype).'
|
||||
mimetype='.$this->db_add_param($this->mimetype).',
|
||||
archivierbar='.$this->db_add_param($this->archivierbar, FHC_BOOLEAN).',
|
||||
signierbar='.$this->db_add_param($this->signierbar, FHC_BOOLEAN).',
|
||||
stud_selfservice='.$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).',
|
||||
dokument_kurzbz='.$this->db_add_param($this->dokument_kurzbz).'
|
||||
WHERE vorlage_kurzbz='.$this->db_add_param($this->vorlage_kurzbz).';';
|
||||
}
|
||||
|
||||
@@ -143,6 +161,38 @@ class vorlage extends basis_db
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->anmerkung = $row->anmerkung;
|
||||
$obj->mimetype = $row->mimetype;
|
||||
$obj->signierbar = $this->db_parse_bool($row->signierbar);
|
||||
$obj->archivierbar = $this->db_parse_bool($row->archivierbar);
|
||||
$obj->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
$obj->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
|
||||
$this->result[]= $obj;
|
||||
}
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert alle Vorlagen die archiviert werden koennen
|
||||
*/
|
||||
public function getVorlagenArchiv()
|
||||
{
|
||||
$qry ="SELECT * FROM public.tbl_vorlage WHERE archivierbar=true ORDER BY bezeichnung";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new vorlage();
|
||||
$obj->vorlage_kurzbz = $row->vorlage_kurzbz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->anmerkung = $row->anmerkung;
|
||||
$obj->mimetype = $row->mimetype;
|
||||
$obj->archivierbar = $this->db_parse_bool($row->archivierbar);
|
||||
$obj->signierbar = $this->db_parse_bool($row->signierbar);
|
||||
$obj->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
$obj->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
|
||||
$this->result[]= $obj;
|
||||
}
|
||||
@@ -311,7 +361,7 @@ class vorlage extends basis_db
|
||||
anmerkung_vorlagestudiengang='.$this->db_add_param($this->anmerkung_vorlagestudiengang).'
|
||||
WHERE vorlagestudiengang_id='.$this->db_add_param($this->vorlagestudiengang_id).';';
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -1,188 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master
|
||||
margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.75cm"
|
||||
page-width="21cm" page-height="29.7cm" master-name="first">
|
||||
<fo:region-body></fo:region-body>
|
||||
</fo:simple-page-master>
|
||||
<fo:simple-page-master
|
||||
margin-right="2.5cm" margin-left="2.5cm" margin-bottom="2cm" margin-top="1cm"
|
||||
page-width="21cm" page-height="29.7cm" master-name="rest">
|
||||
<fo:region-body></fo:region-body>
|
||||
</fo:simple-page-master>
|
||||
|
||||
<fo:page-sequence-master master-name="psmA">
|
||||
<fo:repeatable-page-master-alternatives>
|
||||
<fo:conditional-page-master-reference master-reference="first"
|
||||
page-position="first" />
|
||||
<fo:conditional-page-master-reference master-reference="rest"
|
||||
page-position="rest" />
|
||||
<!-- recommended fallback procedure -->
|
||||
<fo:conditional-page-master-reference master-reference="rest" />
|
||||
</fo:repeatable-page-master-alternatives>
|
||||
</fo:page-sequence-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="psmA">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block-container height="4cm" width="12cm" top="0cm" left="0cm" position="absolute">
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
PX7.net
|
||||
</fo:block>
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
44 Liberty St
|
||||
</fo:block>
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
Newburyport, MA 01950
|
||||
</fo:block>
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
978-462-1152
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container height="1cm" width="6cm" top="0cm" left="14cm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="22pt" font-family="sans-serif" font-size="23pt">
|
||||
Sales Receipt
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.2cm" left="13.8cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
DATE
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.87cm" left="13.8cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
01/01/2000
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.2cm" left="16.46cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
SALE #
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.87cm" left="16.46cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
1
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="8.95cm" top="3cm" left="0cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
SOLD TO
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="3cm" width="8.95cm" top="3.67cm" left="0cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="8.95cm" top="3cm" left="10cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
SHIP TO
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="3cm" width="8.95cm" top="3.67cm" left="10cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="7.25cm" left="10.74cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
PMT METHOD
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="8cm" left="10.74cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
Check
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="7.25cm" left="14.95cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
CHECK #
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="8cm" left="14.95cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
1234
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
|
||||
<fo:block-container height="17cm" width="19cm" top="9.4cm" left="0cm" position="absolute">
|
||||
<fo:table table-layout="fixed" border-collapse="separate" border-color="yellow" border-style="solid" border-width=".6mm" height="17cm">
|
||||
<fo:table-column column-width="2.5cm"/>
|
||||
<fo:table-column column-width="11.5cm"/>
|
||||
<fo:table-column column-width="2.5cm"/>
|
||||
<fo:table-column column-width="2.5cm"/>
|
||||
<fo:table-body font-family="sans-serif" font-weight="normal" font-size="10pt">
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell border-width="1pt" border-color="green" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="end">QUANTITY</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell border-width="1pt" border-color="red" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="start">DESCRIPTION</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell border-color="blue" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="center">RATE</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell border-color="orange" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="center">AMOUNT</fo:block>
|
||||
</fo:table-cell>
|
||||
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">1</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="start">Wide Widget</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">$22.23</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">22.31</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">1</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="start">Widget</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">$22.23</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">22.31</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">3</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="start">Nuts</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">$12.00</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">36.00</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width="0.5mm" height="1cm" width="13.31cm" top="26.5cm" left="0cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" line-height="15pt" font-family="sans-serif" font-size="12pt">Please remit to the above address</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width="0.5mm" height="1cm" width="2.5cm" top="26.5cm" left="13.56cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="25pt" font-family="sans-serif" font-size="22pt">Total</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width="0.5mm" height="1cm" width="2.5cm" top="26.5cm" left="16.31cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="15pt" font-family="sans-serif" font-size="10pt">$3.00</fo:block>
|
||||
</fo:block-container>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,145 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
<!-- defines page layout -->
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="first"
|
||||
page-height="29.7cm" page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<!-- end: defines page layout -->
|
||||
|
||||
<!-- actual layout -->
|
||||
<fo:page-sequence master-reference="first">
|
||||
|
||||
<!-- text body -->
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">0. Normal text without link
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center"
|
||||
font-family="serif">1. <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">
|
||||
2. A one line example (text-align='start'): <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start" hyphenate="true" language="en">
|
||||
3. A multiline text (text-align='start'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">
|
||||
4. A multiline text (text-align='centered'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="end">
|
||||
5. A multiline text (text-align='end'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="justify" hyphenate="true" language="en">
|
||||
6. A multiline text (text-align='justify'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
7. A multiline text (text-align='start', space-before.optimum=6pt, font-family=serif padding-top="3pt"). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable <fo:basic-link external-destination="normal.pdf">generic</fo:basic-link> SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
8. A multiline text (text-align='start', space-before.optimum=6pt, font-family=serif, padding-top="3pt"). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable <fo:basic-link external-destination="normal.pdf">generic</fo:basic-link> SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- Normal text -->
|
||||
<!-- <fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
8. A multiline text (text-align='start', space-before.optimum=6pt, font-family=serif, padding-top="3pt"). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable <fo:basic-link external-destination="normal.pdf">generic</fo:basic-link> SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
-->
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
9. Linking to a specific page of an external:
|
||||
<fo:basic-link external-destination="extensive.pdf#page=1">extensive.pdf, Page 2</fo:basic-link>.
|
||||
</fo:block>
|
||||
|
||||
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,149 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
|
||||
<!-- example for a simple fo file. At the beginning the page layout is set.
|
||||
Below fo:root there is always
|
||||
- a single fo:layout-master-set which defines one or more page layouts
|
||||
- an optional fo:declarations,
|
||||
- and a sequence of one or more fo:page-sequences containing the text and formatting instructions -->
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
<fo:layout-master-set>
|
||||
<!-- fo:layout-master-set defines in its children the page layout:
|
||||
the pagination and layout specifications
|
||||
- page-masters: have the role of describing the intended subdivisions
|
||||
of a page and the geometry of these subdivisions
|
||||
- page-sequence-masters: have the role of describing the sequence
|
||||
of page-masters that will be used to generate
|
||||
pages during the formatting of an fo:page-sequence
|
||||
|
||||
-->
|
||||
|
||||
<!-- layout for the first page -->
|
||||
<fo:simple-page-master master-name="first"
|
||||
page-height="21cm"
|
||||
page-width="29.7cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
|
||||
<!-- layout for the other pages -->
|
||||
<fo:simple-page-master master-name="rest"
|
||||
page-height="29.7cm"
|
||||
page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="2.5cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="2.5cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
|
||||
<fo:page-sequence-master master-name="basicPSM" >
|
||||
<fo:repeatable-page-master-alternatives>
|
||||
<fo:conditional-page-master-reference master-reference="first"
|
||||
page-position="first" />
|
||||
<fo:conditional-page-master-reference master-reference="rest"
|
||||
page-position="rest" />
|
||||
<!-- recommended fallback procedure -->
|
||||
<fo:conditional-page-master-reference master-reference="rest" />
|
||||
</fo:repeatable-page-master-alternatives>
|
||||
</fo:page-sequence-master>
|
||||
|
||||
</fo:layout-master-set>
|
||||
<!-- end: defines page layout -->
|
||||
|
||||
<!-- actual layout -->
|
||||
<fo:page-sequence master-reference="basicPSM">
|
||||
|
||||
<!-- header -->
|
||||
<fo:static-content flow-name="xsl-region-before">
|
||||
<fo:block text-align="end"
|
||||
font-size="10pt"
|
||||
font-family="serif"
|
||||
line-height="14pt" >
|
||||
XML Recommendation - p. <fo:page-number/>
|
||||
</fo:block>
|
||||
</fo:static-content>
|
||||
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- defines text title level 1-->
|
||||
<fo:block font-size="18pt"
|
||||
font-family="sans-serif"
|
||||
line-height="24pt"
|
||||
space-after.optimum="15pt"
|
||||
background-color="blue"
|
||||
color="white"
|
||||
text-align="center"
|
||||
padding-top="3pt"
|
||||
font-variant="small-caps">
|
||||
Extensible Markup Language (XML) 1.0
|
||||
</fo:block>
|
||||
|
||||
<!-- defines text title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
line-height="20pt"
|
||||
space-before.optimum="10pt"
|
||||
space-after.optimum="10pt"
|
||||
text-align="start"
|
||||
padding-top="3pt">
|
||||
Abstract
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="start">
|
||||
The <fo:inline font-variant="small-caps">Extensible Markup Language (XML)</fo:inline> is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML.
|
||||
</fo:block>
|
||||
|
||||
<!-- defines text title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
line-height="20pt"
|
||||
space-before.optimum="10pt"
|
||||
space-after.optimum="10pt"
|
||||
text-align="start"
|
||||
padding-top="3pt">
|
||||
Status of this document
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="start">
|
||||
This document has been reviewed by W3C Members and other interested parties and has been endorsed by the Director as a
|
||||
W3C Recommendation. It is a stable document and may be used as reference material or cited as a normative reference from
|
||||
another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its
|
||||
widespread deployment. This enhances the functionality and interoperability of the Web.
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="start">
|
||||
This document specifies a syntax created by subsetting an existing, widely used international text processing standard
|
||||
(Standard Generalized Markup Language, ISO 8879:1986(E) as amended and corrected) for use on the World Wide Web. It
|
||||
is a product of the W3C XML Activity, details of which can be found at http://www.w3.org/XML. A list of current W3C
|
||||
Recommendations and other technical documents can be found at http://www.w3.org/TR.
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,99 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!-- example for a simple fo file. At the beginning the page layout is set.
|
||||
Below fo:root there is always
|
||||
- a single fo:layout-master-set which defines one or more page layouts
|
||||
- an optional fo:declarations
|
||||
- and a sequence of one or more fo:page-sequences containing the text and formatting instructions
|
||||
-->
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
<fo:layout-master-set>
|
||||
<!-- fo:layout-master-set defines in its children the page layout:
|
||||
the pagination and layout specifications
|
||||
- page-masters: have the role of describing the intended subdivisions
|
||||
of a page and the geometry of these subdivisions
|
||||
In this case there is only a simple-page-master which defines the
|
||||
layout for all pages of the text
|
||||
-->
|
||||
<!-- layout information -->
|
||||
<fo:simple-page-master master-name="simple"
|
||||
page-height="29.7cm"
|
||||
page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<!-- end: defines page layout -->
|
||||
|
||||
|
||||
<!-- start page-sequence
|
||||
here comes the text (contained in flow objects)
|
||||
the page-sequence can contain different fo:flows
|
||||
the attribute value of master-name refers to the page layout
|
||||
which is to be used to layout the text contained in this
|
||||
page-sequence-->
|
||||
<fo:page-sequence master-reference="simple">
|
||||
|
||||
<!-- start fo:flow
|
||||
each flow is targeted
|
||||
at one (and only one) of the following:
|
||||
xsl-region-body (usually: normal text)
|
||||
xsl-region-before (usually: header)
|
||||
xsl-region-after (usually: footer)
|
||||
xsl-region-start (usually: left margin)
|
||||
xsl-region-end (usually: right margin)
|
||||
['usually' applies here to languages with left-right and top-down
|
||||
writing direction like English]
|
||||
in this case there is only one target: xsl-region-body
|
||||
-->
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- each paragraph is encapsulated in a block element
|
||||
the attributes of the block define
|
||||
font-family and size, line-heigth etc. -->
|
||||
|
||||
<!-- this defines a title -->
|
||||
<fo:block font-size="18pt"
|
||||
font-family="sans-serif"
|
||||
line-height="24pt"
|
||||
space-after.optimum="15pt"
|
||||
background-color="blue"
|
||||
color="white"
|
||||
text-align="center"
|
||||
padding-top="3pt">
|
||||
Extensible Markup Language (XML) 1.0
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- this defines normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="justify">
|
||||
The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML.
|
||||
</fo:block>
|
||||
|
||||
<!-- this defines normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="justify">
|
||||
The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML.
|
||||
</fo:block>
|
||||
|
||||
</fo:flow> <!-- closes the flow element-->
|
||||
</fo:page-sequence> <!-- closes the page-sequence -->
|
||||
</fo:root>
|
||||
@@ -1,504 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
|
||||
<!-- defines the layout master -->
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="first"
|
||||
page-height="29.7cm"
|
||||
page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
|
||||
<!-- starts actual layout -->
|
||||
<fo:page-sequence master-reference="first">
|
||||
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- this defines a title level 1-->
|
||||
<fo:block font-size="18pt"
|
||||
font-family="sans-serif"
|
||||
line-height="24pt"
|
||||
space-after.optimum="15pt"
|
||||
background-color="blue"
|
||||
color="white"
|
||||
text-align="center"
|
||||
padding-top="3pt">
|
||||
How to use table elements
|
||||
</fo:block>
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center">
|
||||
A simple table, 3 columns, 4 rows
|
||||
</fo:block>
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
A table with borders
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-width="0.5mm" border-style="solid" background-color="yellow">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
A table with thick borders
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-width="3mm" border-style="solid" background-color="yellow">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start" start-indent="-3mm">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
A table with borders around the cells
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-collapse="separate">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
2 tables with thick borders around the cells
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-collapse="separate">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-collapse="separate">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
5 tables with borders
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)">
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)" >
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)" >
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)">
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
line-height="20pt"
|
||||
space-after.optimum="3pt"
|
||||
break-before="page"
|
||||
text-align="justify">
|
||||
A Contents table
|
||||
</fo:block>
|
||||
|
||||
<!-- Here starts the table -->
|
||||
<fo:table table-layout="fixed">
|
||||
<fo:table-column column-width="1cm"/>
|
||||
<fo:table-column column-width="15cm"/>
|
||||
<fo:table-body font-size="10pt" font-family="sans-serif">
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">A) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">What is FOP?</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">B) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Downloading FOP</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">C) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Running FOP</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">D) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Embedding FOP </fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">E) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">What's Implemented?</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">F) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Limitations</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">G) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Bugs</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">H) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Compiling FOP</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">I) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Getting involved</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">J) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">FOP Relevant Specifications</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">K) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Licence</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,33 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:circle cx="50" cy="30" r="30" style="fill:blue;"/>
|
||||
<svg:circle cx="100" cy="30" r="20" fill="none" stroke="red" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:rect x="10" y="10" width="80" height="40" fill="blue"/>
|
||||
<svg:rect x="100" y="10" width="80" height="40" fill="none" stroke="green" rx="10"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:ellipse cx="50" cy="50" rx="20" ry="10" fill="none" stroke="red" stroke-width="2"/>
|
||||
<svg:ellipse cx="100" cy="50" rx="20" ry="10" fill="black" stroke="yellow" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:line x1="0" y1="0" x2="50" y2="50" stroke="red" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:polygon points="10,10 50,50 100,10" fill="green" stroke="red" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,21 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="100pt" height="100pt" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:circle cx="50pt" cy="50pt" r="30pt" style="fill:blue;"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="100pt" height="100pt" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:circle cx="50pt" cy="50pt" r="30pt" style="fill:green;"/>
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,58 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="50" height="100" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:path d="M 0 0 L 100 0 L 50 100 z" fill="red" stroke="blue" stroke-width="3" />
|
||||
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="210" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:polyline class="Connect" points="100,0 100,100" />
|
||||
<svg:polyline class="Connect" points="250,0 250,200" />
|
||||
<svg:polyline class="Connect" points="400,100 400,200" />
|
||||
|
||||
<svg:path class="SamplePath" d="M100,100 C100,0 250,0 250,100
|
||||
S400,200 400,100" />
|
||||
|
||||
<svg:circle class="EndPoint" cx="100" cy="100" r="10" />
|
||||
<svg:circle class="EndPoint" cx="250" cy="100" r="10" />
|
||||
<svg:circle class="EndPoint" cx="400" cy="100" r="10" />
|
||||
<svg:circle class="CtlPoint" cx="100" cy="0" r="10" />
|
||||
<svg:circle class="CtlPoint" cx="250" cy="0" r="10" />
|
||||
<svg:circle class="CtlPoint" cx="400" cy="200" r="10" />
|
||||
<svg:circle class="AutoCtlPoint" cx="250" cy="200" r="9" />
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="300" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:path d="M200,150 Q250,0 300,150 T350,0"
|
||||
fill="none" stroke="red" stroke-width="5" />
|
||||
<svg:path d="M200,150 L250,0 L300,150
|
||||
L350,300 L400,150"
|
||||
fill="none" stroke="#888888" stroke-width="2" />
|
||||
<svg:g fill="#888888" >
|
||||
<svg:circle cx="250" cy="0" r="5"/>
|
||||
<svg:circle cx="400" cy="150" r="5"/>
|
||||
</svg:g>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:path d="M100,100 h-50 a50,50 0 1,0 50,-50 z"
|
||||
fill="red" stroke="blue" stroke-width="5" />
|
||||
<svg:path d="M90,90 v-50 a50,50 0 0,0 -50,50 z"
|
||||
fill="yellow" stroke="blue" stroke-width="5" />
|
||||
<svg:path d="M100,250 l 50,-25
|
||||
a25,25 -30 0,1 50,-25 l 50,-25
|
||||
a25,50 -30 0,1 50,-25 l 50,-25
|
||||
a25,75 -30 0,1 50,-25 l 50,-25
|
||||
a25,100 -30 0,1 50,-25 l 50,-25"
|
||||
fill="none" stroke="red" stroke-width="5" />
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,52 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="200" height="300" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:g fill="none" stroke="black" stroke-width="3" >
|
||||
<!-- Draw the axes of the original coordinate system -->
|
||||
<svg:line x1="0" y1="1.5" x2="400" y2="1.5" />
|
||||
<svg:line x1="1.5" y1="0" x2="1.5" y2="150" />
|
||||
</svg:g>
|
||||
<!-- First, a translate -->
|
||||
<svg:g transform="translate(50,50)">
|
||||
<svg:g fill="none" stroke="red" stroke-width="1" >
|
||||
<svg:line x1="0" y1="0" x2="5" y2="0" />
|
||||
<svg:line x1="0" y1="0" x2="0" y2="5" />
|
||||
</svg:g>
|
||||
<svg:text x="0" y="0" font-size="16" font-family="Verdana" >
|
||||
....Translate(1)
|
||||
</svg:text>
|
||||
<!-- Second, a rotate -->
|
||||
<svg:g transform="rotate(-45)">
|
||||
<svg:g fill="none" stroke="green" stroke-width="1" >
|
||||
<svg:line x1="0" y1="0" x2="5" y2="0" />
|
||||
<svg:line x1="0" y1="0" x2="0" y2="5" />
|
||||
</svg:g>
|
||||
<svg:text x="0" y="0" font-size="16" font-family="Verdana" >
|
||||
....Rotate(2)
|
||||
</svg:text>
|
||||
<!-- Third, another translate -->
|
||||
<svg:g transform="translate(20,20)">
|
||||
<svg:g fill="none" stroke="blue" stroke-width="1" >
|
||||
<svg:line x1="0" y1="0" x2="5" y2="0" />
|
||||
<svg:line x1="0" y1="0" x2="0" y2="5" />
|
||||
</svg:g>
|
||||
<svg:text x="0" y="0" font-size="16" font-family="Verdana" >
|
||||
....Translate(3)
|
||||
</svg:text>
|
||||
</svg:g>
|
||||
</svg:g>
|
||||
</svg:g>
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,70 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<fo:page-sequence>
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
dasdsad dfsfsdfsf fdsfdsfs fsd fsd f sdfsd fsdfsdf sdfsdf dsafsdfs dfsdf sdfsd fsdfsdf sdfs dfsdfsd fsdfs dfsed
|
||||
</fo:block>
|
||||
<fo:block>
|
||||
xxxxxxxx
|
||||
</fo:block>
|
||||
<fo:table-and-caption>
|
||||
<fo:table>
|
||||
<fo:table-column column-width="25mm"/>
|
||||
<fo:table-column column-width="25mm"/>
|
||||
|
||||
<fo:table-header>
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block
|
||||
border-top-style="dotted"
|
||||
border-left-style="solid"
|
||||
border-right-style="solid"
|
||||
border-top-color="red"
|
||||
border-left-color="rgb(255,255,0)"
|
||||
font-weight="bold">Car
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block font-weight="bold"
|
||||
border-top-style="dashed"
|
||||
border-top-color="#00ffff"
|
||||
border-right-color="cyan">Price</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-header>
|
||||
|
||||
<fo:table-body>
|
||||
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>Volvo</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block
|
||||
background-color="#cccccc">$50000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>SAAB</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block>$48000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
|
||||
</fo:table>
|
||||
</fo:table-and-caption>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
<fo:page-sequence>
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
444
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,257 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
$max_line_height_for_that_row=0;
|
||||
$max_line_height_for_that_cell=0;
|
||||
|
||||
class FO_Block extends FO_LayoutObject{
|
||||
|
||||
static $CHILDNODES = array(
|
||||
//FO_BidiOverride,
|
||||
//FO_Character,
|
||||
'FO_ExternalGraphic', /*oesi - uncomment for ExternalGraphic Support*/
|
||||
'FO_InstreamForeignObject',
|
||||
'FO_Inline',
|
||||
//FO_InlineContainer,
|
||||
//FO_Leader,
|
||||
//FO_PageNumber,
|
||||
//FO_PageNumberCitation,
|
||||
'FO_BasicLink',
|
||||
//FO_MultiToggle,
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_TableAndCaption',
|
||||
'FO_Table',
|
||||
'FO_ListBlock'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function initAttributes(DOMNode $node) {
|
||||
global $height_of_current_row;
|
||||
//echo $node->parentNode->nodeName.'<br>';
|
||||
if($node->parentNode->nodeName!='fo:table-cell')
|
||||
$height_of_current_row=0;
|
||||
$this->initAttribute($node, "text-align");
|
||||
$this->initAttribute($node, "vertical-align");
|
||||
$this->initAttribute($node, "content-width");
|
||||
}
|
||||
|
||||
function processContent($text) {
|
||||
global $max_line_height_for_that_row;
|
||||
global $max_line_height_for_that_cell;
|
||||
$talign = $this->getContext("text-align");
|
||||
//oesi - add attribute vertical-align
|
||||
$valign = $this->getContext("vertical-align");
|
||||
//oesi - add attribute content-width
|
||||
$colwidth = $this->getContext("content-width");
|
||||
switch ($talign) {
|
||||
case "center":
|
||||
$align = "C";
|
||||
break;
|
||||
case "right":
|
||||
$align = "R";
|
||||
break;
|
||||
case "left":
|
||||
$align = "L";
|
||||
default:
|
||||
$align = '';
|
||||
}
|
||||
|
||||
$text = $this->escape($text);
|
||||
|
||||
$x = $this->getContext("x");
|
||||
$x2 = $this->getContext("startx");
|
||||
if (!$x2) {
|
||||
$x2 = $x;
|
||||
}
|
||||
$y = $this->getContext("y");
|
||||
// echo "Draw at:$x:$x2:$y<br>";
|
||||
$pdf = $this->getPdf();
|
||||
$lineHeight = $this->getContext("line-height");
|
||||
|
||||
//oesi - bei vertikaler Zentrierung wird die y koordinate angepasst (Nur bei Tabellen)
|
||||
switch ($valign)
|
||||
{
|
||||
case "center":
|
||||
//Innerhalb der Zeile zentrieren
|
||||
$y = ($y - ($lineHeight - ($pdf->FontSizePt/72*25.4)) / 2);
|
||||
|
||||
//innerhalb der ganzen TabellenZelle zentrieren
|
||||
if($max_line_height_for_that_row>1 && $max_line_height_for_that_row!=$max_line_height_for_that_cell)
|
||||
$y += ($lineHeight/2*($max_line_height_for_that_row-$max_line_height_for_that_cell));
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
//Innerhalb der Zeile zentrieren
|
||||
$y = ($y - ($lineHeight - ($pdf->FontSizePt/72*25.4)) / 2);
|
||||
|
||||
//ans untere ende der TabellenZelle schieben
|
||||
if($max_line_height_for_that_row>1 && $max_line_height_for_that_row!=$max_line_height_for_that_cell)
|
||||
$y += ($lineHeight*($max_line_height_for_that_row-$max_line_height_for_that_cell));
|
||||
break;
|
||||
case "top":
|
||||
//Innerhalb der Zeile zentrieren
|
||||
$y = ($y - ($lineHeight - ($pdf->FontSizePt/72*25.4)) / 2);
|
||||
break;
|
||||
default:
|
||||
//Hier lasse ich die zentrierung in der Zeile weg, weil ich nicht genau weiss, welche folgeschaeden dadurch
|
||||
//verursacht werden. Eigentlich muesste die Zentrierung der Zeile aber immer stattfinden, egal ob vertical-align
|
||||
//gesetzt ist oder nicht.
|
||||
}
|
||||
|
||||
list($width, $height, $nb, $sx, $sy, $lx, $ly) =
|
||||
$pdf->Text2($x2, $y, $text, $align, $lineHeight, $x, $colwidth);
|
||||
|
||||
//echo "Wrote block:$colwidth:$height:$lineHeight:".$pdf->FontSize.":".$pdf->FontSizePt."$text<br>";
|
||||
|
||||
//oesi - wenn die hoehe einer Spalte groesser ist, dann muss der Border
|
||||
//fuer die ganze row groesser gezeichnet werden.
|
||||
//berechnung von max_line_heigth_for_that_row in fo_layout.php
|
||||
if($max_line_height_for_that_row!=0 && $max_line_height_for_that_row!=1)
|
||||
{
|
||||
//echo "aendere hoehe fuer $text : $max_line_height_for_that_row<br>";
|
||||
$height=$lineHeight*$max_line_height_for_that_row;
|
||||
}
|
||||
else
|
||||
{
|
||||
//echo "<br>$text : $max_line_height_for_that_row";
|
||||
}
|
||||
$this->setLocalContext("content_height", $height);
|
||||
$this->setLocalContext("content_width", $width);
|
||||
$this->setLocalContext("lx", $lx);
|
||||
$this->setLocalContext("ly", $ly);
|
||||
$this->setLocalContext("sx", $sx);
|
||||
$this->setLocalContext("sy", $sy);
|
||||
}
|
||||
|
||||
function postParseContent($content) {
|
||||
$this->setContext("startx", $this->getContext("lx"));
|
||||
$this->setContext("y", $this->getContext("ly"));
|
||||
$pdf = $this->getPdf();
|
||||
$this->setLocalContext("width", $pdf->GetPageWidth());
|
||||
$h1 = $this->getContext("height");
|
||||
$h2 = $this->getContext("content_height");
|
||||
if ($h2 > $h1) {
|
||||
$this->setLocalContext("height", $h2);
|
||||
}
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
if (!$obj instanceof FO_Inline) {
|
||||
return parent::postParse($obj);
|
||||
}
|
||||
$this->setContext("startx", $obj->getContext("lx"));
|
||||
$this->setContext("y", $obj->getContext("ly"));
|
||||
$this->setContext("x", $obj->getContext("x"));
|
||||
$h1 = $this->getContext("height");
|
||||
$h2 = $obj->getContext("height");
|
||||
if ($h2 > $h1) {
|
||||
$this->setLocalContext("height", $h2);
|
||||
}
|
||||
}
|
||||
|
||||
function escape($text) {
|
||||
return str_replace('\t', '', preg_replace('/\s+/', ' ', $text));
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Inline extends FO_Block {
|
||||
|
||||
function processContent($text) {
|
||||
// echo "show inline content:$text<br>";
|
||||
return parent::processContent($text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class FO_BasicLink extends FO_Block {
|
||||
function initAttributes(DOMNode $node) {
|
||||
$this->initLocalAttribute($node, "internal-destination");
|
||||
$this->initLocalAttribute($node, "external-destination");
|
||||
}
|
||||
|
||||
function processContent($text) {
|
||||
parent::processContent($text);
|
||||
$width = $this->getContext("content_width");
|
||||
$height = $this->getContext("content_height");
|
||||
$lx = $this->getContext("lx");
|
||||
$ly = $this->getContext("ly");
|
||||
$x = $this->getContext("x");
|
||||
$y = $this->getContext("y");
|
||||
$sx = $this->getContext("sx");
|
||||
$sy = $this->getContext("sy");
|
||||
//echo "Link at:$x:$y:$width:$height<br>";
|
||||
$pdf = $this->getPdf();
|
||||
$internal = $this->getContext("internal-destination");
|
||||
$external = $this->getContext("external-destination");
|
||||
if ($internal) {
|
||||
$lnk = $pdf->AddLink();
|
||||
$ref = $this->getReference($internal);
|
||||
if ($ref) {
|
||||
//TODO: add all references from id's as well as the page-number
|
||||
$pdf->SetLink($lnk, $ref->getContext("y"), $ref->getContext("page-number"));
|
||||
$pdf->Link($x, $y, $width, $height, $lnk);
|
||||
}
|
||||
}
|
||||
else if ($external) {
|
||||
$pdf->Link($x, $y, $width, $height, $external);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//oesi - add ExternalGraphics
|
||||
class FO_ExternalGraphic extends FO_Block
|
||||
{
|
||||
function initAttributes(DOMNode $node)
|
||||
{
|
||||
$this->initLocalAttribute($node, "src");
|
||||
$this->initLocalAttribute($node, "width");
|
||||
$this->initLocalAttribute($node, "height");
|
||||
$this->initLocalAttribute($node, "posx");
|
||||
$this->initLocalAttribute($node, "posy");
|
||||
}
|
||||
|
||||
function processContent($text)
|
||||
{
|
||||
parent::processContent($text);
|
||||
|
||||
$pdf = $this->getPdf();
|
||||
|
||||
$src = trim($this->getContext("src"));
|
||||
$width = $this->getContext("width");
|
||||
$height = $this->getContext("height");
|
||||
$x = $this->getContext("posx");
|
||||
$y = $this->getContext("posy");
|
||||
if($x=='')
|
||||
$x = $this->getContext("x")+1;
|
||||
if($y=='')
|
||||
$y = $this->getContext("y")+1;
|
||||
$pdf->Image($src, $x, $y, $width, $height, "jpg","");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,375 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class FO_Container {
|
||||
var $_refs = array();
|
||||
|
||||
function addReference($category, $name, $ref) {
|
||||
$_refs[$category][$name] = $ref;
|
||||
}
|
||||
|
||||
function resolveReference($category, $name) {
|
||||
return (isset($_refs)?$_refs[$category][$name]:'');
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Context {
|
||||
var $_context;
|
||||
|
||||
function __contruct() {
|
||||
$this->_context = array();
|
||||
}
|
||||
|
||||
function get($key) {
|
||||
if(isset($this->_context[$key]))
|
||||
return $this->_context[$key];
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function set($key, $val) {
|
||||
$this->_context[$key] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
abstract class FO_Object {
|
||||
var $_children;
|
||||
var $_container;
|
||||
var $_context;
|
||||
var $_localContext;
|
||||
var $_pdf;
|
||||
var $_parent;
|
||||
|
||||
const NODE_TYPE_ELEMENT = 1;
|
||||
const NODE_TYPE_TEXT = 3;
|
||||
|
||||
function __construct(FO_Container $container, FPDF $pdf,
|
||||
FO_Context $context) {
|
||||
//echo "New:$this:$context<br>";
|
||||
$this->_container = $container;
|
||||
$this->_pdf = $pdf;
|
||||
$this->_context = $context;
|
||||
$this->_localContext = new FO_Context();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check unit of value and scale to internal value, if needed
|
||||
* Internal values are stored in mm
|
||||
**/
|
||||
function calcInternalValue($value, $to = "mm", $from="mm") {
|
||||
sscanf($value, "%f%s", $value, $unit);
|
||||
if (!$unit) {
|
||||
$unit = $from;
|
||||
}
|
||||
//calculate to default value in mm
|
||||
switch ($to) {
|
||||
case "mm":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value;
|
||||
case "cm":
|
||||
return $value*10;
|
||||
case "in":
|
||||
return $value/25.4;
|
||||
case "pt":
|
||||
return $value*25.4/72;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
case "cm":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value/10;
|
||||
case "cm":
|
||||
return $value;
|
||||
case "in":
|
||||
return $value/2.54;
|
||||
case "pt":
|
||||
return $value*2.54/72;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
case "in":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value*25.4;
|
||||
case "cm":
|
||||
return $value*2.54;
|
||||
case "in":
|
||||
return $value;
|
||||
case "pt":
|
||||
return $value*72;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
case "pt":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value*72/25.4;
|
||||
case "cm":
|
||||
return $value*72/2.54;
|
||||
case "in":
|
||||
return $value/72;
|
||||
case "pt":
|
||||
return $value;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->NotYetSupported("Default Unit:$default");
|
||||
}
|
||||
}
|
||||
|
||||
function addReference($category, $name) {
|
||||
if ($category && $name) {
|
||||
$this->_container->addReference($category, $name, $this);
|
||||
}
|
||||
}
|
||||
|
||||
function resolveReference($category, $name) {
|
||||
return $this->_container->resolveReference($category, $name);
|
||||
}
|
||||
|
||||
function setParent($parent) {
|
||||
$this->_parent = $parent;
|
||||
}
|
||||
|
||||
function handleEvent($event) {
|
||||
if ($event == "sync-position") {
|
||||
$pdf = $this->getPdf();
|
||||
$this->setContext("y", $pdf->GetY());
|
||||
$this->setContext("x", $pdf->GetX());
|
||||
}
|
||||
if ($this->_parent) {
|
||||
$this->_parent->handleEvent($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get from current context informations
|
||||
*/
|
||||
function getContext($key) {
|
||||
$val = $this->_localContext->get($key);
|
||||
if (!$val) {
|
||||
$val = $this->_context->get($key);
|
||||
}
|
||||
return $val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a context information for child nodes and current node as well
|
||||
*/
|
||||
function setContext($key, $value) {
|
||||
$this->_context->set($key, $value);
|
||||
}
|
||||
|
||||
function setLocalContext($key, $value) {
|
||||
$this->_localContext->set($key, $value);
|
||||
}
|
||||
|
||||
function getAttribute(DOMNode $node, $key) {
|
||||
if($node->attributes->getNamedItem($key)!=null)
|
||||
return $node->attributes->getNamedItem($key)->nodeValue;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function getSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm") {
|
||||
if($node->attributes->getNamedItem($key)!=null)
|
||||
$val = $node->attributes->getNamedItem($key)->nodeValue;
|
||||
else
|
||||
$val=false;
|
||||
return $this->calcInternalValue($val, $to, $from);
|
||||
}
|
||||
|
||||
function initSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm") {
|
||||
$val = $this->getSizeAttribute($node, $key, $to, $from);
|
||||
if ($val) {
|
||||
$this->setContext($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function initAttribute(DOMNode $node, $key) {
|
||||
$val = $this->getAttribute($node, $key);
|
||||
if ($val) {
|
||||
$this->setContext($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function initLocalSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm"){
|
||||
$val = $this->getSizeAttribute($node, $key, $to, $from);
|
||||
if ($val) {
|
||||
$this->_localContext->set($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function initLocalAttribute(DOMNode $node, $key) {
|
||||
$val = $this->getAttribute($node, $key);
|
||||
if ($val) {
|
||||
$this->_localContext->set($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function processChildNodes(DOMNode $node, $filter) {
|
||||
foreach($node->childNodes as $child) {
|
||||
$this->processChildNode($child, $filter);
|
||||
}
|
||||
}
|
||||
|
||||
function processChildNode(DOMNode $node, $filter) {
|
||||
$subcontext = clone $this->_context;
|
||||
$next =
|
||||
FO_Factory::createFOObject($node, $this->_container,
|
||||
$this->_pdf, $subcontext, $filter);
|
||||
if ($next != null) {
|
||||
$next->setParent($this);
|
||||
$this->initFOObject($next);
|
||||
$this->_children[$node->nodeName] = $next;
|
||||
$this->preParse($next);
|
||||
$next->parse($node);
|
||||
$this->postParse($next);
|
||||
}
|
||||
}
|
||||
|
||||
function initFOObject(FO_Object $obj) {
|
||||
}
|
||||
|
||||
function preParse(FO_Object $obj) {
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
}
|
||||
|
||||
function processContents(DOMNode $node) {
|
||||
foreach($node->childNodes as $child) {
|
||||
if ($child->nodeType == self::NODE_TYPE_TEXT) {
|
||||
$this->processContent($child->textContent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function processContent($content) {
|
||||
//do nothing per default
|
||||
}
|
||||
|
||||
function getPdf() {
|
||||
return $this->_pdf;
|
||||
}
|
||||
|
||||
function NotYetSupported($msg=0) {
|
||||
echo "Not Yet Supported[".get_class($this)."]:$msg<br>";
|
||||
}
|
||||
|
||||
function children() {
|
||||
return $this->_children;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the color from either xml attribute value or FPDF
|
||||
* internal representation
|
||||
**/
|
||||
function parseColor($color) {
|
||||
if (sscanf($color, "#%2x%2x%2x", $r, $g, $b) == 3) {
|
||||
//parse RGB color
|
||||
$r = sprintf("%d", $r);
|
||||
$g = sprintf("%d", $g);
|
||||
$b = sprintf("%d", $b);
|
||||
}
|
||||
else if(sscanf($color, "rgb(%d,%d,%d)", $r, $g, $b) == 3) {
|
||||
}
|
||||
else if (sscanf($color, "%f %f %f RG", $r, $g, $b) == 3) {
|
||||
}
|
||||
else if (sscanf($color, "%f G", $g) == 1) {
|
||||
}
|
||||
else {
|
||||
//get color from word
|
||||
switch ($color) {
|
||||
case "white":
|
||||
$r=255; $g=255; $b=255;
|
||||
break;
|
||||
case "red":
|
||||
$r=255; $g=0; $b=0;
|
||||
break;
|
||||
case "green":
|
||||
$r=0; $g=255; $b=0;
|
||||
break;
|
||||
case "blue":
|
||||
$r=0; $g=0; $b=255;
|
||||
break;
|
||||
case "yellow":
|
||||
$r=255; $g=255; $b=0;
|
||||
break;
|
||||
case "magenta":
|
||||
$r=0; $g=255; $b=255;
|
||||
break;
|
||||
case "cyan":
|
||||
$r=255; $g=0; $b=255;
|
||||
break;
|
||||
case "black":
|
||||
default:
|
||||
$r=0; $g=0; $b=0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return array($r, $g, $b);
|
||||
}
|
||||
|
||||
function parse(DOMNode $node)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
* <!-- The full XSL-FO document goes here -->
|
||||
* </fo:root>
|
||||
*/
|
||||
class FO_Root extends FO_Object{
|
||||
|
||||
function __construct(FPDF $pdf) {
|
||||
$container = new FO_Context();
|
||||
parent::__construct(new FO_Container(), $pdf, $container);
|
||||
$this->setContext("acceptPageBreak", true);
|
||||
}
|
||||
|
||||
static $CHILDNODES = array (
|
||||
'FO_LayoutMasterSet',
|
||||
'FO_PageSequence'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
//no attrbutes which concerns us
|
||||
$_children[$node->nodeName] =
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
|
||||
function setContext($key, $value) {
|
||||
parent::setContext($key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,44 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
require_once("fo_svg.php");
|
||||
class FO_InstreamForeignObject extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_SVG'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
//echo "Post:".$this->getContext("y")."<br>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,726 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
|
||||
class FO_LayoutObject extends FO_FlowContainer {
|
||||
var $_oldFont;
|
||||
var $_oldFontStyle;
|
||||
var $_oldColor;
|
||||
var $_buffer;
|
||||
|
||||
function initDefaultAttributes($node) {
|
||||
//read attributes
|
||||
$this->initLocalAttribute($node, "border-top-style");
|
||||
$this->initLocalAttribute($node, "border-right-style");
|
||||
$this->initLocalAttribute($node, "border-bottom-style");
|
||||
$this->initLocalAttribute($node, "border-left-style");
|
||||
$this->initLocalAttribute($node, "border-style");
|
||||
$this->initLocalAttribute($node, "border-top-color");
|
||||
$this->initLocalAttribute($node, "border-right-color");
|
||||
$this->initLocalAttribute($node, "border-bottom-color");
|
||||
$this->initLocalAttribute($node, "border-left-color");
|
||||
$this->initLocalAttribute($node, "border-color");
|
||||
$this->initLocalSizeAttribute($node, "border-top-width");
|
||||
$this->initLocalSizeAttribute($node, "border-right-width");
|
||||
$this->initLocalSizeAttribute($node, "border-bottom-width");
|
||||
$this->initLocalSizeAttribute($node, "border-left-width");
|
||||
$this->initLocalSizeAttribute($node, "border-width");
|
||||
$this->initAttribute($node, "font-style");
|
||||
$this->initAttribute($node, "font-weight");
|
||||
$this->initSizeAttribute($node, "font-size", "pt");
|
||||
$this->initAttribute($node, "font-family");
|
||||
$this->initAttribute($node, "color");
|
||||
$this->initLocalSizeAttribute($node, "width");
|
||||
$this->initLocalSizeAttribute($node, "height");
|
||||
$this->initLocalAttribute($node, "background-color");
|
||||
$this->initLocalAttribute($node, "background-image");
|
||||
$this->initLocalSizeAttribute($node, "space-before.optimum");
|
||||
$this->initLocalSizeAttribute($node, "space-after.optimum");
|
||||
$this->initLocalAttribute($node, "break-before");
|
||||
$this->initLocalAttribute($node, "break-after");
|
||||
$this->initSizeAttribute($node, "line-height");
|
||||
$this->initLocalSizeAttribute($node, "padding-top");
|
||||
//$this->initLocalSizeAttribute($node, "padding-bottom");
|
||||
$this->initLocalSizeAttribute($node, "padding-left");
|
||||
//$this->initLocalSizeAttribute($node, "padding-right");
|
||||
}
|
||||
|
||||
//oesi - convertiert die daten von utf8 nach latin1 und ersetzt 'EURO' durch das eurosymbol
|
||||
function convert($str)
|
||||
{
|
||||
|
||||
$str = str_replace('ĉ','c',$str);
|
||||
$str = str_replace('Č','C',$str);
|
||||
$str = str_replace('č','c',$str);
|
||||
$str = str_replace('ć','c',$str);
|
||||
$str = str_replace('Š','S',$str);
|
||||
$str = str_replace('š','s',$str);
|
||||
$str = str_replace('ň','n',$str);
|
||||
$str = str_replace('ń','n',$str);
|
||||
$str = str_replace('ř','r',$str);
|
||||
$str = utf8_decode($str);
|
||||
//echo str_replace('EURO',chr(128),utf8_decode($str));
|
||||
$str = str_replace('EURO',chr(128),$str);
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
//Spaltenhoehe Berechnen
|
||||
function BerechneZellenHoehe($cell, $anzahl_lines_max)
|
||||
{
|
||||
$pdf = $this->getPdf();
|
||||
$output = '';
|
||||
if($cell->childNodes)
|
||||
{
|
||||
foreach($cell->childNodes as $block)
|
||||
{
|
||||
//Blockelement heraussuchen
|
||||
if($block->nodeName=='fo:block')
|
||||
{
|
||||
//Width des block Elements holen
|
||||
if($block->attributes->getNamedItem('content-width'))
|
||||
{
|
||||
//Schriftgroesse des Elements holen bzw des uebergeordneten
|
||||
if($block->attributes->getNamedItem('font-size'))
|
||||
$font_size=$block->attributes->getNamedItem('font-size')->nodeValue;
|
||||
else
|
||||
$font_size=$this->getContext("font-size");
|
||||
|
||||
//wenn schriftgroesse in pt angegeben ist dann in mm umrechnen
|
||||
if(strstr($font_size,'pt'))
|
||||
$font_size = $font_size/72*25.4;
|
||||
$content_width = $block->attributes->getNamedItem('content-width')->nodeValue;
|
||||
//$output .= $block->nodeValue;
|
||||
|
||||
$anzahl_lines=0;
|
||||
//sonderzeichen konvertieren
|
||||
$line = $this->convert($block->nodeValue);
|
||||
|
||||
//Damit bei den Fussnoten am Zeugnis das Sonderzeichen nicht als 5 Zeichen gezaehlt wird
|
||||
//wird hier einfach das erste Zeichen ersetzt
|
||||
$line = '1'.substr($line, 1);
|
||||
//Zeilenumbrueche loeschen
|
||||
$line = str_replace("\n",'', trim($line));
|
||||
//Lines nach Newlines splitten
|
||||
$lines = explode('\n', $line);
|
||||
foreach ($lines as $line)
|
||||
{
|
||||
if($line!='')
|
||||
{
|
||||
do
|
||||
{
|
||||
/*$x = $this->getContext("x");
|
||||
$x2 = $this->getContext("startx");
|
||||
if (!$x2) {
|
||||
$x2 = $x;
|
||||
}*/
|
||||
//echo "x2:$x2<br>";
|
||||
|
||||
$w = $content_width-1;
|
||||
|
||||
//Anzahl der zeichen holen die in dieser zeile noch platz haben
|
||||
$noc = $pdf->GetNumberOfChars($w, $line, $font_size);
|
||||
//wenn das wort nicht abgeteilt werden kann dann ueber den rand hinausschreiben
|
||||
if($noc==-1)
|
||||
$noc = strlen($line);
|
||||
//Zeile abteilen
|
||||
$showLine = substr($line, 0, $noc);
|
||||
|
||||
$output.= "w=$w noc=$noc fontsize=$font_size<br>$showLine ($line)";
|
||||
|
||||
//$textWidth = $pdf->GetStringWidth($showLine);
|
||||
//Rest der Line als neue Line
|
||||
$line = trim(substr($line, $noc));
|
||||
//Anzahl der verbleibenden zeichen ermitteln
|
||||
$width = strlen($line); //$pdf->GetNumberOfChars($w, $line, $font_size);
|
||||
$anzahl_lines++;
|
||||
} while($width>0);
|
||||
}
|
||||
}
|
||||
$output.= " Breaks $anzahl_lines <br><br>";
|
||||
//Wenn die Anzahl der benoetigten Zeilen in dieser Zelle
|
||||
//Groesser als die bisher groesste ist dann aendern
|
||||
if($anzahl_lines_max<$anzahl_lines)
|
||||
$anzahl_lines_max = $anzahl_lines;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $anzahl_lines_max;
|
||||
}
|
||||
|
||||
//oesi - Bei Tabellen wird die Hoehe der Row im vorhinein berechnet
|
||||
function BerechneTabellenHoehe($child)
|
||||
{
|
||||
global $max_line_height_for_that_row;
|
||||
//var_dump($child);
|
||||
$pdf = $this->getPdf();
|
||||
$anzahl_lines_max=0;
|
||||
$output = '';
|
||||
//alle Zellen durchlaufen
|
||||
foreach($child->childNodes as $cell)
|
||||
{
|
||||
$anzahl_lines_max = $this->BerechneZellenHoehe($cell, $anzahl_lines_max);
|
||||
}
|
||||
//Groesse der Zellen in Globale Variable schreiben
|
||||
$max_line_height_for_that_row = $anzahl_lines_max;
|
||||
//echo $output." - Line breaks $anzahl_lines_max times<br>";
|
||||
}
|
||||
|
||||
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
global $max_line_height_for_that_cell;
|
||||
//set default attributes
|
||||
$this->initDefaultAttributes($node);
|
||||
$this->initAttributes($node);
|
||||
$this->initialize();
|
||||
$acceptPageBreak = $this->getContext("acceptPageBreak");
|
||||
|
||||
$pos = $this->getPosition();
|
||||
list($x, $y, $width, $height) = $pos[0];
|
||||
list($xOrig, $yOrig, $width, $height) = $pos[1];
|
||||
|
||||
//automatic page break if component exceeds page limits
|
||||
$pdf = $this->getPdf();
|
||||
if ($yOrig > $pdf->PageBreakTrigger &&
|
||||
$pdf->AcceptPageBreak() &&
|
||||
$acceptPageBreak) {
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
$this->parse($node);
|
||||
return;
|
||||
}
|
||||
|
||||
//update to inner position
|
||||
$this->setContext("x", $x);
|
||||
$this->setContext("y", $y);
|
||||
|
||||
//draw us
|
||||
$this->setColor();
|
||||
$this->setFont();
|
||||
|
||||
$this->startCapture();
|
||||
foreach($node->childNodes as $child)
|
||||
{
|
||||
if ($child->nodeType == self::NODE_TYPE_TEXT)
|
||||
{
|
||||
$this->preParseContent($child->textContent);
|
||||
//oesi - add function utf8_decode for special chars (umlaut)
|
||||
$this->processContent($this->convert($child->nodeValue));
|
||||
$this->postParseContent($child->textContent);
|
||||
}
|
||||
else
|
||||
{
|
||||
//oesi - Bei Table-rows im vorhinein die hoehe berechnen
|
||||
if($child->nodeName=='fo:table-row')
|
||||
$this->BerechneTabellenHoehe($child);
|
||||
//oesi - Bei Table-cell im vorhinein die hoehe berechnen
|
||||
if($child->nodeName=='fo:table-cell')
|
||||
$max_line_height_for_that_cell = $this->BerechneZellenHoehe($child,0);
|
||||
$this->processChildNode($child, $this->getChildNodes());
|
||||
}
|
||||
}
|
||||
|
||||
//oesi - hack for ExternalGraphic Tag to show without content
|
||||
if($this instanceof FO_ExternalGraphic)
|
||||
$this->processContent('');
|
||||
//endhack
|
||||
|
||||
$contentBuffer = $this->endCapture();
|
||||
|
||||
//update to outer position
|
||||
$this->setContext("x", $xOrig);
|
||||
$this->setContext("y", $yOrig);
|
||||
|
||||
//recalc positions
|
||||
$pos2 = $this->getPosition();
|
||||
//merge with X and y values of the original psoition
|
||||
$pos2[0][0] = $pos[0][0];
|
||||
$pos2[0][1] = $pos[0][1];
|
||||
$pos2[1][0] = $pos[1][0];
|
||||
$pos2[1][1] = $pos[1][1];
|
||||
|
||||
//automatic page break if component exceeds page limits
|
||||
$pdf = $this->getPdf();
|
||||
if ($pos2[1][3] < $pdf->PageBreakTrigger &&
|
||||
$pos2[1][3]+$this->getContext("y") > $pdf->PageBreakTrigger &&
|
||||
$pdf->AcceptPageBreak() && $acceptPageBreak) {
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
$this->parse($node);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->drawBordersAndBackground($pos2);
|
||||
|
||||
//update to outer positions
|
||||
$this->setLocalContext("width", $pos2[1][2]);
|
||||
$this->setLocalContext("height", $pos2[1][3]);
|
||||
|
||||
//append child buffer
|
||||
$this->appendBuffer($contentBuffer);
|
||||
|
||||
$this->closeDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize additional attributes
|
||||
**/
|
||||
function initAttributes(DOMNode $node) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
function preParseContent($content) {
|
||||
}
|
||||
|
||||
function postParseContent($textcontent) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw borders and backgrounds according to the positions
|
||||
* May be overwritten to specify behaviour
|
||||
*/
|
||||
function drawBordersAndBackground($pos) {
|
||||
list($x, $y, $width, $height) = $pos[1];
|
||||
$this->drawBackground($x, $y, $width, $height);
|
||||
$this->drawBorders($x, $y, $width, $height);
|
||||
}
|
||||
|
||||
function getChildNodes() {
|
||||
//no child nodes per default
|
||||
return array();
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
$break_before = $this->getContext("break-before");
|
||||
$this->handleBreak($break_before);
|
||||
}
|
||||
|
||||
function closeDown() {
|
||||
$pdf = $this->getPdf();
|
||||
if ($this->_oldFont) {
|
||||
$pdf->SetFont($this->_oldFont, $this->_oldFontStyle,
|
||||
$this->_oldFontSize);
|
||||
}
|
||||
else if ($this->_oldFontSize) {
|
||||
$pdf->SetFontSize($this->oldFontSize);
|
||||
}
|
||||
|
||||
if ($this->_oldColor) {
|
||||
$this->setTextColor($this->_oldColor, $pdf);
|
||||
}
|
||||
|
||||
$space_after = $this->getContext("space-after.optimum");
|
||||
// echo "Space-after:".$space_after.":".get_class($this).":".$this->getContext("height")."<br>";
|
||||
if ($space_after) {
|
||||
$this->setLocalContext("height", $this->getContext("height") +
|
||||
$space_after);
|
||||
}
|
||||
$break_after = $this->getContext("break-after");
|
||||
$this->handleBreak($break_after);
|
||||
}
|
||||
|
||||
function startCapture() {
|
||||
if ($this->_buffer) {
|
||||
echo "Already captureing<br>";
|
||||
return;
|
||||
}
|
||||
$this->_buffer = $this->getPdf()->startCapture();
|
||||
}
|
||||
|
||||
function endCapture() {
|
||||
if (!$this->_buffer) {
|
||||
return;
|
||||
}
|
||||
$partBuffer = $this->getPdf()->endCapture($this->_buffer);
|
||||
$this->_buffer = NULL;
|
||||
return $partBuffer;
|
||||
}
|
||||
|
||||
function appendBuffer($buffer) {
|
||||
if (!$buffer) {
|
||||
//echo "Nothing to append<br>";
|
||||
return;
|
||||
}
|
||||
$this->getPdf()->appendBuffer($buffer);
|
||||
}
|
||||
|
||||
function getPosition() {
|
||||
$space_before = $this->getContext("space-before.optimum");
|
||||
$height = $this->getContext("line-height");
|
||||
$pdf = $this->getPdf();
|
||||
|
||||
$bw_top = $this->getContext("border-top-width");
|
||||
$bw_left = $this->getContext("border-left-width");
|
||||
$bw_right = $this->getContext("border-right-width");
|
||||
$bw_bottom = $this->getContext("border-bottom-width");
|
||||
$padding_left = $this->getContext("padding-left");
|
||||
$padding_top = $this->getContext("padding-top");
|
||||
|
||||
$bw = $this->getContext("border-width");
|
||||
$xx = $this->getContext("x");
|
||||
$yy = $this->getContext("y");
|
||||
|
||||
$height2 = $this->getContext("height");
|
||||
if (!$height || $height < $height2) {
|
||||
$height = $height2;
|
||||
}
|
||||
$width = $this->getContext("width");
|
||||
if (!$bw_top) {$bw_top = $bw;}
|
||||
if (!$bw_bottom) {$bw_bottom = $bw;}
|
||||
if (!$bw_right) {$bw_right = $bw;}
|
||||
if (!$bw_left) {$bw_left = $bw;}
|
||||
|
||||
sscanf($bw_top, "%f%s", $wt, $unit);
|
||||
sscanf($bw_left, "%f%s", $wl, $unit);
|
||||
sscanf($bw_right, "%f%s", $wr, $unit);
|
||||
sscanf($bw_bottom, "%f%s", $wb, $unit);
|
||||
$xx += $wl;
|
||||
$yy += $wt;
|
||||
$height += $wt+$wb;
|
||||
$width += $wl+$wr;
|
||||
|
||||
if ($space_before) {
|
||||
//echo "Spacebefore:$space_before<br>";
|
||||
$yy += $space_before;
|
||||
$height += $space_before;
|
||||
}
|
||||
if ($padding_left) {
|
||||
$xx += $padding_left;
|
||||
}
|
||||
if ($padding_top) {
|
||||
$yy += $padding_top;
|
||||
}
|
||||
|
||||
return
|
||||
array(
|
||||
//inner coordinates
|
||||
array($xx, $yy, $width-$wl-$wr, $height-$wt-$wb),
|
||||
//outer coordinates
|
||||
array($xx-$wl, $yy-$wr, $width, $height));
|
||||
}
|
||||
|
||||
function setColor() {
|
||||
$pdf = $this->getPdf();
|
||||
$this->_oldColor = $pdf->GetTextColor();
|
||||
$color = $this->getContext("color");
|
||||
if ($color) {
|
||||
$this->setTextColor($color, $pdf);
|
||||
}
|
||||
}
|
||||
|
||||
function setFont() {
|
||||
$pdf = $this->getPdf();
|
||||
$this->_oldFont = $pdf->GetFontFamily();
|
||||
$this->_oldFontStyle = $pdf->GetFontStyle();
|
||||
$this->_oldFontSize = $pdf->GetFontSizePt();
|
||||
$weight = $this->getContext("font-weight");
|
||||
$style = $this->getContext("font-style");
|
||||
$family = $this->getContext("font-family");
|
||||
$size = $this->getContext("font-size");
|
||||
if ($family) {
|
||||
$f = $family;
|
||||
}
|
||||
else {
|
||||
$f = $this->_oldFont;
|
||||
}
|
||||
if ($weight || $style) {
|
||||
if ($weight) {
|
||||
$st = "B";
|
||||
}
|
||||
if ($style) {
|
||||
//TODO: check which styles are supported
|
||||
}
|
||||
}
|
||||
else {
|
||||
$st = $this->_oldFontStyle;
|
||||
}
|
||||
if ($size) {
|
||||
$sz = $size;
|
||||
}
|
||||
else {
|
||||
$sz = $this->_oldFontSize;
|
||||
}
|
||||
if ($pdf->FontExists($f, $st)) {
|
||||
$pdf->SetFont($f, $st, $sz);
|
||||
}
|
||||
else if ($pdf->FontExists($this->_oldFont, $st)) {
|
||||
$pdf->SetFont($this->_oldFont, $st, $sz);
|
||||
}
|
||||
else {
|
||||
//adjust only size
|
||||
$pdf->SetFontSize($sz);
|
||||
}
|
||||
}
|
||||
|
||||
function drawBorders($x, $y, $width, $height) {
|
||||
$bs_top = $this->getContext("border-top-style");
|
||||
$bs_left = $this->getContext("border-left-style");
|
||||
$bs_right = $this->getContext("border-right-style");
|
||||
$bs_bottom = $this->getContext("border-bottom-style");
|
||||
$bs = $this->getContext("border-style");
|
||||
$bc_top = $this->getContext("border-top-color");
|
||||
$bc_left = $this->getContext("border-left-color");
|
||||
$bc_right = $this->getContext("border-right-color");
|
||||
$bc_bottom = $this->getContext("border-bottom-color");
|
||||
$bc = $this->getContext("border-color");
|
||||
$bw_top = $this->getContext("border-top-width");
|
||||
$bw_left = $this->getContext("border-left-width");
|
||||
$bw_right = $this->getContext("border-right-width");
|
||||
$bw_bottom = $this->getContext("border-bottom-width");
|
||||
$bw = $this->getContext("border-width");
|
||||
|
||||
$pdf = $this->getPdf();
|
||||
if (!$bs_top) {$bs_top = $bs;}
|
||||
if (!$bs_bottom) {$bs_bottom = $bs;}
|
||||
if (!$bs_right) {$bs_right = $bs;}
|
||||
if (!$bs_left) {$bs_left = $bs;}
|
||||
if (!$bc_top) {$bc_top = $bc;}
|
||||
if (!$bc_bottom) {$bc_bottom = $bc;}
|
||||
if (!$bc_right) {$bc_right = $bc;}
|
||||
if (!$bc_left) {$bc_left = $bc;}
|
||||
if (!$bw_top) {$bw_top = $bw;}
|
||||
if (!$bw_bottom) {$bw_bottom = $bw;}
|
||||
if (!$bw_right) {$bw_right = $bw;}
|
||||
if (!$bw_left) {$bw_left = $bw;}
|
||||
|
||||
sscanf($bw_top, "%f%s", $wt, $unit);
|
||||
sscanf($bw_left, "%f%s", $wl, $unit);
|
||||
sscanf($bw_right, "%f%s", $wr, $unit);
|
||||
sscanf($bw_bottom, "%f%s", $wb, $unit);
|
||||
$wt /= 2;
|
||||
$wl /= 2;
|
||||
$wr /= 2;
|
||||
$wb /= 2;
|
||||
|
||||
$width -= $wl+$wr;
|
||||
$height -= $wt+$wb;
|
||||
$x += $wl;
|
||||
$y += $wt;
|
||||
$this->drawLine($x, $y, $x+$width, $y, $bs_top, $bc_top,
|
||||
$bw_top, $pdf);
|
||||
$this->drawLine($x, $y, $x, $y+$height, $bs_left,
|
||||
$bc_left, $bw_left,$pdf);
|
||||
$this->drawLine($x, $y+$height, $x+$width, $y+$height,
|
||||
$bs_bottom, $bc_bottom, $bw_bottom, $pdf);
|
||||
$this->drawLine($x+$width, $y, $x+$width, $y+$height,
|
||||
$bs_right, $bc_right,$bw_right, $pdf);
|
||||
}
|
||||
|
||||
function drawBackground($x, $y, $width, $height) {
|
||||
$pdf = $this->GetPdf();
|
||||
$bg_c = $this->getContext("background-color");
|
||||
$bg_img = $this->getContext("background-image");
|
||||
if ($bg_c) {
|
||||
$oldColor = $pdf->GetFillColor();
|
||||
list($r, $g, $b) = $this->parseColor($bg_c);
|
||||
$pdf->SetFillColor($r, $g, $b);
|
||||
$pdf->Rect($x, $y, $width, $height, "F");
|
||||
list($r, $g, $b) = $this->parseColor($oldColor);
|
||||
$pdf->SetFillColor($r, $g, $b);
|
||||
}
|
||||
else if ($bg_img) {
|
||||
$this->NotYetSupported("background-image");
|
||||
}
|
||||
}
|
||||
|
||||
function drawLine($x, $y, $x2, $y2, $style, $color, $width, &$pdf) {
|
||||
$oldColor = $pdf->GetDrawColor();
|
||||
$oldLineWidth = $pdf->GetLineWidth();
|
||||
if ($width) {
|
||||
$pdf->SetLineWidth($width);
|
||||
}
|
||||
$this->setDrawColor($color, $pdf);
|
||||
switch ($style) {
|
||||
case "dotted":
|
||||
$pdf->SetDash(0.5, 0.5); //1mm on, 1mm off
|
||||
$pdf->Line($x, $y, $x2, $y2);
|
||||
$pdf->SetDash(); //restore no dash
|
||||
return;
|
||||
case "dashed":
|
||||
$pdf->SetDash(2,2); //2mm on, 2mm off
|
||||
$pdf->Line($x, $y, $x2, $y2);
|
||||
$pdf->SetDash(); //restore no dash
|
||||
return;
|
||||
case "solid":
|
||||
$pdf->Line($x, $y, $x2, $y2);
|
||||
return;
|
||||
case "double":
|
||||
case "groove":
|
||||
case "ridge":
|
||||
case "inset":
|
||||
case "outset":
|
||||
//TODO:implement
|
||||
echo "border style '$style' not yet supported<br>";
|
||||
case "none":
|
||||
case "hidden":
|
||||
default:
|
||||
//do nothing
|
||||
return;
|
||||
}
|
||||
$this->setDrawColor($oldColor, $pdf);
|
||||
$this->setLineWidth($oldLineWidth);
|
||||
}
|
||||
|
||||
function setDrawColor($color, &$pdf) {
|
||||
if ($color == '') {
|
||||
return;
|
||||
}
|
||||
list($r, $g, $b) = $this->parseColor($color);
|
||||
$pdf->SetDrawColor($r, $g, $b);
|
||||
}
|
||||
|
||||
function setTextColor($color, &$pdf) {
|
||||
if ($color == '') {
|
||||
return;
|
||||
}
|
||||
list($r, $g, $b) = $this->parseColor($color);
|
||||
$pdf->SetTextColor($r, $g, $b);
|
||||
}
|
||||
|
||||
function handleBreak($break) {
|
||||
if (!$break) {
|
||||
return;
|
||||
}
|
||||
$pdf = $this->getPdf();
|
||||
switch($break) {
|
||||
case "page":
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
return;
|
||||
default:
|
||||
$this->NotYetSupported("Break:$break");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_LayoutMasterSet extends FO_Object {
|
||||
var $name;
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->name = $node->attributes->getNamedItem("master-name");
|
||||
$this->addReference($this, $this->name);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_PageSequence extends FO_Object {
|
||||
static $CHILDNODES = array(
|
||||
'FO_Flow'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$masterRef = $node->attributes->getNamedItem("master-reference");
|
||||
if ($masterRef) {
|
||||
$master = $this->resolveReference('FO_LayoutMasterSet', $masterRef);
|
||||
//TODO: do something with this master
|
||||
}
|
||||
$pdf = $this->getPdf();
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_FlowContainer extends FO_Object {
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
$acceptPageBreak = $this->getContext("acceptPageBreak");
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$height = $this->getContext("height")+$obj->getContext("height");
|
||||
$this->setLocalContext("height", $height);
|
||||
$y = $this->getContext("y")+$obj->getContext("height");
|
||||
$pdf = $this->getPdf();
|
||||
if ($height < $pdf->PageBreakTrigger &&
|
||||
$y > $pdf->PageBreakTrigger &&
|
||||
$pdf->AcceptPageBreak() &&
|
||||
$acceptPageBreak) {
|
||||
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
//echo "Page break on .".get_class($obj)."<br>";
|
||||
}
|
||||
else {
|
||||
$this->setContext("y", $y);
|
||||
//echo "Move :".get_class($obj).":".$y.":".$obj->getContext("height")."<br>;";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Flow extends FO_FlowContainer {
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_Table',
|
||||
'FO_BlockContainer',
|
||||
'FO_TableAndCaption',
|
||||
'FO_ListBlock'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
//TODO: use attributes
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_BlockContainer extends FO_LayoutObject {
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_TableAndCaption',
|
||||
'FO_Table',
|
||||
'FO_ListBlock');
|
||||
|
||||
function initAttributes(DOMNode $node) {
|
||||
$this->initLocalSizeAttribute($node, "position");
|
||||
$this->initLocalSizeAttribute($node, "top");
|
||||
$this->initLocalSizeAttribute($node, "left");
|
||||
$this->initLocalSizeAttribute($node, "height");
|
||||
$this->initLocalSizeAttribute($node, "width");
|
||||
}
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->initAttributes($node);
|
||||
$position = $this->getContext("position");
|
||||
if ($position == "absolute"){
|
||||
//init absolute positions
|
||||
$top = $this->getContext("top");
|
||||
$left = $this->getContext("left");
|
||||
$this->setContext("x", $left);
|
||||
$this->setContext("y", $top);
|
||||
$this->setContext("acceptPageBreak", false);
|
||||
}
|
||||
parent::parse($node);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class FO_ListBlock extends FO_LayoutObject {
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,155 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Object extends FO_Object {
|
||||
function initLocalStyleAttribute(DOMNode $node) {
|
||||
$st = $this->getAttribute($node, "style");
|
||||
|
||||
$styles = explode(";", $st);
|
||||
foreach ($styles as $style) {
|
||||
$params = explode(":", $style);
|
||||
$this->setLocalContext($params[0], $params[1]);
|
||||
}
|
||||
}
|
||||
|
||||
function initStyleAttribute(DOMNode $node) {
|
||||
$st = $this->getAttribute($node, "style");
|
||||
|
||||
$styles = explode(";", $st);
|
||||
foreach ($styles as $style) {
|
||||
$params = explode(":", $style);
|
||||
$this->setContext($params[0], $params[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SVG_StyleObject extends SVG_Object {
|
||||
|
||||
function initLocalSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
parent::initLocalSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function initSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
parent::initSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function getLocalSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
return parent::getLocalSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function getSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
return parent::getSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function calcInternalValue($value, $to = "mm", $from="pt") {
|
||||
return parent::calcInternalValue($value, $to, $from);
|
||||
}
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$pdf = $this->getPdf();
|
||||
$buf = $pdf->startCapture();
|
||||
$this->initStyleAttribute($node);
|
||||
$this->initSizeAttribute($node, "x");
|
||||
$this->initSizeAttribute($node, "y");
|
||||
$this->initLocalSizeAttribute($node, "width");
|
||||
$this->initLocalSizeAttribute($node, "height");
|
||||
$this->initAttribute($node, "fill");
|
||||
$this->initAttribute($node, "stroke");
|
||||
$this->initSizeAttribute($node, "stroke-width");
|
||||
|
||||
$fill = $this->getContext("fill");
|
||||
$stroke = $this->getContext("stroke");
|
||||
$strokeWidth = $this->getContext("stroke-width");
|
||||
$sargs = "";
|
||||
$oldFillColor = $pdf->GetFillColor();
|
||||
$oldDrawColor = $pdf->GetDrawColor();
|
||||
$oldLineWidth = $pdf->GetLineWidth();
|
||||
if ($fill == "none") {
|
||||
$fill = NULL;
|
||||
}
|
||||
if ($stroke == "none") {
|
||||
$stroke = NULL;
|
||||
}
|
||||
if ($fill) {
|
||||
list($r, $g, $b) = $this->parseColor($fill);
|
||||
$pdf->setFillColor($r, $g, $b);
|
||||
$sargs .= "F";
|
||||
}
|
||||
if ($stroke) {
|
||||
list($r, $g, $b) = $this->parseColor($stroke);
|
||||
$pdf->setDrawColor($r, $g, $b);
|
||||
$sargs .= "D";
|
||||
}
|
||||
if ($strokeWidth) {
|
||||
$pdf->SetLineWidth($strokeWidth);
|
||||
}
|
||||
|
||||
$this->process($node, $sargs);
|
||||
|
||||
if ($fill) {
|
||||
list($r, $g, $b) = $this->parseColor($oldFillColor);
|
||||
$pdf->setFillColor($r, $g, $b);
|
||||
}
|
||||
if ($stroke) {
|
||||
list($r, $g, $b) = $this->parseColor($oldStrokeColor);
|
||||
$pdf->setDrawColor($r, $g, $b);
|
||||
}
|
||||
if ($strokeWidth) {
|
||||
$pdf->SetLineWidth($oldLineWidth);
|
||||
}
|
||||
$buf = $pdf->endCapture($buf);
|
||||
//echo get_class($this).":$buf<br>";
|
||||
$pdf->appendBuffer($buf);
|
||||
}
|
||||
function process(DOMNode $node, $sargs="")
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
class FO_SVG extends SVG_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
SVG_Circle,
|
||||
SVG_Rect,
|
||||
SVG_Ellipse,
|
||||
SVG_Line,
|
||||
SVG_Polygon,
|
||||
SVG_G,
|
||||
SVG_Text,
|
||||
SVG_Path
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->initLocalSizeAttribute($node, "width", "mm", "pt");
|
||||
$this->initLocalSizeAttribute($node, "height", "mm", "pt");
|
||||
$this->setContext("xOrig", $this->getContext("x"));
|
||||
$this->setContext("yOrig", $this->getContext("y"));
|
||||
$this->setContext("x", 0);
|
||||
$this->setContext("y", 0);
|
||||
$pdf = $this->getPdf();
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
$this->setContext("y", $this->getContext("yOrig")+$this->getContext("height"));
|
||||
$this->setContext("x", $this->getContext("xOrig"));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,281 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
/*
|
||||
<fo:table-and-caption>
|
||||
|
||||
<fo:table>
|
||||
|
||||
<fo:table-column column-width="25mm"/>
|
||||
<fo:table-column column-width="25mm"/>
|
||||
|
||||
<fo:table-header>
|
||||
<fo:table-cell>
|
||||
<fo:block font-weight="bold">Car</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block font-weight="bold">Price</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-header>
|
||||
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>Volvo</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block>$50000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>SAAB</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block>$48000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
|
||||
</fo:table>
|
||||
|
||||
</fo:table-and-caption>
|
||||
*/
|
||||
?>
|
||||
<?PHP
|
||||
|
||||
class FO_TableAndCaption extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_Table',
|
||||
'FO_TableCaption'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Table extends FO_LayoutObject {
|
||||
var $colCount = 0;
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableColumn',
|
||||
'FO_TableHeader',
|
||||
'FO_TableFooter',
|
||||
'FO_TableBody'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function initFOObject(FO_Object $col) {
|
||||
if (!$col instanceof FO_TableColumn) {
|
||||
return;
|
||||
}
|
||||
$col->setContext("column", $this->colCount++);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
global $max_line_height_for_that_row;
|
||||
if ($obj instanceof FO_TableHeader) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
}
|
||||
else if($obj instanceof FO_TableBody) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
$max_line_height_for_that_row=1;
|
||||
}
|
||||
else if($obj instanceof FO_TableColumn) {
|
||||
$col = $obj->getContext("column");
|
||||
$this->setContext("column-$col-width", $obj->getContext("width"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableCaption extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_ListBlock'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableColumn extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array();
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$width = $this->getSizeAttribute($node, "column-width");
|
||||
//calc internal width
|
||||
$this->setContext("width", $width);
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableRow extends FO_LayoutObject {
|
||||
|
||||
var $colIndex = 0;
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableCell'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function initFOObject(FO_Object $col) {
|
||||
if (!$col instanceof FO_TableCell) {
|
||||
return;
|
||||
}
|
||||
$col->setContext("column", $this->colIndex++);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
|
||||
if ($obj instanceof FO_TableCell) {
|
||||
$this->setContext("x", $this->getContext("x")+
|
||||
$obj->getContext("width"));
|
||||
$this->setLocalContext("width", $this->getContext("width")+
|
||||
$obj->getContext("width"));
|
||||
if ($this->getContext("height") < $obj->getContext("height")) {
|
||||
$this->setLocalContext("height", $obj->getContext("height"));
|
||||
}
|
||||
}
|
||||
else if ($obj instanceof FO_TableRow) {
|
||||
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableHeader extends FO_TableRow {
|
||||
//oesi - set to _1 to work with php4
|
||||
static $CHILDNODES_1 = array(
|
||||
'FO_TableCell',
|
||||
'FO_TableRow'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES_1;
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableFooter extends FO_LayoutObject {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableCell',
|
||||
'FO_TableRow'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableBody extends FO_LayoutObject {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableCell',
|
||||
'FO_TableRow'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
if ($obj instanceof FO_TableRow) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class FO_TableCell extends FO_LayoutObject {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_ListBlock',
|
||||
'FO_Table',
|
||||
'FO_TableAndCaption'
|
||||
);
|
||||
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$col = $this->getContext("column");
|
||||
$width = $this->getContext("column-$col-width");
|
||||
$this->setLocalContext("width", $width);
|
||||
|
||||
parent::parse($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overlap borders that the total width isn't larger than the
|
||||
* specified
|
||||
*/
|
||||
function drawBordersAndBackground($pos) {
|
||||
list($x1, $y1, $width1, $height1) = $pos[0];
|
||||
list($x2, $y2, $width2, $height2) = $pos[1];
|
||||
$xd = ($x1-$x2)/2;
|
||||
$yd = ($y1-$y2)/2;
|
||||
$wd = ($width2-$width1)/2;
|
||||
$hd = ($height2-$height1)/2;
|
||||
$this->drawBackground($x2, $y2, $width2+$wd, $height2+$hd);
|
||||
$this->drawBorders($x2, $y2, $width2+$wd, $height2+$hd);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height")+0.5); // oesi - add +0.5 for tablespace
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?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'];
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,251 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+015A Sacute
|
||||
!8D U+0164 Tcaron
|
||||
!8E U+017D Zcaron
|
||||
!8F U+0179 Zacute
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+015B sacute
|
||||
!9D U+0165 tcaron
|
||||
!9E U+017E zcaron
|
||||
!9F U+017A zacute
|
||||
!A0 U+00A0 space
|
||||
!A1 U+02C7 caron
|
||||
!A2 U+02D8 breve
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0104 Aogonek
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+015E Scedilla
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0105 aogonek
|
||||
!BA U+015F scedilla
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+013D Lcaron
|
||||
!BD U+02DD hungarumlaut
|
||||
!BE U+013E lcaron
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+0154 Racute
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0139 Lacute
|
||||
!C6 U+0106 Cacute
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+011A Ecaron
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+010E Dcaron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0147 Ncaron
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0158 Rcaron
|
||||
!D9 U+016E Uring
|
||||
!DA U+00DA Uacute
|
||||
!DB U+0170 Uhungarumlaut
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+0162 Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0155 racute
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+013A lacute
|
||||
!E6 U+0107 cacute
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+011B ecaron
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+010F dcaron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0148 ncaron
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0159 rcaron
|
||||
!F9 U+016F uring
|
||||
!FA U+00FA uacute
|
||||
!FB U+0171 uhungarumlaut
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+0163 tcommaaccent
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,255 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0402 afii10051
|
||||
!81 U+0403 afii10052
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0453 afii10100
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+20AC Euro
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0409 afii10058
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+040A afii10059
|
||||
!8D U+040C afii10061
|
||||
!8E U+040B afii10060
|
||||
!8F U+040F afii10145
|
||||
!90 U+0452 afii10099
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9A U+0459 afii10106
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+045A afii10107
|
||||
!9D U+045C afii10109
|
||||
!9E U+045B afii10108
|
||||
!9F U+045F afii10193
|
||||
!A0 U+00A0 space
|
||||
!A1 U+040E afii10062
|
||||
!A2 U+045E afii10110
|
||||
!A3 U+0408 afii10057
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0490 afii10050
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0401 afii10023
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0404 afii10053
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+0407 afii10056
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+0406 afii10055
|
||||
!B3 U+0456 afii10103
|
||||
!B4 U+0491 afii10098
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0451 afii10071
|
||||
!B9 U+2116 afii61352
|
||||
!BA U+0454 afii10101
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0458 afii10105
|
||||
!BD U+0405 afii10054
|
||||
!BE U+0455 afii10102
|
||||
!BF U+0457 afii10104
|
||||
!C0 U+0410 afii10017
|
||||
!C1 U+0411 afii10018
|
||||
!C2 U+0412 afii10019
|
||||
!C3 U+0413 afii10020
|
||||
!C4 U+0414 afii10021
|
||||
!C5 U+0415 afii10022
|
||||
!C6 U+0416 afii10024
|
||||
!C7 U+0417 afii10025
|
||||
!C8 U+0418 afii10026
|
||||
!C9 U+0419 afii10027
|
||||
!CA U+041A afii10028
|
||||
!CB U+041B afii10029
|
||||
!CC U+041C afii10030
|
||||
!CD U+041D afii10031
|
||||
!CE U+041E afii10032
|
||||
!CF U+041F afii10033
|
||||
!D0 U+0420 afii10034
|
||||
!D1 U+0421 afii10035
|
||||
!D2 U+0422 afii10036
|
||||
!D3 U+0423 afii10037
|
||||
!D4 U+0424 afii10038
|
||||
!D5 U+0425 afii10039
|
||||
!D6 U+0426 afii10040
|
||||
!D7 U+0427 afii10041
|
||||
!D8 U+0428 afii10042
|
||||
!D9 U+0429 afii10043
|
||||
!DA U+042A afii10044
|
||||
!DB U+042B afii10045
|
||||
!DC U+042C afii10046
|
||||
!DD U+042D afii10047
|
||||
!DE U+042E afii10048
|
||||
!DF U+042F afii10049
|
||||
!E0 U+0430 afii10065
|
||||
!E1 U+0431 afii10066
|
||||
!E2 U+0432 afii10067
|
||||
!E3 U+0433 afii10068
|
||||
!E4 U+0434 afii10069
|
||||
!E5 U+0435 afii10070
|
||||
!E6 U+0436 afii10072
|
||||
!E7 U+0437 afii10073
|
||||
!E8 U+0438 afii10074
|
||||
!E9 U+0439 afii10075
|
||||
!EA U+043A afii10076
|
||||
!EB U+043B afii10077
|
||||
!EC U+043C afii10078
|
||||
!ED U+043D afii10079
|
||||
!EE U+043E afii10080
|
||||
!EF U+043F afii10081
|
||||
!F0 U+0440 afii10082
|
||||
!F1 U+0441 afii10083
|
||||
!F2 U+0442 afii10084
|
||||
!F3 U+0443 afii10085
|
||||
!F4 U+0444 afii10086
|
||||
!F5 U+0445 afii10087
|
||||
!F6 U+0446 afii10088
|
||||
!F7 U+0447 afii10089
|
||||
!F8 U+0448 afii10090
|
||||
!F9 U+0449 afii10091
|
||||
!FA U+044A afii10092
|
||||
!FB U+044B afii10093
|
||||
!FC U+044C afii10094
|
||||
!FD U+044D afii10095
|
||||
!FE U+044E afii10096
|
||||
!FF U+044F afii10097
|
||||
@@ -1,251 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!8E U+017D Zcaron
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9E U+017E zcaron
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,239 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0385 dieresistonos
|
||||
!A2 U+0386 Alphatonos
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+2015 afii00208
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+0384 tonos
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0388 Epsilontonos
|
||||
!B9 U+0389 Etatonos
|
||||
!BA U+038A Iotatonos
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+038C Omicrontonos
|
||||
!BD U+00BD onehalf
|
||||
!BE U+038E Upsilontonos
|
||||
!BF U+038F Omegatonos
|
||||
!C0 U+0390 iotadieresistonos
|
||||
!C1 U+0391 Alpha
|
||||
!C2 U+0392 Beta
|
||||
!C3 U+0393 Gamma
|
||||
!C4 U+0394 Delta
|
||||
!C5 U+0395 Epsilon
|
||||
!C6 U+0396 Zeta
|
||||
!C7 U+0397 Eta
|
||||
!C8 U+0398 Theta
|
||||
!C9 U+0399 Iota
|
||||
!CA U+039A Kappa
|
||||
!CB U+039B Lambda
|
||||
!CC U+039C Mu
|
||||
!CD U+039D Nu
|
||||
!CE U+039E Xi
|
||||
!CF U+039F Omicron
|
||||
!D0 U+03A0 Pi
|
||||
!D1 U+03A1 Rho
|
||||
!D3 U+03A3 Sigma
|
||||
!D4 U+03A4 Tau
|
||||
!D5 U+03A5 Upsilon
|
||||
!D6 U+03A6 Phi
|
||||
!D7 U+03A7 Chi
|
||||
!D8 U+03A8 Psi
|
||||
!D9 U+03A9 Omega
|
||||
!DA U+03AA Iotadieresis
|
||||
!DB U+03AB Upsilondieresis
|
||||
!DC U+03AC alphatonos
|
||||
!DD U+03AD epsilontonos
|
||||
!DE U+03AE etatonos
|
||||
!DF U+03AF iotatonos
|
||||
!E0 U+03B0 upsilondieresistonos
|
||||
!E1 U+03B1 alpha
|
||||
!E2 U+03B2 beta
|
||||
!E3 U+03B3 gamma
|
||||
!E4 U+03B4 delta
|
||||
!E5 U+03B5 epsilon
|
||||
!E6 U+03B6 zeta
|
||||
!E7 U+03B7 eta
|
||||
!E8 U+03B8 theta
|
||||
!E9 U+03B9 iota
|
||||
!EA U+03BA kappa
|
||||
!EB U+03BB lambda
|
||||
!EC U+03BC mu
|
||||
!ED U+03BD nu
|
||||
!EE U+03BE xi
|
||||
!EF U+03BF omicron
|
||||
!F0 U+03C0 pi
|
||||
!F1 U+03C1 rho
|
||||
!F2 U+03C2 sigma1
|
||||
!F3 U+03C3 sigma
|
||||
!F4 U+03C4 tau
|
||||
!F5 U+03C5 upsilon
|
||||
!F6 U+03C6 phi
|
||||
!F7 U+03C7 chi
|
||||
!F8 U+03C8 psi
|
||||
!F9 U+03C9 omega
|
||||
!FA U+03CA iotadieresis
|
||||
!FB U+03CB upsilondieresis
|
||||
!FC U+03CC omicrontonos
|
||||
!FD U+03CD upsilontonos
|
||||
!FE U+03CE omegatonos
|
||||
@@ -1,249 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+011E Gbreve
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0130 Idotaccent
|
||||
!DE U+015E Scedilla
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+011F gbreve
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0131 dotlessi
|
||||
!FE U+015F scedilla
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,233 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+20AA afii57636
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00D7 multiply
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD sfthyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 middot
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00F7 divide
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+05B0 afii57799
|
||||
!C1 U+05B1 afii57801
|
||||
!C2 U+05B2 afii57800
|
||||
!C3 U+05B3 afii57802
|
||||
!C4 U+05B4 afii57793
|
||||
!C5 U+05B5 afii57794
|
||||
!C6 U+05B6 afii57795
|
||||
!C7 U+05B7 afii57798
|
||||
!C8 U+05B8 afii57797
|
||||
!C9 U+05B9 afii57806
|
||||
!CB U+05BB afii57796
|
||||
!CC U+05BC afii57807
|
||||
!CD U+05BD afii57839
|
||||
!CE U+05BE afii57645
|
||||
!CF U+05BF afii57841
|
||||
!D0 U+05C0 afii57842
|
||||
!D1 U+05C1 afii57804
|
||||
!D2 U+05C2 afii57803
|
||||
!D3 U+05C3 afii57658
|
||||
!D4 U+05F0 afii57716
|
||||
!D5 U+05F1 afii57717
|
||||
!D6 U+05F2 afii57718
|
||||
!D7 U+05F3 gereshhebrew
|
||||
!D8 U+05F4 gershayimhebrew
|
||||
!E0 U+05D0 afii57664
|
||||
!E1 U+05D1 afii57665
|
||||
!E2 U+05D2 afii57666
|
||||
!E3 U+05D3 afii57667
|
||||
!E4 U+05D4 afii57668
|
||||
!E5 U+05D5 afii57669
|
||||
!E6 U+05D6 afii57670
|
||||
!E7 U+05D7 afii57671
|
||||
!E8 U+05D8 afii57672
|
||||
!E9 U+05D9 afii57673
|
||||
!EA U+05DA afii57674
|
||||
!EB U+05DB afii57675
|
||||
!EC U+05DC afii57676
|
||||
!ED U+05DD afii57677
|
||||
!EE U+05DE afii57678
|
||||
!EF U+05DF afii57679
|
||||
!F0 U+05E0 afii57680
|
||||
!F1 U+05E1 afii57681
|
||||
!F2 U+05E2 afii57682
|
||||
!F3 U+05E3 afii57683
|
||||
!F4 U+05E4 afii57684
|
||||
!F5 U+05E5 afii57685
|
||||
!F6 U+05E6 afii57686
|
||||
!F7 U+05E7 afii57687
|
||||
!F8 U+05E8 afii57688
|
||||
!F9 U+05E9 afii57689
|
||||
!FA U+05EA afii57690
|
||||
!FD U+200E afii299
|
||||
!FE U+200F afii300
|
||||
@@ -1,244 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!8D U+00A8 dieresis
|
||||
!8E U+02C7 caron
|
||||
!8F U+00B8 cedilla
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!9D U+00AF macron
|
||||
!9E U+02DB ogonek
|
||||
!A0 U+00A0 space
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00D8 Oslash
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0156 Rcommaaccent
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00C6 AE
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00F8 oslash
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+0157 rcommaaccent
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00E6 ae
|
||||
!C0 U+0104 Aogonek
|
||||
!C1 U+012E Iogonek
|
||||
!C2 U+0100 Amacron
|
||||
!C3 U+0106 Cacute
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+0118 Eogonek
|
||||
!C7 U+0112 Emacron
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0179 Zacute
|
||||
!CB U+0116 Edotaccent
|
||||
!CC U+0122 Gcommaaccent
|
||||
!CD U+0136 Kcommaaccent
|
||||
!CE U+012A Imacron
|
||||
!CF U+013B Lcommaaccent
|
||||
!D0 U+0160 Scaron
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0145 Ncommaaccent
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+014C Omacron
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0172 Uogonek
|
||||
!D9 U+0141 Lslash
|
||||
!DA U+015A Sacute
|
||||
!DB U+016A Umacron
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+017B Zdotaccent
|
||||
!DE U+017D Zcaron
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0105 aogonek
|
||||
!E1 U+012F iogonek
|
||||
!E2 U+0101 amacron
|
||||
!E3 U+0107 cacute
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+0119 eogonek
|
||||
!E7 U+0113 emacron
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+017A zacute
|
||||
!EB U+0117 edotaccent
|
||||
!EC U+0123 gcommaaccent
|
||||
!ED U+0137 kcommaaccent
|
||||
!EE U+012B imacron
|
||||
!EF U+013C lcommaaccent
|
||||
!F0 U+0161 scaron
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0146 ncommaaccent
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+014D omacron
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0173 uogonek
|
||||
!F9 U+0142 lslash
|
||||
!FA U+015B sacute
|
||||
!FB U+016B umacron
|
||||
!FC U+00FC udieresis
|
||||
!FD U+017C zdotaccent
|
||||
!FE U+017E zcaron
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,247 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+0300 gravecomb
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+0309 hookabovecomb
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+01A0 Ohorn
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+01AF Uhorn
|
||||
!DE U+0303 tildecomb
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+0301 acutecomb
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+0323 dotbelowcomb
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+01A1 ohorn
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+01B0 uhorn
|
||||
!FE U+20AB dong
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,225 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!85 U+2026 ellipsis
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0E01 kokaithai
|
||||
!A2 U+0E02 khokhaithai
|
||||
!A3 U+0E03 khokhuatthai
|
||||
!A4 U+0E04 khokhwaithai
|
||||
!A5 U+0E05 khokhonthai
|
||||
!A6 U+0E06 khorakhangthai
|
||||
!A7 U+0E07 ngonguthai
|
||||
!A8 U+0E08 chochanthai
|
||||
!A9 U+0E09 chochingthai
|
||||
!AA U+0E0A chochangthai
|
||||
!AB U+0E0B sosothai
|
||||
!AC U+0E0C chochoethai
|
||||
!AD U+0E0D yoyingthai
|
||||
!AE U+0E0E dochadathai
|
||||
!AF U+0E0F topatakthai
|
||||
!B0 U+0E10 thothanthai
|
||||
!B1 U+0E11 thonangmonthothai
|
||||
!B2 U+0E12 thophuthaothai
|
||||
!B3 U+0E13 nonenthai
|
||||
!B4 U+0E14 dodekthai
|
||||
!B5 U+0E15 totaothai
|
||||
!B6 U+0E16 thothungthai
|
||||
!B7 U+0E17 thothahanthai
|
||||
!B8 U+0E18 thothongthai
|
||||
!B9 U+0E19 nonuthai
|
||||
!BA U+0E1A bobaimaithai
|
||||
!BB U+0E1B poplathai
|
||||
!BC U+0E1C phophungthai
|
||||
!BD U+0E1D fofathai
|
||||
!BE U+0E1E phophanthai
|
||||
!BF U+0E1F fofanthai
|
||||
!C0 U+0E20 phosamphaothai
|
||||
!C1 U+0E21 momathai
|
||||
!C2 U+0E22 yoyakthai
|
||||
!C3 U+0E23 roruathai
|
||||
!C4 U+0E24 ruthai
|
||||
!C5 U+0E25 lolingthai
|
||||
!C6 U+0E26 luthai
|
||||
!C7 U+0E27 wowaenthai
|
||||
!C8 U+0E28 sosalathai
|
||||
!C9 U+0E29 sorusithai
|
||||
!CA U+0E2A sosuathai
|
||||
!CB U+0E2B hohipthai
|
||||
!CC U+0E2C lochulathai
|
||||
!CD U+0E2D oangthai
|
||||
!CE U+0E2E honokhukthai
|
||||
!CF U+0E2F paiyannoithai
|
||||
!D0 U+0E30 saraathai
|
||||
!D1 U+0E31 maihanakatthai
|
||||
!D2 U+0E32 saraaathai
|
||||
!D3 U+0E33 saraamthai
|
||||
!D4 U+0E34 saraithai
|
||||
!D5 U+0E35 saraiithai
|
||||
!D6 U+0E36 sarauethai
|
||||
!D7 U+0E37 saraueethai
|
||||
!D8 U+0E38 sarauthai
|
||||
!D9 U+0E39 sarauuthai
|
||||
!DA U+0E3A phinthuthai
|
||||
!DF U+0E3F bahtthai
|
||||
!E0 U+0E40 saraethai
|
||||
!E1 U+0E41 saraaethai
|
||||
!E2 U+0E42 saraothai
|
||||
!E3 U+0E43 saraaimaimuanthai
|
||||
!E4 U+0E44 saraaimaimalaithai
|
||||
!E5 U+0E45 lakkhangyaothai
|
||||
!E6 U+0E46 maiyamokthai
|
||||
!E7 U+0E47 maitaikhuthai
|
||||
!E8 U+0E48 maiekthai
|
||||
!E9 U+0E49 maithothai
|
||||
!EA U+0E4A maitrithai
|
||||
!EB U+0E4B maichattawathai
|
||||
!EC U+0E4C thanthakhatthai
|
||||
!ED U+0E4D nikhahitthai
|
||||
!EE U+0E4E yamakkanthai
|
||||
!EF U+0E4F fongmanthai
|
||||
!F0 U+0E50 zerothai
|
||||
!F1 U+0E51 onethai
|
||||
!F2 U+0E52 twothai
|
||||
!F3 U+0E53 threethai
|
||||
!F4 U+0E54 fourthai
|
||||
!F5 U+0E55 fivethai
|
||||
!F6 U+0E56 sixthai
|
||||
!F7 U+0E57 seventhai
|
||||
!F8 U+0E58 eightthai
|
||||
!F9 U+0E59 ninethai
|
||||
!FA U+0E5A angkhankhuthai
|
||||
!FB U+0E5B khomutthai
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,248 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0E01 kokaithai
|
||||
!A2 U+0E02 khokhaithai
|
||||
!A3 U+0E03 khokhuatthai
|
||||
!A4 U+0E04 khokhwaithai
|
||||
!A5 U+0E05 khokhonthai
|
||||
!A6 U+0E06 khorakhangthai
|
||||
!A7 U+0E07 ngonguthai
|
||||
!A8 U+0E08 chochanthai
|
||||
!A9 U+0E09 chochingthai
|
||||
!AA U+0E0A chochangthai
|
||||
!AB U+0E0B sosothai
|
||||
!AC U+0E0C chochoethai
|
||||
!AD U+0E0D yoyingthai
|
||||
!AE U+0E0E dochadathai
|
||||
!AF U+0E0F topatakthai
|
||||
!B0 U+0E10 thothanthai
|
||||
!B1 U+0E11 thonangmonthothai
|
||||
!B2 U+0E12 thophuthaothai
|
||||
!B3 U+0E13 nonenthai
|
||||
!B4 U+0E14 dodekthai
|
||||
!B5 U+0E15 totaothai
|
||||
!B6 U+0E16 thothungthai
|
||||
!B7 U+0E17 thothahanthai
|
||||
!B8 U+0E18 thothongthai
|
||||
!B9 U+0E19 nonuthai
|
||||
!BA U+0E1A bobaimaithai
|
||||
!BB U+0E1B poplathai
|
||||
!BC U+0E1C phophungthai
|
||||
!BD U+0E1D fofathai
|
||||
!BE U+0E1E phophanthai
|
||||
!BF U+0E1F fofanthai
|
||||
!C0 U+0E20 phosamphaothai
|
||||
!C1 U+0E21 momathai
|
||||
!C2 U+0E22 yoyakthai
|
||||
!C3 U+0E23 roruathai
|
||||
!C4 U+0E24 ruthai
|
||||
!C5 U+0E25 lolingthai
|
||||
!C6 U+0E26 luthai
|
||||
!C7 U+0E27 wowaenthai
|
||||
!C8 U+0E28 sosalathai
|
||||
!C9 U+0E29 sorusithai
|
||||
!CA U+0E2A sosuathai
|
||||
!CB U+0E2B hohipthai
|
||||
!CC U+0E2C lochulathai
|
||||
!CD U+0E2D oangthai
|
||||
!CE U+0E2E honokhukthai
|
||||
!CF U+0E2F paiyannoithai
|
||||
!D0 U+0E30 saraathai
|
||||
!D1 U+0E31 maihanakatthai
|
||||
!D2 U+0E32 saraaathai
|
||||
!D3 U+0E33 saraamthai
|
||||
!D4 U+0E34 saraithai
|
||||
!D5 U+0E35 saraiithai
|
||||
!D6 U+0E36 sarauethai
|
||||
!D7 U+0E37 saraueethai
|
||||
!D8 U+0E38 sarauthai
|
||||
!D9 U+0E39 sarauuthai
|
||||
!DA U+0E3A phinthuthai
|
||||
!DF U+0E3F bahtthai
|
||||
!E0 U+0E40 saraethai
|
||||
!E1 U+0E41 saraaethai
|
||||
!E2 U+0E42 saraothai
|
||||
!E3 U+0E43 saraaimaimuanthai
|
||||
!E4 U+0E44 saraaimaimalaithai
|
||||
!E5 U+0E45 lakkhangyaothai
|
||||
!E6 U+0E46 maiyamokthai
|
||||
!E7 U+0E47 maitaikhuthai
|
||||
!E8 U+0E48 maiekthai
|
||||
!E9 U+0E49 maithothai
|
||||
!EA U+0E4A maitrithai
|
||||
!EB U+0E4B maichattawathai
|
||||
!EC U+0E4C thanthakhatthai
|
||||
!ED U+0E4D nikhahitthai
|
||||
!EE U+0E4E yamakkanthai
|
||||
!EF U+0E4F fongmanthai
|
||||
!F0 U+0E50 zerothai
|
||||
!F1 U+0E51 onethai
|
||||
!F2 U+0E52 twothai
|
||||
!F3 U+0E53 threethai
|
||||
!F4 U+0E54 fourthai
|
||||
!F5 U+0E55 fivethai
|
||||
!F6 U+0E56 sixthai
|
||||
!F7 U+0E57 seventhai
|
||||
!F8 U+0E58 eightthai
|
||||
!F9 U+0E59 ninethai
|
||||
!FA U+0E5A angkhankhuthai
|
||||
!FB U+0E5B khomutthai
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+20AC Euro
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+0160 Scaron
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0161 scaron
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+017D Zcaron
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+017E zcaron
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0152 OE
|
||||
!BD U+0153 oe
|
||||
!BE U+0178 Ydieresis
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+0105 aogonek
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+20AC Euro
|
||||
!A5 U+201E quotedblbase
|
||||
!A6 U+0160 Scaron
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0161 scaron
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0218 Scommaaccent
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+0179 Zacute
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017A zacute
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+010C Ccaron
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+017D Zcaron
|
||||
!B5 U+201D quotedblright
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+017E zcaron
|
||||
!B9 U+010D ccaron
|
||||
!BA U+0219 scommaaccent
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0152 OE
|
||||
!BD U+0153 oe
|
||||
!BE U+0178 Ydieresis
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0106 Cacute
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+015A Sacute
|
||||
!D8 U+0170 Uhungarumlaut
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0118 Eogonek
|
||||
!DE U+021A Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+0107 cacute
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+015B sacute
|
||||
!F8 U+0171 uhungarumlaut
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0119 eogonek
|
||||
!FE U+021B tcommaaccent
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+02D8 breve
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+013D Lcaron
|
||||
!A6 U+015A Sacute
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+0160 Scaron
|
||||
!AA U+015E Scedilla
|
||||
!AB U+0164 Tcaron
|
||||
!AC U+0179 Zacute
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017D Zcaron
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+0105 aogonek
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+013E lcaron
|
||||
!B6 U+015B sacute
|
||||
!B7 U+02C7 caron
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0161 scaron
|
||||
!BA U+015F scedilla
|
||||
!BB U+0165 tcaron
|
||||
!BC U+017A zacute
|
||||
!BD U+02DD hungarumlaut
|
||||
!BE U+017E zcaron
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+0154 Racute
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0139 Lacute
|
||||
!C6 U+0106 Cacute
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+011A Ecaron
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+010E Dcaron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0147 Ncaron
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0158 Rcaron
|
||||
!D9 U+016E Uring
|
||||
!DA U+00DA Uacute
|
||||
!DB U+0170 Uhungarumlaut
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+0162 Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0155 racute
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+013A lacute
|
||||
!E6 U+0107 cacute
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+011B ecaron
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+010F dcaron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0148 ncaron
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0159 rcaron
|
||||
!F9 U+016F uring
|
||||
!FA U+00FA uacute
|
||||
!FB U+0171 uhungarumlaut
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+0163 tcommaaccent
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+0138 kgreenlandic
|
||||
!A3 U+0156 Rcommaaccent
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0128 Itilde
|
||||
!A6 U+013B Lcommaaccent
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+0160 Scaron
|
||||
!AA U+0112 Emacron
|
||||
!AB U+0122 Gcommaaccent
|
||||
!AC U+0166 Tbar
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017D Zcaron
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+0105 aogonek
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0157 rcommaaccent
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+0129 itilde
|
||||
!B6 U+013C lcommaaccent
|
||||
!B7 U+02C7 caron
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0161 scaron
|
||||
!BA U+0113 emacron
|
||||
!BB U+0123 gcommaaccent
|
||||
!BC U+0167 tbar
|
||||
!BD U+014A Eng
|
||||
!BE U+017E zcaron
|
||||
!BF U+014B eng
|
||||
!C0 U+0100 Amacron
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+012E Iogonek
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+0116 Edotaccent
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+012A Imacron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0145 Ncommaaccent
|
||||
!D2 U+014C Omacron
|
||||
!D3 U+0136 Kcommaaccent
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+0172 Uogonek
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0168 Utilde
|
||||
!DE U+016A Umacron
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0101 amacron
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+012F iogonek
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+0117 edotaccent
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+012B imacron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0146 ncommaaccent
|
||||
!F2 U+014D omacron
|
||||
!F3 U+0137 kcommaaccent
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+0173 uogonek
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0169 utilde
|
||||
!FE U+016B umacron
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0401 afii10023
|
||||
!A2 U+0402 afii10051
|
||||
!A3 U+0403 afii10052
|
||||
!A4 U+0404 afii10053
|
||||
!A5 U+0405 afii10054
|
||||
!A6 U+0406 afii10055
|
||||
!A7 U+0407 afii10056
|
||||
!A8 U+0408 afii10057
|
||||
!A9 U+0409 afii10058
|
||||
!AA U+040A afii10059
|
||||
!AB U+040B afii10060
|
||||
!AC U+040C afii10061
|
||||
!AD U+00AD hyphen
|
||||
!AE U+040E afii10062
|
||||
!AF U+040F afii10145
|
||||
!B0 U+0410 afii10017
|
||||
!B1 U+0411 afii10018
|
||||
!B2 U+0412 afii10019
|
||||
!B3 U+0413 afii10020
|
||||
!B4 U+0414 afii10021
|
||||
!B5 U+0415 afii10022
|
||||
!B6 U+0416 afii10024
|
||||
!B7 U+0417 afii10025
|
||||
!B8 U+0418 afii10026
|
||||
!B9 U+0419 afii10027
|
||||
!BA U+041A afii10028
|
||||
!BB U+041B afii10029
|
||||
!BC U+041C afii10030
|
||||
!BD U+041D afii10031
|
||||
!BE U+041E afii10032
|
||||
!BF U+041F afii10033
|
||||
!C0 U+0420 afii10034
|
||||
!C1 U+0421 afii10035
|
||||
!C2 U+0422 afii10036
|
||||
!C3 U+0423 afii10037
|
||||
!C4 U+0424 afii10038
|
||||
!C5 U+0425 afii10039
|
||||
!C6 U+0426 afii10040
|
||||
!C7 U+0427 afii10041
|
||||
!C8 U+0428 afii10042
|
||||
!C9 U+0429 afii10043
|
||||
!CA U+042A afii10044
|
||||
!CB U+042B afii10045
|
||||
!CC U+042C afii10046
|
||||
!CD U+042D afii10047
|
||||
!CE U+042E afii10048
|
||||
!CF U+042F afii10049
|
||||
!D0 U+0430 afii10065
|
||||
!D1 U+0431 afii10066
|
||||
!D2 U+0432 afii10067
|
||||
!D3 U+0433 afii10068
|
||||
!D4 U+0434 afii10069
|
||||
!D5 U+0435 afii10070
|
||||
!D6 U+0436 afii10072
|
||||
!D7 U+0437 afii10073
|
||||
!D8 U+0438 afii10074
|
||||
!D9 U+0439 afii10075
|
||||
!DA U+043A afii10076
|
||||
!DB U+043B afii10077
|
||||
!DC U+043C afii10078
|
||||
!DD U+043D afii10079
|
||||
!DE U+043E afii10080
|
||||
!DF U+043F afii10081
|
||||
!E0 U+0440 afii10082
|
||||
!E1 U+0441 afii10083
|
||||
!E2 U+0442 afii10084
|
||||
!E3 U+0443 afii10085
|
||||
!E4 U+0444 afii10086
|
||||
!E5 U+0445 afii10087
|
||||
!E6 U+0446 afii10088
|
||||
!E7 U+0447 afii10089
|
||||
!E8 U+0448 afii10090
|
||||
!E9 U+0449 afii10091
|
||||
!EA U+044A afii10092
|
||||
!EB U+044B afii10093
|
||||
!EC U+044C afii10094
|
||||
!ED U+044D afii10095
|
||||
!EE U+044E afii10096
|
||||
!EF U+044F afii10097
|
||||
!F0 U+2116 afii61352
|
||||
!F1 U+0451 afii10071
|
||||
!F2 U+0452 afii10099
|
||||
!F3 U+0453 afii10100
|
||||
!F4 U+0454 afii10101
|
||||
!F5 U+0455 afii10102
|
||||
!F6 U+0456 afii10103
|
||||
!F7 U+0457 afii10104
|
||||
!F8 U+0458 afii10105
|
||||
!F9 U+0459 afii10106
|
||||
!FA U+045A afii10107
|
||||
!FB U+045B afii10108
|
||||
!FC U+045C afii10109
|
||||
!FD U+00A7 section
|
||||
!FE U+045E afii10110
|
||||
!FF U+045F afii10193
|
||||
@@ -1,250 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+2018 quoteleft
|
||||
!A2 U+2019 quoteright
|
||||
!A3 U+00A3 sterling
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AF U+2015 afii00208
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+0384 tonos
|
||||
!B5 U+0385 dieresistonos
|
||||
!B6 U+0386 Alphatonos
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0388 Epsilontonos
|
||||
!B9 U+0389 Etatonos
|
||||
!BA U+038A Iotatonos
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+038C Omicrontonos
|
||||
!BD U+00BD onehalf
|
||||
!BE U+038E Upsilontonos
|
||||
!BF U+038F Omegatonos
|
||||
!C0 U+0390 iotadieresistonos
|
||||
!C1 U+0391 Alpha
|
||||
!C2 U+0392 Beta
|
||||
!C3 U+0393 Gamma
|
||||
!C4 U+0394 Delta
|
||||
!C5 U+0395 Epsilon
|
||||
!C6 U+0396 Zeta
|
||||
!C7 U+0397 Eta
|
||||
!C8 U+0398 Theta
|
||||
!C9 U+0399 Iota
|
||||
!CA U+039A Kappa
|
||||
!CB U+039B Lambda
|
||||
!CC U+039C Mu
|
||||
!CD U+039D Nu
|
||||
!CE U+039E Xi
|
||||
!CF U+039F Omicron
|
||||
!D0 U+03A0 Pi
|
||||
!D1 U+03A1 Rho
|
||||
!D3 U+03A3 Sigma
|
||||
!D4 U+03A4 Tau
|
||||
!D5 U+03A5 Upsilon
|
||||
!D6 U+03A6 Phi
|
||||
!D7 U+03A7 Chi
|
||||
!D8 U+03A8 Psi
|
||||
!D9 U+03A9 Omega
|
||||
!DA U+03AA Iotadieresis
|
||||
!DB U+03AB Upsilondieresis
|
||||
!DC U+03AC alphatonos
|
||||
!DD U+03AD epsilontonos
|
||||
!DE U+03AE etatonos
|
||||
!DF U+03AF iotatonos
|
||||
!E0 U+03B0 upsilondieresistonos
|
||||
!E1 U+03B1 alpha
|
||||
!E2 U+03B2 beta
|
||||
!E3 U+03B3 gamma
|
||||
!E4 U+03B4 delta
|
||||
!E5 U+03B5 epsilon
|
||||
!E6 U+03B6 zeta
|
||||
!E7 U+03B7 eta
|
||||
!E8 U+03B8 theta
|
||||
!E9 U+03B9 iota
|
||||
!EA U+03BA kappa
|
||||
!EB U+03BB lambda
|
||||
!EC U+03BC mu
|
||||
!ED U+03BD nu
|
||||
!EE U+03BE xi
|
||||
!EF U+03BF omicron
|
||||
!F0 U+03C0 pi
|
||||
!F1 U+03C1 rho
|
||||
!F2 U+03C2 sigma1
|
||||
!F3 U+03C3 sigma
|
||||
!F4 U+03C4 tau
|
||||
!F5 U+03C5 upsilon
|
||||
!F6 U+03C6 phi
|
||||
!F7 U+03C7 chi
|
||||
!F8 U+03C8 psi
|
||||
!F9 U+03C9 omega
|
||||
!FA U+03CA iotadieresis
|
||||
!FB U+03CB upsilondieresis
|
||||
!FC U+03CC omicrontonos
|
||||
!FD U+03CD upsilontonos
|
||||
!FE U+03CE omegatonos
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+011E Gbreve
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0130 Idotaccent
|
||||
!DE U+015E Scedilla
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+011F gbreve
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0131 dotlessi
|
||||
!FE U+015F scedilla
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+2500 SF100000
|
||||
!81 U+2502 SF110000
|
||||
!82 U+250C SF010000
|
||||
!83 U+2510 SF030000
|
||||
!84 U+2514 SF020000
|
||||
!85 U+2518 SF040000
|
||||
!86 U+251C SF080000
|
||||
!87 U+2524 SF090000
|
||||
!88 U+252C SF060000
|
||||
!89 U+2534 SF070000
|
||||
!8A U+253C SF050000
|
||||
!8B U+2580 upblock
|
||||
!8C U+2584 dnblock
|
||||
!8D U+2588 block
|
||||
!8E U+258C lfblock
|
||||
!8F U+2590 rtblock
|
||||
!90 U+2591 ltshade
|
||||
!91 U+2592 shade
|
||||
!92 U+2593 dkshade
|
||||
!93 U+2320 integraltp
|
||||
!94 U+25A0 filledbox
|
||||
!95 U+2219 periodcentered
|
||||
!96 U+221A radical
|
||||
!97 U+2248 approxequal
|
||||
!98 U+2264 lessequal
|
||||
!99 U+2265 greaterequal
|
||||
!9A U+00A0 space
|
||||
!9B U+2321 integralbt
|
||||
!9C U+00B0 degree
|
||||
!9D U+00B2 twosuperior
|
||||
!9E U+00B7 periodcentered
|
||||
!9F U+00F7 divide
|
||||
!A0 U+2550 SF430000
|
||||
!A1 U+2551 SF240000
|
||||
!A2 U+2552 SF510000
|
||||
!A3 U+0451 afii10071
|
||||
!A4 U+2553 SF520000
|
||||
!A5 U+2554 SF390000
|
||||
!A6 U+2555 SF220000
|
||||
!A7 U+2556 SF210000
|
||||
!A8 U+2557 SF250000
|
||||
!A9 U+2558 SF500000
|
||||
!AA U+2559 SF490000
|
||||
!AB U+255A SF380000
|
||||
!AC U+255B SF280000
|
||||
!AD U+255C SF270000
|
||||
!AE U+255D SF260000
|
||||
!AF U+255E SF360000
|
||||
!B0 U+255F SF370000
|
||||
!B1 U+2560 SF420000
|
||||
!B2 U+2561 SF190000
|
||||
!B3 U+0401 afii10023
|
||||
!B4 U+2562 SF200000
|
||||
!B5 U+2563 SF230000
|
||||
!B6 U+2564 SF470000
|
||||
!B7 U+2565 SF480000
|
||||
!B8 U+2566 SF410000
|
||||
!B9 U+2567 SF450000
|
||||
!BA U+2568 SF460000
|
||||
!BB U+2569 SF400000
|
||||
!BC U+256A SF540000
|
||||
!BD U+256B SF530000
|
||||
!BE U+256C SF440000
|
||||
!BF U+00A9 copyright
|
||||
!C0 U+044E afii10096
|
||||
!C1 U+0430 afii10065
|
||||
!C2 U+0431 afii10066
|
||||
!C3 U+0446 afii10088
|
||||
!C4 U+0434 afii10069
|
||||
!C5 U+0435 afii10070
|
||||
!C6 U+0444 afii10086
|
||||
!C7 U+0433 afii10068
|
||||
!C8 U+0445 afii10087
|
||||
!C9 U+0438 afii10074
|
||||
!CA U+0439 afii10075
|
||||
!CB U+043A afii10076
|
||||
!CC U+043B afii10077
|
||||
!CD U+043C afii10078
|
||||
!CE U+043D afii10079
|
||||
!CF U+043E afii10080
|
||||
!D0 U+043F afii10081
|
||||
!D1 U+044F afii10097
|
||||
!D2 U+0440 afii10082
|
||||
!D3 U+0441 afii10083
|
||||
!D4 U+0442 afii10084
|
||||
!D5 U+0443 afii10085
|
||||
!D6 U+0436 afii10072
|
||||
!D7 U+0432 afii10067
|
||||
!D8 U+044C afii10094
|
||||
!D9 U+044B afii10093
|
||||
!DA U+0437 afii10073
|
||||
!DB U+0448 afii10090
|
||||
!DC U+044D afii10095
|
||||
!DD U+0449 afii10091
|
||||
!DE U+0447 afii10089
|
||||
!DF U+044A afii10092
|
||||
!E0 U+042E afii10048
|
||||
!E1 U+0410 afii10017
|
||||
!E2 U+0411 afii10018
|
||||
!E3 U+0426 afii10040
|
||||
!E4 U+0414 afii10021
|
||||
!E5 U+0415 afii10022
|
||||
!E6 U+0424 afii10038
|
||||
!E7 U+0413 afii10020
|
||||
!E8 U+0425 afii10039
|
||||
!E9 U+0418 afii10026
|
||||
!EA U+0419 afii10027
|
||||
!EB U+041A afii10028
|
||||
!EC U+041B afii10029
|
||||
!ED U+041C afii10030
|
||||
!EE U+041D afii10031
|
||||
!EF U+041E afii10032
|
||||
!F0 U+041F afii10033
|
||||
!F1 U+042F afii10049
|
||||
!F2 U+0420 afii10034
|
||||
!F3 U+0421 afii10035
|
||||
!F4 U+0422 afii10036
|
||||
!F5 U+0423 afii10037
|
||||
!F6 U+0416 afii10024
|
||||
!F7 U+0412 afii10019
|
||||
!F8 U+042C afii10046
|
||||
!F9 U+042B afii10045
|
||||
!FA U+0417 afii10025
|
||||
!FB U+0428 afii10042
|
||||
!FC U+042D afii10047
|
||||
!FD U+0429 afii10043
|
||||
!FE U+0427 afii10041
|
||||
!FF U+042A afii10044
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+2500 SF100000
|
||||
!81 U+2502 SF110000
|
||||
!82 U+250C SF010000
|
||||
!83 U+2510 SF030000
|
||||
!84 U+2514 SF020000
|
||||
!85 U+2518 SF040000
|
||||
!86 U+251C SF080000
|
||||
!87 U+2524 SF090000
|
||||
!88 U+252C SF060000
|
||||
!89 U+2534 SF070000
|
||||
!8A U+253C SF050000
|
||||
!8B U+2580 upblock
|
||||
!8C U+2584 dnblock
|
||||
!8D U+2588 block
|
||||
!8E U+258C lfblock
|
||||
!8F U+2590 rtblock
|
||||
!90 U+2591 ltshade
|
||||
!91 U+2592 shade
|
||||
!92 U+2593 dkshade
|
||||
!93 U+2320 integraltp
|
||||
!94 U+25A0 filledbox
|
||||
!95 U+2022 bullet
|
||||
!96 U+221A radical
|
||||
!97 U+2248 approxequal
|
||||
!98 U+2264 lessequal
|
||||
!99 U+2265 greaterequal
|
||||
!9A U+00A0 space
|
||||
!9B U+2321 integralbt
|
||||
!9C U+00B0 degree
|
||||
!9D U+00B2 twosuperior
|
||||
!9E U+00B7 periodcentered
|
||||
!9F U+00F7 divide
|
||||
!A0 U+2550 SF430000
|
||||
!A1 U+2551 SF240000
|
||||
!A2 U+2552 SF510000
|
||||
!A3 U+0451 afii10071
|
||||
!A4 U+0454 afii10101
|
||||
!A5 U+2554 SF390000
|
||||
!A6 U+0456 afii10103
|
||||
!A7 U+0457 afii10104
|
||||
!A8 U+2557 SF250000
|
||||
!A9 U+2558 SF500000
|
||||
!AA U+2559 SF490000
|
||||
!AB U+255A SF380000
|
||||
!AC U+255B SF280000
|
||||
!AD U+0491 afii10098
|
||||
!AE U+255D SF260000
|
||||
!AF U+255E SF360000
|
||||
!B0 U+255F SF370000
|
||||
!B1 U+2560 SF420000
|
||||
!B2 U+2561 SF190000
|
||||
!B3 U+0401 afii10023
|
||||
!B4 U+0404 afii10053
|
||||
!B5 U+2563 SF230000
|
||||
!B6 U+0406 afii10055
|
||||
!B7 U+0407 afii10056
|
||||
!B8 U+2566 SF410000
|
||||
!B9 U+2567 SF450000
|
||||
!BA U+2568 SF460000
|
||||
!BB U+2569 SF400000
|
||||
!BC U+256A SF540000
|
||||
!BD U+0490 afii10050
|
||||
!BE U+256C SF440000
|
||||
!BF U+00A9 copyright
|
||||
!C0 U+044E afii10096
|
||||
!C1 U+0430 afii10065
|
||||
!C2 U+0431 afii10066
|
||||
!C3 U+0446 afii10088
|
||||
!C4 U+0434 afii10069
|
||||
!C5 U+0435 afii10070
|
||||
!C6 U+0444 afii10086
|
||||
!C7 U+0433 afii10068
|
||||
!C8 U+0445 afii10087
|
||||
!C9 U+0438 afii10074
|
||||
!CA U+0439 afii10075
|
||||
!CB U+043A afii10076
|
||||
!CC U+043B afii10077
|
||||
!CD U+043C afii10078
|
||||
!CE U+043D afii10079
|
||||
!CF U+043E afii10080
|
||||
!D0 U+043F afii10081
|
||||
!D1 U+044F afii10097
|
||||
!D2 U+0440 afii10082
|
||||
!D3 U+0441 afii10083
|
||||
!D4 U+0442 afii10084
|
||||
!D5 U+0443 afii10085
|
||||
!D6 U+0436 afii10072
|
||||
!D7 U+0432 afii10067
|
||||
!D8 U+044C afii10094
|
||||
!D9 U+044B afii10093
|
||||
!DA U+0437 afii10073
|
||||
!DB U+0448 afii10090
|
||||
!DC U+044D afii10095
|
||||
!DD U+0449 afii10091
|
||||
!DE U+0447 afii10089
|
||||
!DF U+044A afii10092
|
||||
!E0 U+042E afii10048
|
||||
!E1 U+0410 afii10017
|
||||
!E2 U+0411 afii10018
|
||||
!E3 U+0426 afii10040
|
||||
!E4 U+0414 afii10021
|
||||
!E5 U+0415 afii10022
|
||||
!E6 U+0424 afii10038
|
||||
!E7 U+0413 afii10020
|
||||
!E8 U+0425 afii10039
|
||||
!E9 U+0418 afii10026
|
||||
!EA U+0419 afii10027
|
||||
!EB U+041A afii10028
|
||||
!EC U+041B afii10029
|
||||
!ED U+041C afii10030
|
||||
!EE U+041D afii10031
|
||||
!EF U+041E afii10032
|
||||
!F0 U+041F afii10033
|
||||
!F1 U+042F afii10049
|
||||
!F2 U+0420 afii10034
|
||||
!F3 U+0421 afii10035
|
||||
!F4 U+0422 afii10036
|
||||
!F5 U+0423 afii10037
|
||||
!F6 U+0416 afii10024
|
||||
!F7 U+0412 afii10019
|
||||
!F8 U+042C afii10046
|
||||
!F9 U+042B afii10045
|
||||
!FA U+0417 afii10025
|
||||
!FB U+0428 afii10042
|
||||
!FC U+042D afii10047
|
||||
!FD U+0429 afii10043
|
||||
!FE U+0427 afii10041
|
||||
!FF U+042A afii10044
|
||||
@@ -1,416 +0,0 @@
|
||||
<?php
|
||||
/*******************************************************************************
|
||||
* Utility to generate font definition files *
|
||||
* Version: 1.13 *
|
||||
* Date: 2004-12-31 *
|
||||
*******************************************************************************/
|
||||
|
||||
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']) and 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']) and $fm['IsFixedPitch'])
|
||||
$flags+=1<<0;
|
||||
if($symbolic)
|
||||
$flags+=1<<2;
|
||||
if(!$symbolic)
|
||||
$flags+=1<<5;
|
||||
if(isset($fm['ItalicAngle']) and $fm['ItalicAngle']!=0)
|
||||
$flags+=1<<6;
|
||||
$fd.=",'Flags'=>".$flags;
|
||||
//FontBBox
|
||||
if(isset($fm['FontBBox']))
|
||||
$fbb=$fm['FontBBox'];
|
||||
else
|
||||
$fbb=array(0,$des-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']) and eregi('(bold|black)',$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 and $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='t')
|
||||
{
|
||||
$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 and !$pp and !$e)
|
||||
echo '<B>Warning:</B> font license does not allow embedding';
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* $fontfile : chemin du fichier TTF (ou chaîne vide si pas d'incorporation) *
|
||||
* $afmfile : chemin du fichier AFM *
|
||||
* $enc : encodage (ou chaîne vide si la police est symbolique) *
|
||||
* $patch : patch optionnel pour l'encodage *
|
||||
* $type : type de la police si $fontfile est vide *
|
||||
*******************************************************************************/
|
||||
function MakeFont($fontfile,$afmfile,$enc='cp1252',$patch=array(),$type='TrueType')
|
||||
{
|
||||
//Generate a font definition file
|
||||
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' and $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 and 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);
|
||||
echo 'Font definition file generated ('.$basename.'.php'.')<BR>';
|
||||
}
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?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);
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,630 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
require_once("fpdf.php");
|
||||
|
||||
|
||||
class MyPdf extends FPDF {
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*
|
||||
* @param $orientation: p oder portrait = Hochformat
|
||||
* l oder landscape = Querformat
|
||||
*
|
||||
* $unit: pt = Point
|
||||
* mm = Millimeter
|
||||
* cm = Zentimeter
|
||||
* in = Inch
|
||||
*
|
||||
* $format: A3
|
||||
* A4
|
||||
* A5
|
||||
* letter
|
||||
* legal
|
||||
*/
|
||||
function __construct($orientation='P',$unit='mm',$format='A4')
|
||||
{
|
||||
//Call parent constructor
|
||||
parent::__construct($orientation,$unit,$format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Additional getter methods
|
||||
**/
|
||||
function GetFontFamily() {
|
||||
return $this->FontFamily;
|
||||
}
|
||||
|
||||
function GetFontStyle() {
|
||||
return $this->FontStyle;
|
||||
}
|
||||
|
||||
function GetFontSize() {
|
||||
return $this->FontSize;
|
||||
}
|
||||
function GetFontSizePt() {
|
||||
return $this->FontSizePt;
|
||||
}
|
||||
function GetDrawColor() {
|
||||
return $this->DrawColor;
|
||||
}
|
||||
function GetFillColor() {
|
||||
return $this->FillColor;
|
||||
}
|
||||
function GetTextColor() {
|
||||
return $this->TextColor;
|
||||
}
|
||||
|
||||
function GetPageWidth() {
|
||||
return $this->w-$this->rMargin-$this->lMargin;
|
||||
}
|
||||
|
||||
function GetLineWidth() {
|
||||
return $this->LineWidth;
|
||||
}
|
||||
|
||||
function FontExists($family, $style='') {
|
||||
$fontkey=$family.$style;
|
||||
return isset($this->fonts[$fontkey]) ||
|
||||
isset($this->CoreFonts[$fontkey]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Methods to capture output
|
||||
*/
|
||||
function startCapture() {
|
||||
if($this->state==2) {
|
||||
$buf = $this->pages[$this->page];
|
||||
$this->pages[$this->page] = "";
|
||||
return $buf;
|
||||
}
|
||||
else {
|
||||
$buf = $this->buffer;
|
||||
$this->buffer = "";
|
||||
return $buf;
|
||||
}
|
||||
}
|
||||
|
||||
function endCapture($buffer) {
|
||||
if($this->state==2) {
|
||||
$buf = $this->pages[$this->page];
|
||||
$this->pages[$this->page] = $buffer;
|
||||
return $buf;
|
||||
}
|
||||
else {
|
||||
$buf = $this->buffer;
|
||||
$this->buffer = $buffer;
|
||||
return $buf;
|
||||
}
|
||||
}
|
||||
|
||||
function appendBuffer($buffer) {
|
||||
if($this->state==2) {
|
||||
$this->pages[$this->page] .= $buffer;
|
||||
}
|
||||
else {
|
||||
$this->buffer .= $buffer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of characters having space whithin the
|
||||
* given width, respecting not to break words
|
||||
*/
|
||||
function GetNumberOfChars($width, $s, $fontsize=null) {
|
||||
//Get width of a string in the current font
|
||||
// $s=(string)$s;
|
||||
if($fontsize==null)
|
||||
$fontsize=$this->FontSize;
|
||||
//echo "width:$width s:$s font:$fontsize";
|
||||
$cw=&$this->CurrentFont['cw'];
|
||||
$w=0;
|
||||
$wordPos = 0;
|
||||
$l=strlen($s);
|
||||
$width = $width*1000/$fontsize;
|
||||
for($i=0;$i<$l;$i++) {
|
||||
$w+=$cw[$s{$i}];
|
||||
if ($s{$i} == ' ') {
|
||||
$wordPos = $i;
|
||||
}
|
||||
if ($w >= $width) {
|
||||
if ($wordPos > 0) {
|
||||
return $wordPos;
|
||||
}
|
||||
else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return (($w <= $width)?$l:-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write string regarding to \n as line breaks
|
||||
* Return an array containing number of line, width and height
|
||||
* of this textual block. The align paramtere accepts L, R and C
|
||||
* get values using:
|
||||
* list($width, $height, $no, $firstX, $firstY, $lastX, $lastYl) = $pdf->Text2();
|
||||
**/
|
||||
function Text2($x, $y, $text, $align="L", $lineHeight=NULL, $xNewLine=NULL, $width=NULL) {
|
||||
if (!$xNewLine) {
|
||||
$xNewLine = $x;
|
||||
}
|
||||
|
||||
$lines = explode('\n', $text);
|
||||
$height = ($lineHeight)?$lineHeight:$this->FontSize;
|
||||
//oesi - add parameter width for set the content-width of fo:block
|
||||
if($width!=NULL)
|
||||
{
|
||||
$pw = $xNewLine+$width;
|
||||
}
|
||||
else
|
||||
$pw = $this->GetPageWidth();
|
||||
//echo "x: $x width: $width pw: $pw<br>";
|
||||
$nb = 0;
|
||||
$maxWidth = 0;
|
||||
$sx = $x;
|
||||
$sy = $y;
|
||||
foreach($lines as $line)
|
||||
{
|
||||
|
||||
$width = $this->GetStringWidth($line);
|
||||
do
|
||||
{
|
||||
//$w=$this->w-$this->rMargin-$x;
|
||||
$w = $pw-$x; //oesi - changed
|
||||
//echo "w:$w<br>";
|
||||
//$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
|
||||
$noc = $this->GetNumberOfChars($w, $line);
|
||||
//echo "noc:$noc xNewLine: $xNewLine x:$x w:$w strlen:".strlen($line)." line:$line<br>";
|
||||
if ($noc == -1)
|
||||
{
|
||||
if ($x == $xNewLine)
|
||||
{
|
||||
//word has not enough space on one line, draw it beyond borders
|
||||
$noc = strlen($line);
|
||||
}
|
||||
else
|
||||
{
|
||||
//echo "NEWLINE";
|
||||
if ($nb == 0)
|
||||
{
|
||||
$sy += $height;
|
||||
$sx = $xNewLine;
|
||||
}
|
||||
//add newline and try again
|
||||
$y += $height;
|
||||
$nb++;
|
||||
$x = $xNewLine;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$showLine = substr($line, 0, $noc);
|
||||
$textWidth = $this->GetStringWidth($showLine);
|
||||
//echo "showline: $showLine<br>";
|
||||
//echo "nb:$nb x:$x w:$w textwidth:$textWidth showline:$showLine<br>";
|
||||
switch ($align)
|
||||
{
|
||||
case "R":
|
||||
$tx = $pw-$textWidth;
|
||||
break;
|
||||
case "C":
|
||||
$tx = ($pw-$x-$textWidth)/2 + $x;
|
||||
break;
|
||||
case "L":
|
||||
default:
|
||||
$tx = $x;
|
||||
}
|
||||
|
||||
$this->Text($tx, $y+$height, $showLine);
|
||||
$line = trim(substr($line, $noc));
|
||||
$width = $this->GetStringWidth($line);
|
||||
|
||||
if ($textWidth > $maxWidth)
|
||||
{
|
||||
$maxWidth = $textWidth;
|
||||
}
|
||||
$y += $height;
|
||||
$nb++;
|
||||
//oesi - wenn er die zeileumbricht dann soll in der naechsten zeile um
|
||||
//1 eingerueckt werden sonst schaut des in einer tablle nicht gut aus
|
||||
//$this->GetStringWidth(" ") statt '1' is bessa - MP
|
||||
if($width!=0)
|
||||
$x = $xNewLine+$this->GetStringWidth(" ");
|
||||
else
|
||||
$x = $xNewLine;
|
||||
} while ($width > 0);
|
||||
}
|
||||
//$this->y = $y;
|
||||
$tot_height = $nb * $height;
|
||||
|
||||
return array($maxWidth, $tot_height, $nb, $sx, $sy, $tx+$textWidth, $y-$height);
|
||||
}
|
||||
|
||||
/*
|
||||
This extension allows to set a dash pattern and draw dashed lines or rectangles.
|
||||
$pdf->SetDash(4,2); //4mm on, 2mm off
|
||||
$pdf->Rect(20,30,170,20);
|
||||
$pdf->SetDash(); //restore no dash
|
||||
*/
|
||||
function SetDash($black=false,$white=false)
|
||||
{
|
||||
if($black and $white)
|
||||
$s=sprintf('[%.3f %.3f] 0 d',$black*$this->k,$white*$this->k);
|
||||
else
|
||||
$s='[] 0 d';
|
||||
$this->_out($s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw polygons
|
||||
* $pdf->Polygon(array(50,115,150,115,100,20),'FD');
|
||||
**/
|
||||
function Polygon($points, $style='D')
|
||||
{
|
||||
//Draw a polygon
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rounded rect
|
||||
* $pdf->RoundedRect(70, 30, 68, 46, 3.5, 'DF');
|
||||
*/
|
||||
function RoundedRect($x, $y, $w, $h,$r, $style = '')
|
||||
{
|
||||
$k = $this->k;
|
||||
$hp = $this->h;
|
||||
if($style=='F')
|
||||
$op='f';
|
||||
elseif($style=='FD' or $style=='DF')
|
||||
$op='B';
|
||||
else
|
||||
$op='S';
|
||||
$MyArc = 4/3 * (sqrt(2) - 1);
|
||||
$this->_out(sprintf('%.2f %.2f m',($x+$r)*$k,($hp-$y)*$k ));
|
||||
$xc = $x+$w-$r ;
|
||||
$yc = $y+$r;
|
||||
$this->_out(sprintf('%.2f %.2f l', $xc*$k,($hp-$y)*$k ));
|
||||
|
||||
$this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc,
|
||||
$xc + $r, $yc);
|
||||
$xc = $x+$w-$r ;
|
||||
$yc = $y+$h-$r;
|
||||
$this->_out(sprintf('%.2f %.2f l',($x+$w)*$k,($hp-$yc)*$k));
|
||||
$this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc,
|
||||
$yc + $r);
|
||||
$xc = $x+$r ;
|
||||
$yc = $y+$h-$r;
|
||||
$this->_out(sprintf('%.2f %.2f l',$xc*$k,($hp-($y+$h))*$k));
|
||||
$this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc,
|
||||
$xc - $r, $yc);
|
||||
$xc = $x+$r ;
|
||||
$yc = $y+$r;
|
||||
$this->_out(sprintf('%.2f %.2f l',($x)*$k,($hp-$yc)*$k ));
|
||||
$this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc,
|
||||
$yc - $r);
|
||||
$this->_out($op);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotate content. End rotation by call to Rotate(0)
|
||||
* $pdf->Rotate($angle,$x,$y);
|
||||
* $pdf->Text($x,$y,$txt);
|
||||
* $pdf->Rotate(0);
|
||||
*/
|
||||
function Rotate($angle,$x=-1,$y=-1) {
|
||||
if($x==-1)
|
||||
$x=$this->x;
|
||||
if($y==-1)
|
||||
$y=$this->y;
|
||||
if($this->angle!=0)
|
||||
$this->_out('Q');
|
||||
$this->angle=$angle;
|
||||
if($angle!=0)
|
||||
{
|
||||
$angle*=M_PI/180;
|
||||
$c=cos($angle);
|
||||
$s=sin($angle);
|
||||
$cx=$x*$this->k;
|
||||
$cy=($this->h-$y)*$this->k;
|
||||
$this->_out(sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
|
||||
}
|
||||
}
|
||||
|
||||
// Draws a cubic B�zier curve from last draw point
|
||||
// Parameters:
|
||||
// - x1, y1: Control point 1
|
||||
// - x2, y2: Control point 2
|
||||
// - x3, y3: End point
|
||||
function CubicBezier($x1, $y1, $x2, $y2, $x3, $y3, $style='D') {
|
||||
if($style=='F')
|
||||
$op='f';
|
||||
elseif($style=='FD' or $style=='DF')
|
||||
$op='B';
|
||||
else
|
||||
$op='S';
|
||||
$this->_Curve($x1, $y1, $x2, $y2, $x3, $y3);
|
||||
$this->_out($op);
|
||||
}
|
||||
|
||||
// Draws an ellipse
|
||||
// Parameters:
|
||||
// - x0, y0: Center point
|
||||
// - rx, ry: Horizontal and vertical radius (if ry = 0, draws a circle)
|
||||
// - angle: Orientation angle (anti-clockwise)
|
||||
// - astart: Start angle
|
||||
// - afinish: Finish angle
|
||||
// - style: Style of ellipse (draw and/or fill: D, F, DF, FD, C (D + close))
|
||||
// - line_style: Line style for ellipse. Array like for SetLineStyle
|
||||
// - fill_color: Fill color. Array with components (red, green, blue)
|
||||
// - nSeg: Ellipse is made up of nSeg B�zier curves
|
||||
function Ellipse($x0, $y0, $rx, $ry = 0, $angle = 0, $astart = 0, $afinish = 360, $style = '', $fill_color = null, $nSeg = 8) {
|
||||
if ($rx) {
|
||||
if (!(false === strpos($style, 'F')) && $fill_color) {
|
||||
list($r, $g, $b) = $fill_color;
|
||||
$this->SetFillColor($r, $g, $b);
|
||||
}
|
||||
switch ($style) {
|
||||
case 'F':
|
||||
$op = 'f';
|
||||
$line_style = null;
|
||||
break;
|
||||
case 'FD': case 'DF':
|
||||
$op = 'B';
|
||||
break;
|
||||
case 'C':
|
||||
$op = 's'; // small 's' means closing the path as well
|
||||
break;
|
||||
default:
|
||||
$op = 'S';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($rx) {
|
||||
if (!$ry)
|
||||
$ry = $rx;
|
||||
$rx *= $this->k;
|
||||
$ry *= $this->k;
|
||||
if ($nSeg < 2)
|
||||
$nSeg = 2;
|
||||
|
||||
$astart = deg2rad((float) $astart);
|
||||
$afinish = deg2rad((float) $afinish);
|
||||
$totalAngle = $afinish - $astart;
|
||||
|
||||
$dt = $totalAngle/$nSeg;
|
||||
$dtm = $dt/3;
|
||||
|
||||
$x0 *= $this->k;
|
||||
$y0 = ($this->h - $y0) * $this->k;
|
||||
if ($angle != 0) {
|
||||
$a = -deg2rad((float) $angle);
|
||||
$this->_out(sprintf('q %.2f %.2f %.2f %.2f %.2f %.2f cm', cos($a), -1 * sin($a), sin($a), cos($a), $x0*10, $y0*10));
|
||||
$x0 = 0;
|
||||
$y0 = 0;
|
||||
}
|
||||
|
||||
$t1 = $astart;
|
||||
$a0 = $x0 + ($rx * cos($t1));
|
||||
$b0 = $y0 + ($ry * sin($t1));
|
||||
$c0 = -$rx * sin($t1);
|
||||
$d0 = $ry * cos($t1);
|
||||
$this->_Point($a0 / $this->k, $this->h - ($b0 / $this->k));
|
||||
for ($i = 1; $i <= $nSeg; $i++) {
|
||||
// Draw this bit of the total curve
|
||||
$t1 = ($i * $dt) + $astart;
|
||||
$a1 = $x0 + ($rx * cos($t1));
|
||||
$b1 = $y0 + ($ry * sin($t1));
|
||||
$c1 = -$rx * sin($t1);
|
||||
$d1 = $ry * cos($t1);
|
||||
$this->_Curve(($a0 + ($c0 * $dtm)) / $this->k,
|
||||
$this->h - (($b0 + ($d0 * $dtm)) / $this->k),
|
||||
($a1 - ($c1 * $dtm)) / $this->k,
|
||||
$this->h - (($b1 - ($d1 * $dtm)) / $this->k),
|
||||
$a1 / $this->k,
|
||||
$this->h - ($b1 / $this->k));
|
||||
$a0 = $a1;
|
||||
$b0 = $b1;
|
||||
$c0 = $c1;
|
||||
$d0 = $d1;
|
||||
}
|
||||
if ($angle !=0) {
|
||||
$this->_out('Q');
|
||||
}
|
||||
}
|
||||
$this->_out($op);
|
||||
}
|
||||
}
|
||||
|
||||
function ClosePath($style="D") {
|
||||
if($style=='F')
|
||||
$op='f';
|
||||
elseif($style=='FD' or $style=='DF')
|
||||
$op='B';
|
||||
else
|
||||
$op='S';
|
||||
|
||||
$this->_out(sprintf('h %s', $op));
|
||||
}
|
||||
|
||||
function _Style($style="D") {
|
||||
if($style=='F')
|
||||
$op='f';
|
||||
elseif($style=='FD' or $style=='DF')
|
||||
$op='B';
|
||||
else
|
||||
$op='S';
|
||||
|
||||
$this->_out(sprintf('%s', $op));
|
||||
}
|
||||
|
||||
// Draws a circle
|
||||
// Parameters:
|
||||
// - x0, y0: Center point
|
||||
// - r: Radius
|
||||
// - astart: Start angle
|
||||
// - afinish: Finish angle
|
||||
// - style: Style of circle (draw and/or fill) (D, F, DF, FD, C (D + close))
|
||||
// - line_style: Line style for circle. Array like for SetLineStyle
|
||||
// - fill_color: Fill color. Array with components (red, green, blue)
|
||||
// - nSeg: Ellipse is made up of nSeg B�zier curves
|
||||
function Circle($x0, $y0, $r, $astart = 0, $afinish = 360, $style = '', $fill_color = null, $nSeg = 8) {
|
||||
$this->Ellipse($x0, $y0, $r, 0, 0, $astart, $afinish, $style, $line_style, $fill_color, $nSeg);
|
||||
}
|
||||
|
||||
|
||||
// Sets a draw point
|
||||
// Parameters:
|
||||
// - x, y: Point
|
||||
function _Point($x, $y) {
|
||||
$this->_out(sprintf('%.2f %.2f m', $x * $this->k, ($this->h - $y) * $this->k));
|
||||
}
|
||||
|
||||
// Draws a B�zier curve from last draw point
|
||||
// Parameters:
|
||||
// - x1, y1: Control point 1
|
||||
// - x2, y2: Control point 2
|
||||
// - x3, y3: End point
|
||||
function _Curve($x1, $y1, $x2, $y2, $x3, $y3) {
|
||||
$this->_out(sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c', $x1 * $this->k, ($this->h - $y1) * $this->k, $x2 * $this->k, ($this->h - $y2) * $this->k, $x3 * $this->k, ($this->h - $y3) * $this->k));
|
||||
}
|
||||
|
||||
|
||||
// Draws a cubic B�zier curve from last draw point
|
||||
// Parameters:
|
||||
// - x2, y2: Control point 2
|
||||
// - x3, y3: End point
|
||||
|
||||
function _CurveRef1($x2, $y2, $x3, $y3) {
|
||||
$this->_out(sprintf('%.2f %.2f %.2f %.2f v', $x2 * $this->k, ($this->h - $y2) * $this->k, $x3 * $this->k, ($this->h - $y3) * $this->k));
|
||||
}
|
||||
|
||||
// Draws a cubic B�zier curve from last draw point
|
||||
// Parameters:
|
||||
// - x1, y1: Control point 1
|
||||
// - x3, y3: End point
|
||||
|
||||
function _CurveRef2($x1, $y1, $x3, $y3) {
|
||||
$this->_out(sprintf('%.2f %.2f %.2f %.2f y', $x1 * $this->k, ($this->h - $y1) * $this->k, $x3 * $this->k, ($this->h - $y3) * $this->k));
|
||||
}
|
||||
|
||||
// Draws a line from last draw point
|
||||
// Parameters:
|
||||
// - x, y: End point
|
||||
function _Line($x, $y) {
|
||||
$this->_out(sprintf('%.2f %.2f l', $x * $this->k, ($this->h - $y) * $this->k));
|
||||
}
|
||||
|
||||
|
||||
// Draws an ellipse
|
||||
// Parameters:
|
||||
// - x0, y0: Center point
|
||||
// - rx, ry: Horizontal and vertical radius (if ry = 0, draws a circle)
|
||||
// - angle: Orientation angle (anti-clockwise)
|
||||
// - astart: Start angle
|
||||
// - afinish: Finish angle
|
||||
// - style: Style of ellipse (draw and/or fill: D, F, DF, FD, C (D + close))
|
||||
// - line_style: Line style for ellipse. Array like for SetLineStyle
|
||||
// - fill_color: Fill color. Array with components (red, green, blue)
|
||||
// - nSeg: Ellipse is made up of nSeg B�zier curves
|
||||
function _Ellipse($x0, $y0, $rx, $ry = 0, $angle = 0, $astart = 0, $afinish = 360, $nSeg = 8) {
|
||||
if ($rx) {
|
||||
if (!$ry)
|
||||
$ry = $rx;
|
||||
$rx *= $this->k;
|
||||
$ry *= $this->k;
|
||||
if ($nSeg < 2)
|
||||
$nSeg = 2;
|
||||
|
||||
$astart = deg2rad((float) $astart);
|
||||
$afinish = deg2rad((float) $afinish);
|
||||
$totalAngle = $afinish - $astart;
|
||||
|
||||
$dt = $totalAngle/$nSeg;
|
||||
$dtm = $dt/3;
|
||||
|
||||
$x0 *= $this->k;
|
||||
$y0 = ($this->h - $y0) * $this->k;
|
||||
if ($angle != 0) {
|
||||
//$a = -deg2rad((float) $angle);
|
||||
//$this->_out(sprintf('q %.2f %.2f %.2f %.2f %.2f %.2f cm', cos($a), -1 * sin($a), sin($a), cos($a), $x0*10, $y0*10));
|
||||
//echo "X:$x0:$y0:$a:".cos($a).":".sin($a)."<br>";
|
||||
//echo "X2:$x0:$y0<br>";
|
||||
//$x0 -= cos($a);
|
||||
//$y0 -= $ry * sin($a);
|
||||
}
|
||||
|
||||
$t1 = $astart;
|
||||
$a0 = $x0 + ($rx * cos($t1));
|
||||
$b0 = $y0 + ($ry * sin($t1));
|
||||
$c0 = -$rx * sin($t1);
|
||||
$d0 = $ry * cos($t1);
|
||||
//$this->_Point($a0 / $this->k, $this->h - ($b0 / $this->k));
|
||||
for ($i = 1; $i <= $nSeg; $i++) {
|
||||
// Draw this bit of the total curve
|
||||
$t1 = ($i * $dt) + $astart;
|
||||
$a1 = $x0 + ($rx * cos($t1));
|
||||
$b1 = $y0 + ($ry * sin($t1));
|
||||
$c1 = -$rx * sin($t1);
|
||||
$d1 = $ry * cos($t1);
|
||||
$this->_Curve(($a0 + ($c0 * $dtm)) / $this->k,
|
||||
$this->h - (($b0 + ($d0 * $dtm)) / $this->k),
|
||||
($a1 - ($c1 * $dtm)) / $this->k,
|
||||
$this->h - (($b1 - ($d1 * $dtm)) / $this->k),
|
||||
$a1 / $this->k,
|
||||
$this->h - ($b1 / $this->k));
|
||||
$a0 = $a1;
|
||||
$b0 = $b1;
|
||||
$c0 = $c1;
|
||||
$d0 = $d1;
|
||||
}
|
||||
if ($angle !=0) {
|
||||
//$this->_out('Q');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,39 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Circle extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalSizeAttribute($node, "cx");
|
||||
$this->initLocalSizeAttribute($node, "cy");
|
||||
$this->initLocalSizeAttribute($node, "r");
|
||||
$y = $this->getContext("yOrig") + $this->getContext("cy");
|
||||
$x = $this->getContext("xOrig") + $this->getContext("cx");
|
||||
$rd = $this->getContext("r");
|
||||
|
||||
//echo "Circle:$x:$y:$rd:$sargs<br>";
|
||||
$pdf = $this->getPdf();
|
||||
$pdf->Circle($x, $y, $rd, 0, 360, $sargs);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,41 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Ellipse extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalSizeAttribute($node, "cx");
|
||||
$this->initLocalSizeAttribute($node, "cy");
|
||||
$this->initLocalSizeAttribute($node, "rx");
|
||||
$this->initLocalSizeAttribute($node, "ry");
|
||||
$y = $this->getContext("yOrig") + $this->getContext("cy");
|
||||
$x = $this->getContext("xOrig") + $this->getContext("cx");
|
||||
$rx = $this->getContext("rx");
|
||||
$ry = $this->getContext("ry");
|
||||
|
||||
//echo "Circle:$x:$y:$rd:$sargs<br>";
|
||||
$pdf = $this->getPdf();
|
||||
$pdf->Ellipse($x, $y, $rx, $ry, $sargs);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,80 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_G extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalSizeAttribute($node, "transform");
|
||||
$transform = $this->getContext("transform");
|
||||
|
||||
$index = strpos($transform, "(");
|
||||
$func = substr($transform, 0, $index);
|
||||
$paramStr = substr($transform, $index+1, strlen($transform)-$index-2);
|
||||
$params = explode(",", $paramStr);
|
||||
$pdf = $this->getPdf();
|
||||
$xOrig = $this->getContext("xOrig");
|
||||
$yOrig = $this->getContext("yOrig");
|
||||
|
||||
if ($func) {
|
||||
switch ($func) {
|
||||
case "translate":
|
||||
$xdiff = $this->calcInternalValue($params[0]);
|
||||
$ydiff = $this->calcInternalValue($params[1]);
|
||||
$this->setContext("xOrig", $xOrig+$xdiff);
|
||||
$this->setContext("yOrig", $yOrig+$ydiff );
|
||||
//echo "translate:".$xdiff.":".$ydiff."<br>";
|
||||
break;
|
||||
case "rotate":
|
||||
$angle = $params[0] * -1;
|
||||
if (sizeof($params) > 1) {
|
||||
$pdf->Rotate($angle, $params[1], $params[2]);
|
||||
}
|
||||
else {
|
||||
$x = $this->getContext("x")+$xOrig;
|
||||
$y = $this->getContext("y")+$yOrig;
|
||||
$pdf->Rotate($angle, $x, $y);
|
||||
}
|
||||
break;
|
||||
// case "skewX":
|
||||
// case "skewY":
|
||||
default:
|
||||
echo "Function not supported:$func<br>";
|
||||
}
|
||||
}
|
||||
$this->processChildNodes($node, FO_SVG::$CHILDNODES);
|
||||
|
||||
//restore group options
|
||||
switch ($func) {
|
||||
case "translate":
|
||||
$this->setContext("xOrig", $xOrig);
|
||||
$this->setContext("yOrig", $yOrig);
|
||||
break;
|
||||
case "rotate":
|
||||
$pdf->Rotate(0);
|
||||
break;
|
||||
// case "skewX":
|
||||
// case "skewY":
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,39 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Line extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalSizeAttribute($node, "x1");
|
||||
$this->initLocalSizeAttribute($node, "y1");
|
||||
$this->initLocalSizeAttribute($node, "x2");
|
||||
$this->initLocalSizeAttribute($node, "y2");
|
||||
$y1 = $this->getContext("yOrig") + $this->getContext("y1");
|
||||
$x1 = $this->getContext("xOrig") + $this->getContext("x1");
|
||||
$y2 = $this->getContext("yOrig") + $this->getContext("y2");
|
||||
$x2 = $this->getContext("xOrig") + $this->getContext("x2");
|
||||
$pdf = $this->getPdf();
|
||||
$pdf->Line($x1, $y1, $x2, $y2);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,362 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Path extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalAttribute($node, "d");
|
||||
$xOrig = $this->getContext("xOrig");
|
||||
$yOrig = $this->getContext("yOrig");
|
||||
|
||||
$d = $this->getContext("d");
|
||||
//replace spacial characters
|
||||
$d = preg_replace("/[\n,]/i", " ", $d);
|
||||
//add spaces except on points
|
||||
$d = preg_replace("/([AMLZHVCSQTA])([\d-]+)/i", "\${1} \${2}", $d);
|
||||
$d = preg_replace("/(\d+)([AMLZHVCSQTA])/i", "\${1} \${2}", $d);
|
||||
$d = preg_replace("/\s\s/i", " ", $d);
|
||||
$params = explode(" " , $d);
|
||||
$x = $xOrig+$this->getContext("x");
|
||||
$y = $yOrig+$this->getContext("y");
|
||||
$ix = $x;
|
||||
$iy = $y;
|
||||
$pdf = $this->getPdf();
|
||||
$pdf->_Point($x, $y);
|
||||
$buf = $pdf->startCapture();
|
||||
for($i=0; $i<sizeof($params); ) {
|
||||
$lastI = $i;
|
||||
if ($params[$i] == "") {
|
||||
$i++;
|
||||
continue;
|
||||
}
|
||||
switch ($params[$i]) {
|
||||
case "M":
|
||||
//move absolute
|
||||
$x = $this->getSize($params[$i+1])+$xOrig;
|
||||
$y = $this->getSize($params[$i+2])+$yOrig;
|
||||
$pdf->_Point($x, $y);
|
||||
$ix = $x;
|
||||
$iy = $y;
|
||||
$i += 3;
|
||||
break;
|
||||
case "m":
|
||||
//move relative
|
||||
$x += $this->getSize($params[$i+1]);
|
||||
$y += $this->getSize($params[$i+2]);
|
||||
$pdf->_Point($x, $y);
|
||||
$ix = $x;
|
||||
$iy = $y;
|
||||
$i += 3;
|
||||
break;
|
||||
case "z":
|
||||
case "Z":
|
||||
//closepath
|
||||
$pdf->ClosePath($sargs);
|
||||
$x = $ix;
|
||||
$y = $iy;
|
||||
++$i;
|
||||
break;
|
||||
case "L":
|
||||
//absolute lineto
|
||||
$x2 = $this->getSize($params[$i+1])+$xOrig;
|
||||
$y2 = $this->getSize($params[$i+2])+$yOrig;
|
||||
//echo "Line:$x:$y:$x2:$y2:$sargs<br>";
|
||||
$pdf->_Line($x2, $y2);
|
||||
$x = $x2;
|
||||
$y = $y2;
|
||||
$i += 3;
|
||||
break;
|
||||
case "l":
|
||||
//relative lineto
|
||||
$x2 = $this->getSize($params[$i+1])+$x;
|
||||
$y2 = $this->getSize($params[$i+2])+$y;
|
||||
$pdf->_Line($x2, $y2);
|
||||
$x = $x2;
|
||||
$y = $y2;
|
||||
$i += 3;
|
||||
break;
|
||||
case "H":
|
||||
//absolute horizontal lineto
|
||||
$x2 = $this->getSize($params[$i+1])+$xOrig;
|
||||
$pdf->_Line($x2, $y);
|
||||
$x = $x2;
|
||||
$i += 2;
|
||||
break;
|
||||
case "h":
|
||||
//relative horizontal lineto
|
||||
$x2 = $this->getSize($params[$i+1]);
|
||||
$pdf->_Line($x+$x2, $y);
|
||||
$x += $x2;
|
||||
$i += 2;
|
||||
break;
|
||||
case "V":
|
||||
//absolute vertical lineto
|
||||
$y2 = $this->getSize($params[$i+1])+$yOrig;
|
||||
$pdf->_Line($x, $y2);
|
||||
$y = $y2;
|
||||
$i += 2;
|
||||
break;
|
||||
case "v":
|
||||
//relative vertical lineto
|
||||
$y2 = $this->getSize($params[$i+1]);
|
||||
$pdf->_Line($x, $y+$y2);
|
||||
$y += $y2;
|
||||
$i += 2;
|
||||
break;
|
||||
case "C":
|
||||
//absolute cubic bezier
|
||||
$x1 = $this->getSize($params[$i+1])+$xOrig;
|
||||
$y1 = $this->getSize($params[$i+2])+$yOrig;
|
||||
$x2 = $this->getSize($params[$i+3])+$xOrig;
|
||||
$y2 = $this->getSize($params[$i+4])+$yOrig;
|
||||
$x = $this->getSize($params[$i+5])+$xOrig;
|
||||
$y = $this->getSize($params[$i+6])+$yOrig;
|
||||
$pdf->_Curve($x1, $y1, $x2, $y2, $x, $y);
|
||||
$i += 7;
|
||||
break;
|
||||
case "c":
|
||||
//relative cubic bezier
|
||||
$x1 = $this->getSize($params[$i+1])+$x;
|
||||
$y1 = $this->getSize($params[$i+2])+$y;
|
||||
$x2 = $this->getSize($params[$i+3])+$x;
|
||||
$y2 = $this->getSize($params[$i+4])+$y;
|
||||
$x += $this->getSize($params[$i+5]);
|
||||
$y += $this->getSize($params[$i+6]);
|
||||
$pdf->_Curve($x1, $y1, $x2, $y2, $x, $y);
|
||||
$i += 7;
|
||||
break;
|
||||
case "S":
|
||||
//TODO: fix
|
||||
//absolute cubic bezier with first control reflection
|
||||
$x2 = $this->getSize($params[$i+1])+$xOrig;
|
||||
$y2 = $this->getSize($params[$i+2])+$yOrig;
|
||||
$x = $this->getSize($params[$i+3])+$xOrig;
|
||||
$y = $this->getSize($params[$i+4])+$yOrig;
|
||||
$pdf->_CurveRef1($x2, $y2, $x, $y);
|
||||
$i += 5;
|
||||
break;
|
||||
case "s":
|
||||
//TODO: fix
|
||||
//relative cubic bezier with first control point reflection
|
||||
$x2 = $this->getSize($params[$i+1])+$x;
|
||||
$y2 = $this->getSize($params[$i+2])+$y;
|
||||
$x += $this->getSize($params[$i+3]);
|
||||
$y += $this->getSize($params[$i+4]);
|
||||
$pdf->_CurveRef1($x2, $y2, $x, $y);
|
||||
$i += 5;
|
||||
break;
|
||||
case "Q":
|
||||
//absolute quadratic bezier
|
||||
$x1 = $this->getSize($params[$i+1])+$xOrig;
|
||||
$y1 = $this->getSize($params[$i+2])+$yOrig;
|
||||
$ex = $this->getSize($params[$i+3])+$xOrig;
|
||||
$ey = $this->getSize($params[$i+4])+$yOrig;
|
||||
list($x1, $y1, $x2, $y2, $x, $y) =
|
||||
$this->quadratic2CubicBezier($x, $y, $x1, $y1, $ex, $ey);
|
||||
//echo "q2c:$x,$y,$x1,$y2,$ex,$ey => $x1,$y1,$x2,$y2,$x,$y<br>";
|
||||
$pdf->_Curve($x1, $y1, $x2, $y2, $x, $y);
|
||||
$i += 5;
|
||||
break;
|
||||
case "q":
|
||||
//relative quadratic bezier
|
||||
$x1 = $this->getSize($params[$i+1])+$x;
|
||||
$y1 = $this->getSize($params[$i+2])+$y;
|
||||
$ex = $x+$this->getSize($params[$i+3]);
|
||||
$ey = $y+$this->getSize($params[$i+4]);
|
||||
list($x1, $y2, $x2, $y2, $x, $y) =
|
||||
$this->quadratic2CubixBezier($x, $y, $x1, $y2, $ex, $ey);
|
||||
$pdf->_Curve($x1, $y1, $x2, $y2, $x, $y);
|
||||
$i += 5;
|
||||
break;
|
||||
case "T":
|
||||
//absolute cubic bezier with first control reflection
|
||||
//TODO: implement
|
||||
$i += 3;
|
||||
break;
|
||||
case "t":
|
||||
//relative cubic bezier with first control point reflection
|
||||
//TODO: implement
|
||||
$i += 3;
|
||||
break;
|
||||
case "A":
|
||||
$rx = $this->getSize($params[$i+1]);
|
||||
$ry = $this->getSize($params[$i+2]);
|
||||
$anglex = -$params[$i+3];
|
||||
$fa = $params[$i+4];
|
||||
$fs = $params[$i+5];
|
||||
$ex = $this->getSize($params[$i+6])+$xOrig;
|
||||
$ey = $this->getSize($params[$i+7])+$yOrig;
|
||||
//only draw arcs if a difference between begin and endpoint
|
||||
if ($ex-$x != 0 || $ey-$y != 0) {
|
||||
//echo "Arc:x=$x:y=$y:ex=$ex:ey=$ey:fa=$fa:fs=$fs:angle=$anglex:rx=$rx:ry=$ry<br>";
|
||||
list($cx, $cy, $rx, $ry, $alpha_x, $start_angle, $delta_angle) =
|
||||
$this->endpoint2Centric($x, $y, $ex, $ey, $fa, $fs, $anglex, $rx, $ry);
|
||||
$pdf->_Ellipse($cx, $cy, $rx, $ry, $alpha_x, $start_angle,
|
||||
$delta_angle+$start_angle);
|
||||
}
|
||||
$x = $ex;
|
||||
$y = $ey;
|
||||
$i += 8;
|
||||
break;
|
||||
case "a":
|
||||
$rx = $this->getSize($params[$i+1]);
|
||||
$ry = $this->getSize($params[$i+2]);
|
||||
$anglex = -$params[$i+3];
|
||||
$fa = $params[$i+4];
|
||||
$fs = $params[$i+5];
|
||||
$ex = $x+$this->getSize($params[$i+6]);
|
||||
$ey = $y+$this->getSize($params[$i+7]);
|
||||
//only draw arcs if a difference between begin and endpoint
|
||||
if ($ex-$x != 0 || $ey-$y != 0) {
|
||||
//echo "Arc:x=$x:y=$y:ex=$ex:ey=$ey:fa=$fa:fa=$fs:angle=$anglex:rx=$rx:ry=$ry<br>";
|
||||
list($cx, $cy, $rx, $ry, $alpha_x, $start_angle, $delta_angle) =
|
||||
$this->endpoint2Centric($x, $y, $ex, $ey, $fa, $fs, 0, $rx, $ry);
|
||||
//echo "Arc2:$cx:$cy:$rx:$ry:$alpha_x:$start_angle:$delta_angle<br>";
|
||||
//$pdf->Rotate($anglex);
|
||||
//TODO: fix rotation to x axis
|
||||
$pdf->_Ellipse($cx, $cy, $rx, $ry, $alpha_x, $start_angle,
|
||||
$delta_angle+$start_angle);
|
||||
//$pdf->Rotate(0);
|
||||
}
|
||||
$x = $ex;
|
||||
$y = $ey;
|
||||
$i += 8;
|
||||
break;
|
||||
default:
|
||||
if ($lastParam) {
|
||||
//echo "useLast:$lastParam:".$params[$i-1].":".$params[$i]."<br>";
|
||||
//add previous command again
|
||||
$i--;
|
||||
$params[$i] = $lastParam;
|
||||
}
|
||||
else {
|
||||
$this->NotYetSupported("Pathdata:".$params[$i]);
|
||||
}
|
||||
}
|
||||
$lastParam = $params[$lastI];
|
||||
}
|
||||
$pdf->_Style($sargs);
|
||||
$buf = $pdf->endCapture($buf);
|
||||
//echo $buf."<br>";
|
||||
$pdf->appendBuffer($buf);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function converts from a quadratic to a cubis bezier
|
||||
* It returns an array of
|
||||
* array($x1, $y1, $x2, $y2, $endx, $endy)
|
||||
**/
|
||||
private function quadratic2CubicBezier($startx, $starty, $x1, $y1, $endx, $endy) {
|
||||
$cx1 = ($x1 - $startx) * 2/3 + $startx;
|
||||
$cy1 = ($y1 - $starty) * 2/3 + $starty;
|
||||
$cx2 = $endx - ($endx - $x1)*2/3;
|
||||
$cy2 = $endy - ($endy - $y1)*2/3;
|
||||
return array($cx1, $cy1, $cx2, $cy2, $endx, $endy);
|
||||
}
|
||||
|
||||
/**
|
||||
* For an explenation see
|
||||
* <a href="http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes"></a>
|
||||
* An array consisting of the following elements will be returned
|
||||
* array(cx, cy, rx, ry, alpha_x, start_angle, delta_angle)
|
||||
**/
|
||||
private function endpoint2Centric($x1, $y1, $x2, $y2, $fa, $fs, $angle, $rx, $ry) {
|
||||
$angler = deg2rad($angle);
|
||||
//initialization
|
||||
$cosa = cos($angler);
|
||||
$sina = sin($angler);
|
||||
|
||||
//step 1
|
||||
$xd = ($x1-$x2)/2;
|
||||
$yd = ($y1-$y2)/2;
|
||||
$x_ = $cosa*$xd + $sina*$yd;
|
||||
$y_ = $cosa*$yd - $sina*$xd;
|
||||
//echo "1:$x_:$y_<br>";
|
||||
|
||||
//step2
|
||||
$rxq = $rx*$rx;
|
||||
$ryq = $ry*$ry;
|
||||
$y_q = $y_*$y_;
|
||||
$x_q = $x_*$x_;
|
||||
$val = ($rxq*$ryq-$rxq*$y_q-$ryq*$x_q)/
|
||||
($rxq*$y_q+$ryq*$x_q);
|
||||
if ($val >= 0) {
|
||||
$c = sqrt($val);
|
||||
}
|
||||
else {
|
||||
//TODO: check how to proceed if negative number
|
||||
$c = sqrt(-$val);
|
||||
}
|
||||
if ($fa == $fs) {
|
||||
$c *= -1;
|
||||
}
|
||||
$cx_ = $c * (($rx*$y_)/$ry);
|
||||
$cy_ = $c * -(($ry*$x_)/$rx);
|
||||
//echo "2:$cx_:$cy_<br>";
|
||||
|
||||
//step3
|
||||
$cx = $cosa*$cx_ - $sina*$cy_ + ($x1+$x2)/2;
|
||||
$cy = $sina*$cx_ + $cosa*$cy_ + ($y1+$y2)/2;
|
||||
//echo "3:$cx:$cy<br>";
|
||||
|
||||
//step 4
|
||||
$fx = ($x_-$cx_)/$rx;
|
||||
$fy = ($y_-$cy_)/$ry;
|
||||
$angle1 = $this->vectorAngle(1, 0, $fx, $fy);
|
||||
$angle2 = $this->vectorAngle($fx, $fy, (-$x_-$cx_)/$rx, (-$y_-$cy_)/$ry);
|
||||
$angle2 %= 360;
|
||||
if ($fs == 0 && $angle2 > 0) {
|
||||
$angle2 -= 360;
|
||||
}
|
||||
else if ($fs == 1 && $angle2 < 0) {
|
||||
$angle2 += 360;
|
||||
}
|
||||
//echo "4:$angle:$angle2<br>";
|
||||
return array($cx, $cy, $rx, $ry, $angle, -$angle1, -$angle2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate angle between two vectors
|
||||
*/
|
||||
private function vectorAngle($ux, $uy, $vx, $vy) {
|
||||
if ($ux + $uy == 0 || $vx + $vy == 0) {
|
||||
return 0;
|
||||
}
|
||||
$uxq = $ux*$ux;
|
||||
$uyq = $uy*$uy;
|
||||
$vxq = $vx*$vx;
|
||||
$vyq = $vy*$vy;
|
||||
$val = ($ux*$vx+$uy*$vy)/
|
||||
(sqrt($uxq+$uyq)*sqrt($vxq+$vyq));
|
||||
$angle = rad2deg(acos($val));
|
||||
if ($ux*$vy-$uy*$vx < 0) {
|
||||
$angle *= -1;
|
||||
}
|
||||
return $angle;
|
||||
}
|
||||
|
||||
private function getSize($param) {
|
||||
return $this->calcInternalValue($param);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Polygon extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalAttribute($node, "points");
|
||||
|
||||
$yOrig = $this->getContext("yOrig");
|
||||
$xOrig = $this->getContext("xOrig");
|
||||
|
||||
$points = explode(" ", $this->getContext("points"));
|
||||
$pdf = $this->getPdf();
|
||||
$pointsArray = array();
|
||||
foreach($points as $point) {
|
||||
$coords = explode(",", $point);
|
||||
$pointsArray[] = $this->calcInternalValue($coords[0], "mm", "pt")+$xOrig;
|
||||
$pointsArray[] = $this->calcInternalValue($coords[1], "mm", "pt")+$yOrig;
|
||||
}
|
||||
$pdf->Polygon($pointsArray, $sargs);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,40 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Rect extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalSizeAttribute($node, "rx");
|
||||
$y = $this->getContext("yOrig") + $this->getContext("y");
|
||||
$x = $this->getContext("xOrig") + $this->getContext("x");
|
||||
$width = $this->getContext("width");
|
||||
$height = $this->getContext("height");
|
||||
$rx = $this->getContext("rx");
|
||||
if (!$rx) {
|
||||
$rx = 0;
|
||||
}
|
||||
$pdf = $this->getPdf();
|
||||
$pdf->RoundedRect($x, $y, $width, $height, $rx, $sargs);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,60 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Text extends SVG_StyleObject {
|
||||
|
||||
public function process(DOMNode $node, $sargs="") {
|
||||
$this->initLocalSizeAttribute($node, "font-size", "pt");
|
||||
$this->initLocalAttribute($node, "font-family");
|
||||
$this->initLocalAttribute($node, "font-style");
|
||||
$y = $this->getContext("yOrig") + $this->getContext("y");
|
||||
$x = $this->getContext("xOrig") + $this->getContext("x");
|
||||
$width = $this->getContext("width");
|
||||
$height = $this->getContext("height");
|
||||
$fontFamily = $this->getContext("font-family");
|
||||
$fontStyle = $this->getContext("font-style");
|
||||
$fontSize = $this->getContext("font-size");
|
||||
|
||||
$pdf = $this->getPdf();
|
||||
$oldFontFamily = $pdf->GetFontFamily();
|
||||
$oldFontStyle = $pdf->GetFontStyle();
|
||||
$oldFontSize = $pdf->GetFontSize();
|
||||
$txt = $node->nodeValue;
|
||||
|
||||
if ($pdf->FontExists($fontFamily, $fontStyle)) {
|
||||
$pdf->SetFont($fontFamily, $fontStyle, $fontSize);
|
||||
}
|
||||
else if($pdf->FontExists($oldFontFamily, $fontStyle)) {
|
||||
$pdf->SetFont($oldFontFamily, $fontStyle, $fontSize);
|
||||
}
|
||||
else {
|
||||
$pdf->SetFont($oldFontFamily, $oldFontStyle, $fontSize);
|
||||
}
|
||||
|
||||
$pdf->Text($x, $y, $txt);
|
||||
|
||||
//reset font
|
||||
$pdf->SetFont($oldFontFamily, $oldFontStyle, $oldFontSize);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,151 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
|
||||
require_once("fpdf/myfpdf.php");
|
||||
require_once("fo_core.php");
|
||||
require_once("fo_layout.php");
|
||||
require_once("fo_block.php");
|
||||
require_once("fo_table.php");
|
||||
require_once("fo_instream.php");
|
||||
require_once("svg_circle.php");
|
||||
require_once("svg_rect.php");
|
||||
require_once("svg_ellipse.php");
|
||||
require_once("svg_line.php");
|
||||
require_once("svg_polygon.php");
|
||||
require_once("svg_g.php");
|
||||
require_once("svg_text.php");
|
||||
require_once("svg_path.php");
|
||||
|
||||
class XslFo2PDF {
|
||||
function generatePdf($xml, $name="out.pdf", $dest='') {
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadXML($xml);
|
||||
|
||||
if ($doc === false) {
|
||||
echo "failed loading dom<br>";
|
||||
return false;
|
||||
}
|
||||
//get the only child
|
||||
foreach($doc->childNodes as $child) {
|
||||
if ($child != NULL &&
|
||||
$child->nodeName == "fo:root") {
|
||||
$rootNode = $child;
|
||||
}
|
||||
}
|
||||
if ($rootNode == null) {
|
||||
echo "Didn't find root node<br>";
|
||||
return false;
|
||||
}
|
||||
|
||||
// oesi - Format und orientation auslesen
|
||||
$masterpage = $rootNode->getElementsByTagName('simple-page-master');
|
||||
$format = 'A4';
|
||||
$orient = 'P';
|
||||
foreach ($masterpage as $x=>$mp)
|
||||
{
|
||||
if($mp->getAttribute('format')!='')
|
||||
$format = $mp->getAttribute('format');
|
||||
if($mp->getAttribute('orientation')!='')
|
||||
$orient = $mp->getAttribute('orientation');
|
||||
}
|
||||
|
||||
$pdf = new MyPDF($orient, 'mm', $format);
|
||||
$root = new FO_Root($pdf);
|
||||
$this->initDefaults($pdf, $root);
|
||||
if ($root->parse($rootNode) === false) {
|
||||
echo "Parsing failed<br>";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (strpos($name, ".pdf")===false) {
|
||||
$name = $name.".pdf";
|
||||
}
|
||||
$pdf->Output($name, $dest);
|
||||
return true;
|
||||
}
|
||||
|
||||
function initDefaults(FPDF $pdf, FO_Root $root) {
|
||||
$pdf->SetFont('Arial','',14);
|
||||
$pdf->SetAutoPageBreak(true);
|
||||
$root->setContext("page-width", "21");
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Factory {
|
||||
static $factory = array("fo:layout-master-set" => 'FO_LayoutMasterSet',
|
||||
"fo:block" => 'FO_Block',
|
||||
"fo:page-sequence" => 'FO_PageSequence',
|
||||
"fo:flow" => 'FO_Flow',
|
||||
"fo:block-container" => 'FO_BlockContainer',
|
||||
"fo:list-block" => 'FO_ListBlock',
|
||||
"fo:table-and-caption" => 'FO_TableAndCaption',
|
||||
"fo:table" => 'FO_Table',
|
||||
"fo:table-caption" => 'FO_TableCaption',
|
||||
"fo:table-header" => 'FO_TableHeader',
|
||||
"fo:table-footer" => 'FO_TableFooter',
|
||||
"fo:table-body" => 'FO_TableBody',
|
||||
"fo:table-row" => 'FO_TableRow',
|
||||
"fo:table-column" => 'FO_TableColumn',
|
||||
"fo:table-cell" => 'FO_TableCell',
|
||||
"fo:inline" => 'FO_Inline',
|
||||
"fo:instream-foreign-object" =>
|
||||
'FO_InstreamForeignObject',
|
||||
"fo:basic-link" => 'FO_BasicLink',
|
||||
"fo:external-graphic" => 'FO_ExternalGraphic',
|
||||
"svg:svg" => 'FO_SVG',
|
||||
"svg:circle" => 'SVG_Circle',
|
||||
"svg:rect" => 'SVG_Rect',
|
||||
"svg:ellipse" => 'SVG_Ellipse',
|
||||
"svg:line" => 'SVG_Line',
|
||||
"svg:polygon" => 'SVG_Polygon',
|
||||
"svg:polyline" => 'SVG_Polygon',
|
||||
"svg:g" => 'SVG_G',
|
||||
"svg:text" => 'SVG_Text',
|
||||
"svg:path" => 'SVG_Path'
|
||||
);
|
||||
|
||||
static $names = NULL;
|
||||
|
||||
static function createFOObject(DOMNode $node, FO_Container $container,
|
||||
FPDF $pdf, FO_Context &$context,
|
||||
$filter)
|
||||
{
|
||||
if(isset(self::$factory[$node->nodeName]))
|
||||
$obj = self::$factory[$node->nodeName];
|
||||
if (!isset($obj) || !$obj)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
if (!$filter || !in_array($obj, $filter))
|
||||
{
|
||||
echo "ignore due to filter:$obj<br>";
|
||||
return NULL;
|
||||
}
|
||||
//echo "Create:$obj<br>";
|
||||
return new $obj($container, $pdf, $context);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
+17
-18
@@ -24,11 +24,8 @@ header("Cache-Control: no-cache");
|
||||
header("Cache-Control: post-check=0, pre-check=0",false);
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Pragma: no-cache");
|
||||
// content type setzen
|
||||
header("Content-type: application/xhtml+xml");
|
||||
// xml
|
||||
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
|
||||
// DAO
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/dokument.class.php');
|
||||
@@ -54,7 +51,7 @@ $datum = new datum();
|
||||
$akten = new akte();
|
||||
if(!isset($akte_id))
|
||||
{
|
||||
if(!$akten->getAkten($person_id, $dokument_kurzbz))
|
||||
if(!$akten->getArchiv($person_id))
|
||||
die($akten->errormsg);
|
||||
}
|
||||
else
|
||||
@@ -71,7 +68,7 @@ echo '
|
||||
xmlns:AKTE="'.$rdf_url.'/rdf#"
|
||||
>
|
||||
|
||||
<RDF:Seq about="'.$rdf_url.'/liste">
|
||||
<RDF:Seq about="'.$rdf_url.'/liste">
|
||||
';
|
||||
|
||||
foreach ($akten->result as $row)
|
||||
@@ -79,15 +76,15 @@ foreach ($akten->result as $row)
|
||||
$dokument = new dokument();
|
||||
$dokument->loadDokumenttyp($row->dokument_kurzbz);
|
||||
echo '
|
||||
<RDF:li>
|
||||
<RDF:Description id="'.$row->akte_id.'" about="'.$rdf_url.'/'.$row->akte_id.'" >
|
||||
<AKTE:akte_id><![CDATA['.$row->akte_id.']]></AKTE:akte_id>
|
||||
<AKTE:person_id><![CDATA['.$row->person_id.']]></AKTE:person_id>
|
||||
<AKTE:dokument_kurzbz><![CDATA['.$row->dokument_kurzbz.']]></AKTE:dokument_kurzbz>
|
||||
<AKTE:dokument_bezeichnung><![CDATA['.$dokument->bezeichnung.']]></AKTE:dokument_bezeichnung>
|
||||
<AKTE:mimetype><![CDATA['.$row->mimetype.']]></AKTE:mimetype>
|
||||
<AKTE:erstelltam><![CDATA['.$datum->convertISODate($row->erstelltam).']]></AKTE:erstelltam>
|
||||
<AKTE:erstelltam_iso><![CDATA['.$row->erstelltam.']]></AKTE:erstelltam_iso>
|
||||
<RDF:li>
|
||||
<RDF:Description id="'.$row->akte_id.'" about="'.$rdf_url.'/'.$row->akte_id.'" >
|
||||
<AKTE:akte_id><![CDATA['.$row->akte_id.']]></AKTE:akte_id>
|
||||
<AKTE:person_id><![CDATA['.$row->person_id.']]></AKTE:person_id>
|
||||
<AKTE:dokument_kurzbz><![CDATA['.$row->dokument_kurzbz.']]></AKTE:dokument_kurzbz>
|
||||
<AKTE:dokument_bezeichnung><![CDATA['.$dokument->bezeichnung.']]></AKTE:dokument_bezeichnung>
|
||||
<AKTE:mimetype><![CDATA['.$row->mimetype.']]></AKTE:mimetype>
|
||||
<AKTE:erstelltam><![CDATA['.$datum->convertISODate($row->erstelltam).']]></AKTE:erstelltam>
|
||||
<AKTE:erstelltam_iso><![CDATA['.$row->erstelltam.']]></AKTE:erstelltam_iso>
|
||||
<AKTE:gedruckt><![CDATA['.($row->gedruckt?'Ja':'Nein').']]></AKTE:gedruckt>
|
||||
<AKTE:titel><![CDATA['.$row->titel.']]></AKTE:titel>
|
||||
<AKTE:bezeichnung><![CDATA['.$row->bezeichnung.']]></AKTE:bezeichnung>
|
||||
@@ -100,10 +97,12 @@ foreach ($akten->result as $row)
|
||||
<AKTE:titel_intern><![CDATA['.$row->titel_intern.']]></AKTE:titel_intern>
|
||||
<AKTE:anmerkung><![CDATA['.$row->anmerkung.']]></AKTE:anmerkung>
|
||||
<AKTE:nachgereicht><![CDATA['.($row->nachgereicht?'Ja':'Nein').']]></AKTE:nachgereicht>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
';
|
||||
<AKTE:signiert><![CDATA['.($row->signiert?'Ja':'Nein').']]></AKTE:signiert>
|
||||
<AKTE:stud_selfservice><![CDATA['.($row->stud_selfservice?'Ja':'Nein').']]></AKTE:stud_selfservice>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
';
|
||||
}
|
||||
?>
|
||||
</RDF:Seq>
|
||||
</RDF:Seq>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/* Copyright (C) 2018 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <oesi@technikum-wien.at>
|
||||
*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/rdf.class.php');
|
||||
require_once('../include/basis_db.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
|
||||
$uid = get_uid();
|
||||
|
||||
$oRdf = new rdf('VORLAGE','http://www.technikum-wien.at/vorlage');
|
||||
$oRdf->sendHeader();
|
||||
|
||||
$vorlage = new vorlage();
|
||||
$vorlage->getVorlagenArchiv();
|
||||
|
||||
foreach($vorlage->result as $row)
|
||||
{
|
||||
$i=$oRdf->newObjekt($row->vorlage_kurzbz);
|
||||
$oRdf->obj[$i]->setAttribut('vorlage_kurzbz', $row->vorlage_kurzbz, true);
|
||||
$oRdf->obj[$i]->setAttribut('bezeichnung',$row->bezeichnung,true);
|
||||
|
||||
$oRdf->addSequence($row->vorlage_kurzbz);
|
||||
}
|
||||
|
||||
$oRdf->sendRdfText();
|
||||
?>
|
||||
+151
-2
@@ -1295,6 +1295,155 @@ if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='bewerbung'")
|
||||
}
|
||||
}
|
||||
|
||||
// Archiv boolean fuer public.tbl_akte
|
||||
if(!@$db->db_query("SELECT archiv FROM public.tbl_akte LIMIT 1"))
|
||||
{
|
||||
// Defaultwerte und Update werden hier nacheinander durchgefuehrt da dies
|
||||
// schneller ist als ein ALTER TABLE mit inkludiertem Defaultwert
|
||||
$qry = "ALTER TABLE public.tbl_akte ADD COLUMN archiv boolean;
|
||||
UPDATE public.tbl_akte SET archiv=true WHERE dokument_kurzbz='Zeugnis';
|
||||
UPDATE public.tbl_akte SET archiv=false WHERE dokument_kurzbz<>'Zeugnis';
|
||||
ALTER TABLE public.tbl_akte ALTER COLUMN archiv SET DEFAULT false;
|
||||
ALTER TABLE public.tbl_akte ALTER COLUMN archiv SET NOT NULL;
|
||||
COMMENT ON COLUMN public.tbl_akte.archiv IS 'Is the document part of the archive';";
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>tbl_akte.archiv: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Neue Spalte archiv in public.tbl_akte hinzugefügt';
|
||||
}
|
||||
|
||||
// signiert boolean fuer public.tbl_akte
|
||||
if(!@$db->db_query("SELECT signiert FROM public.tbl_akte LIMIT 1"))
|
||||
{
|
||||
// Defaultwerte und Update werden hier nacheinander durchgefuehrt da dies
|
||||
// schneller ist als ein ALTER TABLE mit inkludiertem Defaultwert
|
||||
$qry = "ALTER TABLE public.tbl_akte ADD COLUMN signiert boolean;
|
||||
UPDATE public.tbl_akte SET signiert = false;
|
||||
ALTER TABLE public.tbl_akte ALTER COLUMN signiert SET DEFAULT false;
|
||||
ALTER TABLE public.tbl_akte ALTER COLUMN signiert SET NOT NULL;
|
||||
COMMENT ON COLUMN public.tbl_akte.signiert IS 'Is the document digitally signed'";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Neue Spalte signiert in public.tbl_akte hinzugefügt';
|
||||
}
|
||||
|
||||
// stud_selfservice boolean fuer public.tbl_akte
|
||||
if(!@$db->db_query("SELECT stud_selfservice FROM public.tbl_akte LIMIT 1"))
|
||||
{
|
||||
// Defaultwerte und Update werden hier nacheinander durchgefuehrt da dies
|
||||
// schneller ist als ein ALTER TABLE mit inkludiertem Defaultwert
|
||||
$qry = "ALTER TABLE public.tbl_akte ADD COLUMN stud_selfservice boolean;
|
||||
UPDATE public.tbl_akte SET stud_selfservice = false;
|
||||
ALTER TABLE public.tbl_akte ALTER COLUMN stud_selfservice SET DEFAULT false;
|
||||
ALTER TABLE public.tbl_akte ALTER COLUMN stud_selfservice SET NOT NULL;
|
||||
COMMENT ON COLUMN public.tbl_akte.stud_selfservice IS 'Is the document downloadable for students'";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Neue Spalte stud_selfservice in public.tbl_akte hinzugefügt';
|
||||
}
|
||||
|
||||
// Berechtigung fuer Vorlagen setzen die vormals direkt in PDFExport.php geprueft wurden
|
||||
function AddBerechtigungVorlage($berechtigung_arr, $vorlage_arr)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$berechtigung = '{';
|
||||
foreach($berechtigung_arr as $item)
|
||||
{
|
||||
$berechtigung .= '"'.$db->db_escape($item).'",';
|
||||
}
|
||||
$berechtigung = mb_substr($berechtigung, 0, -1).'}';
|
||||
|
||||
foreach($vorlage_arr as $vorlage)
|
||||
{
|
||||
$qry = "SELECT 1 FROM public.tbl_vorlagestudiengang
|
||||
WHERE berechtigung is null AND vorlage_kurzbz=".$db->db_add_param($vorlage);
|
||||
|
||||
$result = $db->db_query($qry);
|
||||
if($db->db_num_rows($result)>0)
|
||||
{
|
||||
$qry = "UPDATE public.tbl_vorlagestudiengang SET berechtigung='".$berechtigung."'
|
||||
WHERE berechtigung is null AND vorlage_kurzbz=".$db->db_add_param($vorlage);
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>Vorlage Berechtigung: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Berechtigung '.$berechtigung.' fuer Vorlage '.$vorlage.' gesetzt';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AddBerechtigungVorlage(array('admin','assistenz'),array('Lehrveranstaltungszeugnis','Zertifikat','Diplomurkunde',
|
||||
'Diplomzeugnis','Bescheid', 'BescheidEng','Bakkurkunde','BakkurkundeEng','Bakkzeugnis',
|
||||
'PrProtokollBakk','PrProtokollDipl','Lehrauftrag','DiplomurkundeEng','Zeugnis','ZeugnisEng','StudienerfolgEng',
|
||||
'Sammelzeugnis','PrProtDiplEng','PrProtBakkEng','BakkzeugnisEng','DiplomzeugnisEng','statusbericht',
|
||||
'DiplSupplement','Zutrittskarte','Projektbeschr','Ausbildungsver','AusbildStatus','PrProtBA','PrProtMA',
|
||||
'PrProtBAEng','PrProtMAEng','Studienordnung','Erfolgsnachweis','ErfolgsnwHead','Studienblatt','LV_Informationen',
|
||||
'LVZeugnis','AnwListBarcode','Honorarvertrag','AusbVerEng','AusbVerEngHead','Zeugnis','ZeugnisNeu','ZeugnisEngNeu',
|
||||
'ErfolgsnachweisE','ErfolgsnwHeadE','Magisterurkunde','Masterurkunde','Defensiourkunde','Magisterzeugnis',
|
||||
'Laufzettel','StudienblattEng','Zahlung1','Terminliste','Studienbuchblatt','Veranstaltungen',
|
||||
'Inskription','Studienerfolg','OutgoingLearning','OutgoingChangeL','LearningAgree','Zahlung','DichiaSost'
|
||||
));
|
||||
AddBerechtigungVorlage(array('lehre/lvplan'), array('Ressource'));
|
||||
AddBerechtigungVorlage(array('wawi/inventar','assistenz','basis/betriebsmittel'), array('Uebernahme'));
|
||||
AddBerechtigungVorlage(array('wawi/bestellung'), array('Bestellung'));
|
||||
AddBerechtigungVorlage(array('admin','mitarbeiter','assistenz'), array('AccountInfo'));
|
||||
|
||||
// archivierbar boolean fuer public.tbl_vorlage
|
||||
if(!@$db->db_query("SELECT archivierbar FROM public.tbl_vorlage LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_vorlage ADD COLUMN archivierbar boolean DEFAULT false;
|
||||
UPDATE public.tbl_vorlage SET archivierbar=true
|
||||
WHERE vorlage_kurzbz in('DiplSupplement','Zeugnis','ZeugnisEng', 'Bescheid',' BescheidEng');
|
||||
COMMENT ON COLUMN public.tbl_vorlage.archivierbar IS 'Can this document be archived'";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Neue Spalte archivierbar in public.tbl_vorlage hinzugefügt';
|
||||
}
|
||||
|
||||
// signierbar boolean fuer public.tbl_vorlage
|
||||
if(!@$db->db_query("SELECT signierbar FROM public.tbl_vorlage LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_vorlage ADD COLUMN signierbar boolean DEFAULT false;
|
||||
COMMENT ON COLUMN public.tbl_vorlage.signierbar IS 'Can this document be digitally signed'";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Neue Spalte signierbar in public.tbl_vorlage hinzugefügt';
|
||||
}
|
||||
|
||||
// stud_selfservice boolean fuer public.tbl_vorlage
|
||||
if(!@$db->db_query("SELECT stud_selfservice FROM public.tbl_vorlage LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_vorlage ADD COLUMN stud_selfservice boolean DEFAULT false;
|
||||
COMMENT ON COLUMN public.tbl_vorlage.stud_selfservice IS 'Can this documents be downloaded if archived'";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Neue Spalte stud_selfserice in public.tbl_vorlage hinzugefügt';
|
||||
}
|
||||
|
||||
// dokument_kurzbz fuer public.tbl_vorlage
|
||||
if(!@$db->db_query("SELECT dokument_kurzbz FROM public.tbl_vorlage LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_vorlage ADD COLUMN dokument_kurzbz varchar(8);
|
||||
ALTER TABLE public.tbl_vorlage ADD CONSTRAINT fk_vorlage_dokument FOREIGN KEY (dokument_kurzbz) REFERENCES public.tbl_dokument (dokument_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
COMMENT ON COLUMN public.tbl_vorlage.dokument_kurzbz IS 'Connects a Template with the corresponding Dokument'";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Neue Spalte dokument_kurzbz in public.tbl_vorlage hinzugefügt';
|
||||
}
|
||||
|
||||
// Remove NOT NULL constraint on vorlaufszeit on public.tbl_ampel
|
||||
if($result = @$db->db_query("SELECT is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'public' AND TABLE_NAME = 'tbl_ampel' AND COLUMN_NAME = 'vorlaufzeit' AND is_nullable = 'NO'"))
|
||||
{
|
||||
@@ -2216,7 +2365,7 @@ $tabellen=array(
|
||||
"lehre.tbl_zeugnisnote" => array("lehrveranstaltung_id","student_uid","studiensemester_kurzbz","note","uebernahmedatum","benotungsdatum","bemerkung","updateamum","updatevon","insertamum","insertvon","ext_id","punkte"),
|
||||
"public.ci_apikey" => array("apikey_id","key","level","ignore_limits","date_created"),
|
||||
"public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id","rechnungsadresse","anmerkung"),
|
||||
"public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am","ausstellungsnation","formal_geprueft_amum"),
|
||||
"public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am","ausstellungsnation","formal_geprueft_amum","archiv","signiert","stud_selfservice"),
|
||||
"public.tbl_ampel" => array("ampel_id","kurzbz","beschreibung","benutzer_select","deadline","vorlaufzeit","verfallszeit","insertamum","insertvon","updateamum","updatevon","email","verpflichtend","buttontext"),
|
||||
"public.tbl_ampel_benutzer_bestaetigt" => array("ampel_benutzer_bestaetigt_id","ampel_id","uid","insertamum","insertvon"),
|
||||
"public.tbl_aufmerksamdurch" => array("aufmerksamdurch_kurzbz","beschreibung","ext_id","bezeichnung", "aktiv"),
|
||||
@@ -2296,7 +2445,7 @@ $tabellen=array(
|
||||
"public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung","onlinebewerbung"),
|
||||
"public.tbl_tag" => array("tag"),
|
||||
"public.tbl_variable" => array("name","uid","wert"),
|
||||
"public.tbl_vorlage" => array("vorlage_kurzbz","bezeichnung","anmerkung","mimetype","attribute"),
|
||||
"public.tbl_vorlage" => array("vorlage_kurzbz","bezeichnung","anmerkung","mimetype","attribute","archivierbar","signierbar","stud_selfservice","dokument_kurzbz"),
|
||||
"public.tbl_vorlagedokument" => array("vorlagedokument_id","sort","vorlagestudiengang_id","dokument_kurzbz"),
|
||||
"public.tbl_vorlagestudiengang" => array("vorlagestudiengang_id","vorlage_kurzbz","studiengang_kz","version","text","oe_kurzbz","style","berechtigung","anmerkung_vorlagestudiengang","aktiv","sprache","subject","orgform_kurzbz"),
|
||||
"testtool.tbl_ablauf" => array("ablauf_id","gebiet_id","studiengang_kz","reihung","gewicht","semester", "insertamum","insertvon","updateamum", "updatevon","ablauf_vorgaben_id","studienplan_id"),
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+639
-629
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
|
||||
>
|
||||
|
||||
@@ -323,6 +324,9 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<style:style style:name="fr3" style:family="graphic" style:parent-style-name="Graphics">
|
||||
<style:graphic-properties style:run-through="foreground" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="bottom" style:vertical-rel="page-content" style:horizontal-pos="from-left" style:horizontal-rel="page-content" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
|
||||
</style:style>
|
||||
<style:style style:name="frSignatur" style:family="graphic" style:parent-style-name="Frame">
|
||||
<style:graphic-properties style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:padding="0cm" fo:border="none" style:shadow="none" draw:shadow-opacity="100%" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
|
||||
</style:style>
|
||||
</office:automatic-styles>
|
||||
<office:body>
|
||||
<xsl:apply-templates select="zeugnis"/>
|
||||
@@ -341,7 +345,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
|
||||
muss für jedes Dokument (jeder neue Durchlauf der Schleife) ein draw:frame-Tag definiert werden. Diese müssen ALLE VOR den ersten text:p-Elementen stehen.
|
||||
Deshalb wirde erst die Schleife für die draw:frames aufgerufen, dann folg tder Inhalt -->
|
||||
<xsl:if test="position()=1">
|
||||
<xsl:if test="position()=1 and not(../signed)">
|
||||
<xsl:for-each select="../zeugnis">
|
||||
<xsl:variable select="position()" name="number"/><!-- Variable number definieren, die nach jedem Dokument um eines erhöht wird (position) -->
|
||||
<draw:frame draw:style-name="fr1" draw:name="Rahmen{$number}" text:anchor-type="page" text:anchor-page-number="{$number}" svg:y="21.001cm" draw:z-index="0">
|
||||
@@ -495,6 +499,13 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<text:p text:style-name="P23">Grades:<text:tab/>Passed with distinction, Passed with merit, Passed</text:p>
|
||||
<text:p text:style-name="P19"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="../signed">
|
||||
<text:p text:style-name="P1">
|
||||
<draw:frame draw:style-name="frSignatur" draw:name="Bild1" text:anchor-type="paragraph" svg:width="16.401cm" svg:height="4.235cm" draw:z-index="0">
|
||||
<draw:image xlink:href="Pictures/Platzhalter_QR_FHC_AMT_PRIVAT_GROSS_EN.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</text:p>
|
||||
</xsl:if>
|
||||
</office:text>
|
||||
</xsl:template>
|
||||
<xsl:template match="unterrichtsfach">
|
||||
|
||||
+522
-510
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
|
||||
>
|
||||
|
||||
@@ -312,6 +313,9 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<style:style style:name="fr3" style:family="graphic" style:parent-style-name="Graphics">
|
||||
<style:graphic-properties style:run-through="foreground" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="bottom" style:vertical-rel="page-content" style:horizontal-pos="from-left" style:horizontal-rel="page-content" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
|
||||
</style:style>
|
||||
<style:style style:name="frSignatur" style:family="graphic" style:parent-style-name="Frame">
|
||||
<style:graphic-properties style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:padding="0cm" fo:border="none" style:shadow="none" draw:shadow-opacity="100%" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
|
||||
</style:style>
|
||||
</office:automatic-styles>
|
||||
<office:body>
|
||||
<xsl:apply-templates select="zeugnis"/>
|
||||
@@ -330,7 +334,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
|
||||
muss für jedes Dokument (jeder neue Durchlauf der Schleife) ein draw:frame-Tag definiert werden. Diese müssen ALLE VOR den ersten text:p-Elementen stehen.
|
||||
Deshalb wirde erst die Schleife für die draw:frames aufgerufen, dann folg tder Inhalt -->
|
||||
<xsl:if test="position()=1">
|
||||
<xsl:if test="position()=1 and not(../signed)">
|
||||
<xsl:for-each select="../zeugnis">
|
||||
<xsl:variable select="position()" name="number"/><!-- Variable number definieren, die nach jedem Dokument um eines erhöht wird (position) -->
|
||||
<draw:frame draw:style-name="fr1" draw:name="Rahmen{$number}" text:anchor-type="page" text:anchor-page-number="{$number}" svg:y="21.001cm" draw:z-index="0">
|
||||
@@ -415,6 +419,13 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<text:p text:style-name="P22">Beurteilung: bestanden, nicht bestanden, nicht teilgenommen</text:p>
|
||||
<text:p text:style-name="P22">Gesetzliche Grundlage: gem. § 4 abs. 3 des Bundesgesetzes über Fachhochschul-Studiengänge (FHStG), BGBl. Nr. 340/1993 idgF</text:p>
|
||||
<text:p text:style-name="P7"/>
|
||||
<xsl:if test="../signed">
|
||||
<text:p text:style-name="P1">
|
||||
<draw:frame draw:style-name="frSignatur" draw:name="Bild1" text:anchor-type="paragraph" svg:width="16.401cm" svg:height="4.235cm" draw:z-index="0">
|
||||
<draw:image xlink:href="Pictures/Platzhalter_QR_FHC_AMT_PRIVAT_GROSS_DE.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</text:p>
|
||||
</xsl:if>
|
||||
</office:text>
|
||||
</xsl:template>
|
||||
<xsl:template match="unterrichtsfach">
|
||||
@@ -442,4 +453,4 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
</xsl:stylesheet>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
|
||||
>
|
||||
|
||||
@@ -320,6 +321,9 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<style:style style:name="fr3" style:family="graphic" style:parent-style-name="Graphics">
|
||||
<style:graphic-properties style:run-through="foreground" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="bottom" style:vertical-rel="page-content" style:horizontal-pos="from-left" style:horizontal-rel="page-content" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
|
||||
</style:style>
|
||||
<style:style style:name="frSignatur" style:family="graphic" style:parent-style-name="Frame">
|
||||
<style:graphic-properties style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:padding="0cm" fo:border="none" style:shadow="none" draw:shadow-opacity="100%" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
|
||||
</style:style>
|
||||
</office:automatic-styles>
|
||||
<office:body>
|
||||
<xsl:apply-templates select="zeugnis"/>
|
||||
@@ -338,7 +342,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
|
||||
muss für jedes Dokument (jeder neue Durchlauf der Schleife) ein draw:frame-Tag definiert werden. Diese müssen ALLE VOR den ersten text:p-Elementen stehen.
|
||||
Deshalb wirde erst die Schleife für die draw:frames aufgerufen, dann folg tder Inhalt -->
|
||||
<xsl:if test="position()=1">
|
||||
<xsl:if test="position()=1 and not(../signed)">
|
||||
<xsl:for-each select="../zeugnis">
|
||||
<xsl:variable select="position()" name="number"/><!-- Variable number definieren, die nach jedem Dokument um eines erhöht wird (position) -->
|
||||
<draw:frame draw:style-name="fr1" draw:name="Rahmen{$number}" text:anchor-type="page" text:anchor-page-number="{$number}" svg:y="21.001cm" draw:z-index="0">
|
||||
@@ -477,6 +481,13 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
|
||||
<text:p text:style-name="P23">Notenstufen:<text:tab/>mit ausgezeichnetem Erfolg bestanden, mit gutem Erfolg bestanden, bestanden</text:p>
|
||||
<text:p text:style-name="P19"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="../signed">
|
||||
<text:p text:style-name="P1">
|
||||
<draw:frame draw:style-name="frSignatur" draw:name="Bild1" text:anchor-type="paragraph" svg:width="16.401cm" svg:height="4.235cm" draw:z-index="0">
|
||||
<draw:image xlink:href="Pictures/Platzhalter_QR_FHC_AMT_PRIVAT_GROSS_DE.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</text:p>
|
||||
</xsl:if>
|
||||
</office:text>
|
||||
</xsl:template>
|
||||
<xsl:template match="unterrichtsfach">
|
||||
|
||||
@@ -61,6 +61,11 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="pruefung">
|
||||
<!--
|
||||
Der Bescheid wird nur aufgrund der zuletzt vorhandenen Abschlusspruefung ausgestellt
|
||||
Diese wird als erstes vom RDF geliefert
|
||||
-->
|
||||
<xsl:if test="position()=1">
|
||||
<office:text text:use-soft-page-breaks="true" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0">
|
||||
<text:sequence-decls>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
|
||||
@@ -121,17 +126,30 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
|
||||
<text:p text:style-name="P1">(Council of the University of Applied Sciences Technikum Wien) within four weeks of</text:p>
|
||||
<text:p text:style-name="P1">notification.</text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1">Vienna, <xsl:value-of select="sponsion" /></text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1">For the UAS Council</text:p>
|
||||
<text:p text:style-name="P1">The Rector</text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"><xsl:value-of select="rektor" /></text:p>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="../signed">
|
||||
<text:p text:style-name="P3">
|
||||
<draw:frame draw:style-name="fr1" draw:name="Bild1" text:anchor-type="paragraph" svg:width="17cm" svg:height="4.235cm" draw:z-index="0">
|
||||
<draw:image xlink:href="Pictures/Platzhalter_QR_FHC_GROSS_AMT_EN.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</text:p>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1">Vienna, <xsl:value-of select="sponsion" /></text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1">For the UAS Council</text:p>
|
||||
<text:p text:style-name="P1">The Rector</text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"><xsl:value-of select="rektor" /></text:p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</office:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
</xsl:stylesheet>
|
||||
|
||||
+27
-10
@@ -61,6 +61,11 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="pruefung">
|
||||
<!--
|
||||
Der Bescheid wird nur aufgrund der zuletzt vorhandenen Abschlusspruefung ausgestellt
|
||||
Diese wird als erstes vom RDF geliefert
|
||||
-->
|
||||
<xsl:if test="position()=1">
|
||||
<office:text text:use-soft-page-breaks="true" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0">
|
||||
<text:sequence-decls>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
|
||||
@@ -136,15 +141,27 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
|
||||
<text:p text:style-name="P1">von vier Wochen ab Zustellung bei der belangten Behörde (Kollegium der Fachhochschule</text:p>
|
||||
<text:p text:style-name="P1">Technikum Wien) einzubringen.</text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1">Wien, <xsl:value-of select="sponsion" /></text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1">Für das Fachhochschulkollegium</text:p>
|
||||
<text:p text:style-name="P1">Der Rektor</text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"><xsl:value-of select="rektor" /></text:p>
|
||||
<xsl:choose>
|
||||
<xsl:when test="../signed">
|
||||
<text:p text:style-name="P1">
|
||||
<draw:frame draw:style-name="fr1" draw:name="Bild1" text:anchor-type="paragraph" svg:width="17cm" svg:height="4.235cm" draw:z-index="0">
|
||||
<draw:image xlink:href="Pictures/Platzhalter_QR_FHC_GROSS_AMT_DE.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
|
||||
</draw:frame>
|
||||
</text:p>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<text:p text:style-name="P1">Wien, <xsl:value-of select="sponsion" /></text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1">Für das Fachhochschulkollegium</text:p>
|
||||
<text:p text:style-name="P1">Der Rektor</text:p>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"/>
|
||||
<text:p text:style-name="P1"><xsl:value-of select="rektor" /></text:p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</office:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
</xsl:stylesheet>
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Manfred Kindl < manfred.kindl@technikum-wien.at >
|
||||
* Authors: Manfred Kindl < manfred.kindl@technikum-wien.at >,
|
||||
* Andreas Österreicher < andreas.oesterreicher@technikum-wien.at >
|
||||
*/
|
||||
/**
|
||||
* Dokumentvorlagen
|
||||
@@ -29,6 +30,7 @@ require_once('../../include/vorlage.class.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/organisationseinheit.class.php');
|
||||
require_once('../../include/studiengang.class.php');
|
||||
require_once('../../include/dokument.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
{
|
||||
@@ -246,6 +248,8 @@ echo '
|
||||
<hr>';
|
||||
if ((isset($_GET['neueVorlage']) && $_GET['neueVorlage'] == 'true'))
|
||||
{
|
||||
$dokument = new dokument();
|
||||
$dokument->getAllDokumente();
|
||||
echo'
|
||||
<form action="'.$_SERVER['PHP_SELF'].'?neueVorlage=save" method="POST">
|
||||
<table>
|
||||
@@ -273,6 +277,40 @@ if ((isset($_GET['neueVorlage']) && $_GET['neueVorlage'] == 'true'))
|
||||
<input type="text" size="80" maxlength="64" name="neueVorlage_mimetype" value="application/vnd.oasis.opendocument.text">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dokument</td>
|
||||
<td>
|
||||
<SELECT name="neueVorlage_dokument_kurzbz">
|
||||
<option value="">-- keine Auswahl --</option>';
|
||||
foreach($dokument->result as $dok)
|
||||
{
|
||||
if ($dok->dokument_kurzbz == $vorlage->dokument_kurzbz)
|
||||
$selected = 'selected';
|
||||
else
|
||||
$selected = '';
|
||||
|
||||
echo '<option value="'.$dok->dokument_kurzbz.'" '.$selected.'>'.$dok->bezeichnung.'</option>';
|
||||
}
|
||||
echo ' </SELECT></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Archivierbar</td>
|
||||
<td>
|
||||
<input type="checkbox" name="neueVorlage_archivierbar" '.($vorlage->archivierbar?'checked="checked"':'').'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Signierbar</td>
|
||||
<td>
|
||||
<input type="checkbox" name="neueVorlage_signierbar" '.($vorlage->signierbar?'checked="checked"':'').'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Studierenden Selfservice</td>
|
||||
<td>
|
||||
<input type="checkbox" name="neueVorlage_stud_selfservice" '.($vorlage->stud_selfservice?'checked="checked"':'').'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
@@ -285,6 +323,9 @@ if ((isset($_GET['neueVorlage']) && $_GET['neueVorlage'] == 'true'))
|
||||
}
|
||||
elseif (isset($_GET['vorlageBearbeiten']))
|
||||
{
|
||||
$dokument = new dokument();
|
||||
$dokument->getAllDokumente();
|
||||
|
||||
$vorlage = new vorlage();
|
||||
$vorlage->loadVorlage($_GET['vorlageBearbeiten']);
|
||||
echo'
|
||||
@@ -314,6 +355,40 @@ elseif (isset($_GET['vorlageBearbeiten']))
|
||||
<input type="text" size="80" maxlength="64" name="updateVorlage_mimetype" value="'.$db->convert_html_chars($vorlage->mimetype).'">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dokument</td>
|
||||
<td>
|
||||
<SELECT name="updateVorlage_dokument_kurzbz">
|
||||
<option value="">-- keine Auswahl --</option>';
|
||||
foreach($dokument->result as $dok)
|
||||
{
|
||||
if ($dok->dokument_kurzbz == $vorlage->dokument_kurzbz)
|
||||
$selected = 'selected';
|
||||
else
|
||||
$selected = '';
|
||||
|
||||
echo '<option value="'.$dok->dokument_kurzbz.'" '.$selected.'>'.$dok->bezeichnung.'</option>';
|
||||
}
|
||||
echo ' </SELECT></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Archivierbar</td>
|
||||
<td>
|
||||
<input type="checkbox" name="updateVorlage_archivierbar" '.($vorlage->archivierbar?'checked="checked"':'').'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Signierbar</td>
|
||||
<td>
|
||||
<input type="checkbox" name="updateVorlage_signierbar" '.($vorlage->signierbar?'checked="checked"':'').'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Studierenden Selfservice</td>
|
||||
<td>
|
||||
<input type="checkbox" name="updateVorlage_stud_selfservice" '.($vorlage->stud_selfservice?'checked="checked"':'').'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
@@ -333,6 +408,10 @@ else
|
||||
$neuevorlage->bezeichnung = htmlspecialchars($_POST['neueVorlage_bezeichnung']);
|
||||
$neuevorlage->anmerkung = htmlspecialchars($_POST['neueVorlage_anmerkung']);
|
||||
$neuevorlage->mimetype = htmlspecialchars($_POST['neueVorlage_mimetype']);
|
||||
$neuevorlage->dokument_kurzbz = htmlspecialchars($_POST['neueVorlage_dokument_kurzbz']);
|
||||
$neuevorlage->archivierbar = isset($_POST['neueVorlage_archivierbar']);
|
||||
$neuevorlage->signierbar = isset($_POST['neueVorlage_signierbar']);
|
||||
$neuevorlage->stud_selfservice = isset($_POST['neueVorlage_stud_selfservice']);
|
||||
if (!($neuevorlage->saveVorlage(true)))
|
||||
{
|
||||
echo 'Fehler beim Speichern';
|
||||
@@ -345,6 +424,10 @@ else
|
||||
$updatevorlage->bezeichnung = htmlspecialchars($_POST['updateVorlage_bezeichnung']);
|
||||
$updatevorlage->anmerkung = htmlspecialchars($_POST['updateVorlage_anmerkung']);
|
||||
$updatevorlage->mimetype = htmlspecialchars($_POST['updateVorlage_mimetype']);
|
||||
$updatevorlage->dokument_kurzbz = htmlspecialchars($_POST['updateVorlage_dokument_kurzbz']);
|
||||
$updatevorlage->archivierbar = isset($_POST['updateVorlage_archivierbar']);
|
||||
$updatevorlage->signierbar = isset($_POST['updateVorlage_signierbar']);
|
||||
$updatevorlage->stud_selfservice = isset($_POST['updateVorlage_stud_selfservice']);
|
||||
if (!($updatevorlage->saveVorlage()))
|
||||
{
|
||||
echo 'Fehler beim Speichern';
|
||||
@@ -470,6 +553,7 @@ if($vorlage_kurzbz!='' || $oe_kurzbz!='')
|
||||
<th>Organisationseinheit</th>
|
||||
<th>Studiengang</th>
|
||||
<th>Version</th>
|
||||
<th>Berechtigung</th>
|
||||
<th>Anmerkung</th>
|
||||
<th>Aktiv</th>
|
||||
<th colspan="2"></th>
|
||||
@@ -492,6 +576,7 @@ if($vorlage_kurzbz!='' || $oe_kurzbz!='')
|
||||
<td '.$style.'>'.$db->convert_html_chars($oe->organisationseinheittyp_kurzbz.' '.$oe->bezeichnung).'</td>
|
||||
<td>'.$db->convert_html_chars($row->studiengang_kz).'</td>
|
||||
<td>'.$db->convert_html_chars($row->version).'</td>
|
||||
<td>'.$db->convert_html_chars($row->berechtigung).'</td>
|
||||
<td>'.$db->convert_html_chars($row->anmerkung_vorlagestudiengang).'</td>
|
||||
<td>'.($row->aktiv==false?'inaktiv':'aktiv').'</td>
|
||||
<td><a href="'.$_SERVER['PHP_SELF'].'?vorlagestudiengang_id='.$row->vorlagestudiengang_id.'&vorlage_kurzbz='.$vorlage_kurzbz.'&oe_auswahl='.$oe_auswahl.'">Edit</a></td>
|
||||
|
||||
Reference in New Issue
Block a user