This commit is contained in:
Andreas Österreicher
2007-03-30 13:51:06 +00:00
parent e2a22b2b29
commit 3674581c0b
7 changed files with 81 additions and 69 deletions
+10 -14
View File
@@ -19,6 +19,12 @@
* 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)
*/
require_once('../../vilesci/config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
@@ -27,20 +33,15 @@ require_once('../../include/studiengang.class.php');
require_once('../../include/lehreinheit.class.php');
require_once('../../include/fachbereich.class.php');
//String der laenger als limit ist wird
//abgeschnitten und '...' angehaengt
function CutString($strVal, $limit)
{
if(strlen($strVal) > $limit+3)
{
return substr($strVal, 0, $limit) . "...";
}
else
{
return $strVal;
}
}
ini_set('display_errors','0');
//error_reporting(E_ALL);
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
@@ -57,11 +58,6 @@ if(isset($_GET['stg_kz']))
$studiengang_kz = $_GET['stg_kz'];
else
die('Fehlerhafte Parameteruebergabe');
if(isset($_GET['output']))
$output = $_GET['output'];
else
$output = 'pdf';
//Berechtigung pruefen
$rechte = new benutzerberechtigung($conn);
@@ -125,7 +121,7 @@ foreach ($fachbereich_obj->result as $fb)
$fb_arr[$fb->fachbereich_kurzbz] = $fb->bezeichnung;
$lehreinheit = new lehreinheit($conn);
$qry = "SELECT * FROM campus.vw_lehreinheit WHERE lv_studiengang_kz='".addslashes($studiengang_kz)."' AND mitarbeiter_uid='".addslashes($uid)."' AND studiensemester_kurzbz='$semester_aktuell'";
$qry = "SELECT * FROM campus.vw_lehreinheit WHERE lv_studiengang_kz='".addslashes($studiengang_kz)."' AND mitarbeiter_uid='".addslashes($uid)."' AND studiensemester_kurzbz='$semester_aktuell' ORDER BY lehreinheit_id";
if($result = pg_query($conn, $qry))
{
@@ -261,7 +257,7 @@ $buffer = html_entity_decode($buffer);
$fo2pdf = new XslFo2Pdf();
if (!$fo2pdf->generatePdf($buffer, 'filename', "D"))
{
echo "Failed parsing file:".'filename'."<br>";
echo('Failed to generate PDF');
}
?>
+10 -9
View File
@@ -25,20 +25,20 @@ class FO_Block extends FO_LayoutObject{
private static $CHILDNODES = array(
//FO_BidiOverride,
//FO_Character,
FO_ExternalGraphic, /*oesi - uncomment for ExternalGraphic Support*/
FO_InstreamForeignObject,
FO_Inline,
'FO_ExternalGraphic', /*oesi - uncomment for ExternalGraphic Support*/
'FO_InstreamForeignObject',
'FO_Inline',
//FO_InlineContainer,
//FO_Leader,
//FO_PageNumber,
//FO_PageNumberCitation,
FO_BasicLink,
'FO_BasicLink',
//FO_MultiToggle,
FO_Block,
FO_BlockContainer,
FO_TableAndCaption,
FO_Table,
FO_ListBlock
'FO_Block',
'FO_BlockContainer',
'FO_TableAndCaption',
'FO_Table',
'FO_ListBlock'
);
protected function getChildNodes() {
@@ -64,6 +64,7 @@ class FO_Block extends FO_LayoutObject{
case "left":
$align = "L";
default:
$align = '';
}
$text = $this->escape($text);
+16 -7
View File
@@ -29,7 +29,7 @@ class FO_Container {
}
public function resolveReference($category, $name) {
return $_refs[$category][$name];
return (isset($_refs)?$_refs[$category][$name]:'');
}
}
@@ -41,7 +41,10 @@ class FO_Context {
}
public function get($key) {
return $this->_context[$key];
if(isset($this->_context[$key]))
return $this->_context[$key];
else
return false;
}
public function set($key, $val) {
@@ -189,12 +192,18 @@ abstract class FO_Object {
}
protected function getAttribute(DOMNode $node, $key) {
return $node->attributes->getNamedItem($key)->nodeValue;
if($node->attributes->getNamedItem($key)!=null)
return $node->attributes->getNamedItem($key)->nodeValue;
else
return false;
}
protected function getSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm") {
$val = $node->attributes->getNamedItem($key)->nodeValue;
return $this->calcInternalValue($val, $to, $from);
if($node->attributes->getNamedItem($key)!=null)
$val = $node->attributes->getNamedItem($key)->nodeValue;
else
$val=false;
return $this->calcInternalValue($val, $to, $from);
}
protected function initSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm") {
@@ -346,8 +355,8 @@ class FO_Root extends FO_Object{
}
private static $CHILDNODES = array (
FO_LayoutMasterSet,
FO_PageSequence
'FO_LayoutMasterSet',
'FO_PageSequence'
);
public function parse(DOMNode $node) {
+1 -1
View File
@@ -25,7 +25,7 @@ require_once("fo_svg.php");
class FO_InstreamForeignObject extends FO_Object {
private static $CHILDNODES = array(
FO_SVG
'FO_SVG'
);
public function parse(DOMNode $node) {
+14 -13
View File
@@ -65,6 +65,7 @@ abstract class FO_LayoutObject extends FO_FlowContainer {
//$this->initLocalSizeAttribute($node, "padding-right");
}
//oesi - convertiert die daten von utf8 nach latin1 und ersetzt 'EURO' durch das eurosymbol
public function convert($str)
{
//echo str_replace('EURO',chr(128),utf8_decode($str));
@@ -116,7 +117,7 @@ abstract class FO_LayoutObject extends FO_FlowContainer {
//oesi - hack for ExternalGraphic Tag to show without content
if($this instanceof FO_ExternalGraphic)
$this->processContent($child->textContent);
$this->processContent('');
//endhack
$contentBuffer = $this->endCapture();
@@ -498,13 +499,13 @@ class FO_LayoutMasterSet extends FO_Object {
class FO_PageSequence extends FO_Object {
private static $CHILDNODES = array(
FO_Flow
'FO_Flow'
);
public function parse(DOMNode $node) {
$masterRef = $node->attributes->getNamedItem("master-reference");
if ($masterRef) {
$master = $this->resolveReference(FO_LayoutMasterSet, $masterRef);
$master = $this->resolveReference('FO_LayoutMasterSet', $masterRef);
//TODO: do something with this master
}
$pdf = $this->getPdf();
@@ -541,11 +542,11 @@ abstract class FO_FlowContainer extends FO_Object {
class FO_Flow extends FO_FlowContainer {
private static $CHILDNODES = array(
FO_Block,
FO_Table,
FO_BlockContainer,
FO_TableAndCaption,
FO_ListBlock
'FO_Block',
'FO_Table',
'FO_BlockContainer',
'FO_TableAndCaption',
'FO_ListBlock'
);
public function parse(DOMNode $node) {
@@ -556,11 +557,11 @@ class FO_Flow extends FO_FlowContainer {
class FO_BlockContainer extends FO_LayoutObject {
private static $CHILDNODES = array(
FO_Block,
FO_BlockContainer,
FO_TableAndCaption,
FO_Table,
FO_ListBlock);
'FO_Block',
'FO_BlockContainer',
'FO_TableAndCaption',
'FO_Table',
'FO_ListBlock');
protected function initAttributes(DOMNode $node) {
$this->initLocalSizeAttribute($node, "position");
+21 -21
View File
@@ -67,8 +67,8 @@ http://xslf2pdf.tegonal.com
class FO_TableAndCaption extends FO_Object {
private static $CHILDNODES = array(
FO_Table,
FO_TableCaption
'FO_Table',
'FO_TableCaption'
);
public function parse(DOMNode $node) {
@@ -80,10 +80,10 @@ class FO_Table extends FO_LayoutObject {
private $colCount = 0;
private static $CHILDNODES = array(
FO_TableColumn,
FO_TableHeader,
FO_TableFooter,
FO_TableBody
'FO_TableColumn',
'FO_TableHeader',
'FO_TableFooter',
'FO_TableBody'
);
protected function getChildNodes() {
@@ -122,9 +122,9 @@ class FO_Table extends FO_LayoutObject {
class FO_TableCaption extends FO_Object {
private static $CHILDNODES = array(
FO_Block,
FO_BlockContainer,
FO_ListBlock
'FO_Block',
'FO_BlockContainer',
'FO_ListBlock'
);
public function parse(DOMNode $node) {
@@ -149,7 +149,7 @@ class FO_TableRow extends FO_LayoutObject {
private $colIndex = 0;
private static $CHILDNODES = array(
FO_TableCell
'FO_TableCell'
);
protected function getChildNodes() {
@@ -186,8 +186,8 @@ class FO_TableRow extends FO_LayoutObject {
class FO_TableHeader extends FO_TableRow {
private static $CHILDNODES = array(
FO_TableCell,
FO_TableRow
'FO_TableCell',
'FO_TableRow'
);
protected function getChildNodes() {
@@ -198,8 +198,8 @@ class FO_TableHeader extends FO_TableRow {
class FO_TableFooter extends FO_LayoutObject {
private static $CHILDNODES = array(
FO_TableCell,
FO_TableRow
'FO_TableCell',
'FO_TableRow'
);
protected function getChildNodes() {
@@ -210,8 +210,8 @@ class FO_TableFooter extends FO_LayoutObject {
class FO_TableBody extends FO_LayoutObject {
private static $CHILDNODES = array(
FO_TableCell,
FO_TableRow
'FO_TableCell',
'FO_TableRow'
);
protected function getChildNodes() {
@@ -232,11 +232,11 @@ class FO_TableBody extends FO_LayoutObject {
class FO_TableCell extends FO_LayoutObject {
private static $CHILDNODES = array(
FO_Block,
FO_BlockContainer,
FO_ListBlock,
FO_Table,
FO_TableAndCaption
'FO_Block',
'FO_BlockContainer',
'FO_ListBlock',
'FO_Table',
'FO_TableAndCaption'
);
+9 -4
View File
@@ -68,6 +68,7 @@ class XslFo2PDF {
$name = $name.".pdf";
}
$pdf->Output($name, $dest);
return true;
}
private function initDefaults(FPDF $pdf, FO_Root $root) {
@@ -114,12 +115,16 @@ class FO_Factory {
public static function createFOObject(DOMNode $node, FO_Container $container,
FPDF $pdf, FO_Context &$context,
$filter) {
$obj = self::$factory[$node->nodeName];
if (!$obj) {
$filter)
{
if(isset(self::$factory[$node->nodeName]))
$obj = self::$factory[$node->nodeName];
if (!isset($obj) || !$obj)
{
return NULL;
}
if (!$filter || !in_array($obj, $filter)) {
if (!$filter || !in_array($obj, $filter))
{
echo "ignore due to filter:$obj<br>";
return NULL;
}