The branch, master has been updated via f6f133eb09532943976cd38d40d794a008bbccc5 (commit) via 235e14d41ea6eafd0aa81ea726af5a64346eebb9 (commit) via 0d7d007995ab59833b4132e8cee7e1093a07960b (commit) via 17cbe2959294811d8fca81d575dbd20b0efe06d7 (commit) from e9ea3b59a37239034b9690a16d86acb1d6166d57 (commit)
- Log ----------------------------------------------------------------- commit f6f133eb09532943976cd38d40d794a008bbccc5 Author: Michal Čihař mcihar@suse.cz Date: Wed Aug 10 14:33:03 2011 +0200
Avoid duplicating bookmark code from TCPDF, where it works
commit 235e14d41ea6eafd0aa81ea726af5a64346eebb9 Author: Michal Čihař mcihar@suse.cz Date: Wed Aug 10 14:29:36 2011 +0200
Indentaion
commit 0d7d007995ab59833b4132e8cee7e1093a07960b Author: Michal Čihař mcihar@suse.cz Date: Wed Aug 10 14:29:22 2011 +0200
Unify code for PDF footer
commit 17cbe2959294811d8fca81d575dbd20b0efe06d7 Author: Michal Čihař mcihar@suse.cz Date: Wed Aug 10 14:24:22 2011 +0200
Start base class for all PDF output
-----------------------------------------------------------------------
Summary of changes: libraries/PDF.class.php | 51 ++++++++ libraries/export/pdf.php | 36 +----- libraries/schema/Pdf_Relation_Schema.class.php | 146 +++--------------------- 3 files changed, 69 insertions(+), 164 deletions(-) create mode 100644 libraries/PDF.class.php
diff --git a/libraries/PDF.class.php b/libraries/PDF.class.php new file mode 100644 index 0000000..719df87 --- /dev/null +++ b/libraries/PDF.class.php @@ -0,0 +1,51 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * TCPDF wrapper class. + */ + +require_once './libraries/tcpdf/tcpdf.php'; + +/** + * PDF font to use. + */ +define('PMA_PDF_FONT', 'DejaVuSans'); + +/** + * PDF export base class providing basic configuration. + */ +class PMA_PDF extends TCPDF +{ + var $footerset; + + public function __construct($orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8', $diskcache=false) + { + parent::__construct(); + $this->SetAuthor('phpMyAdmin ' . PMA_VERSION); + $this->AliasNbPages(); + $this->AddFont('DejaVuSans', '', 'dejavusans.php'); + $this->AddFont('DejaVuSans', 'B', 'dejavusansb.php'); + $this->AddFont('DejaVuSerif', '', 'dejavuserif.php'); + $this->AddFont('DejaVuSerif', 'B', 'dejavuserifb.php'); + $this->SetFont(PMA_PDF_FONT, '', 14); + $this->setFooterFont(array(PMA_PDF_FONT, '', 14)); + } + + /** + * This function must be named "Footer" to work with the TCPDF library + */ + function Footer() + { + // Check if footer for this page already exists + if (!isset($this->footerset[$this->page])) { + $this->SetY(-15); + $this->SetFont(PMA_PDF_FONT, '', 14); + $this->Cell(0, 6, __('Page number:') . ' ' . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), 'T', 0, 'C'); + $this->Cell(0, 6, PMA_localisedDate(), 0, 1, 'R'); + $this->SetY(20); + + // set footerset + $this->footerset[$this->page] = 1; + } + } +} diff --git a/libraries/export/pdf.php b/libraries/export/pdf.php index 3cc0acf..61c8dce 100644 --- a/libraries/export/pdf.php +++ b/libraries/export/pdf.php @@ -30,24 +30,17 @@ if (isset($plugin_list)) { ); } else {
- /** - * Font used in PDF. - * - * @todo Make this configuratble (at least Sans/Serif). - */ - define('PMA_PDF_FONT', 'DejaVuSans'); - require_once './libraries/tcpdf/tcpdf.php'; + require_once './libraries/PDF.class.php';
/** * Adapted from a LGPL script by Philip Clarke * @package phpMyAdmin-Export * @subpackage PDF */ - class PMA_PDF extends TCPDF + class PMA_Export_PDF extends PMA_PDF { var $tablewidths; var $headerset; - var $footerset;
function checkPageBreak($h=0, $y='', $addpage=true) { if ($this->empty_string($y)) { @@ -125,20 +118,6 @@ if (isset($plugin_list)) { $this->dataY = $maxY; }
- function Footer() - { - // Check if footer for this page already exists - if (!isset($this->footerset[$this->page])) { - $this->SetY(-15); - //Page number - $this->setFooterFont(PMA_PDF_FONT, '', 14); - $this->Cell(0, 6, __('Page number:') . ' ' . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), 'T', 0, 'C'); - - // set footerset - $this->footerset[$this->page] = 1; - } - } - function morepagestable($lineheight=8) { // some things to set and 'remember' @@ -354,9 +333,9 @@ if (isset($plugin_list)) {
} // end of mysql_report function
- } // end of PMA_PDF class + } // end of PMA_Export_PDF class
- $pdf = new PMA_PDF('L', 'pt', 'A3'); + $pdf = new PMA_Export_PDF('L', 'pt', 'A3');
/** * Finalize the pdf. @@ -389,13 +368,6 @@ if (isset($plugin_list)) { global $pdf_report_title; global $pdf;
- $pdf->AddFont('DejaVuSans', '', 'dejavusans.php'); - $pdf->AddFont('DejaVuSans', 'B', 'dejavusansb.php'); - $pdf->AddFont('DejaVuSerif', '', 'dejavuserif.php'); - $pdf->AddFont('DejaVuSerif', 'B', 'dejavuserifb.php'); - $pdf->SetFont(PMA_PDF_FONT, '', 11.5); - $pdf->setFooterFont(array(PMA_PDF_FONT, '', 11.5)); - $pdf->AliasNbPages(); $pdf->Open();
$attr=array('titleFontSize' => 18, 'titleText' => $pdf_report_title); diff --git a/libraries/schema/Pdf_Relation_Schema.class.php b/libraries/schema/Pdf_Relation_Schema.class.php index a4d1260..f65fcc2 100644 --- a/libraries/schema/Pdf_Relation_Schema.class.php +++ b/libraries/schema/Pdf_Relation_Schema.class.php @@ -7,13 +7,7 @@
include_once("Export_Relation_Schema.class.php");
-/** - * Font used in PDF. - * - * @todo Make this configuratble (at least Sans/Serif). - */ -define('PMA_PDF_FONT', 'DejaVuSans'); -require_once './libraries/tcpdf/tcpdf.php'; +require_once './libraries/PDF.class.php';
/** * Extends the "TCPDF" class and helps @@ -22,7 +16,7 @@ require_once './libraries/tcpdf/tcpdf.php'; * @access public * @see TCPDF */ -class PMA_PDF extends TCPDF +class PMA_Schema_PDF extends PMA_PDF { /** * Defines properties @@ -242,112 +236,8 @@ class PMA_PDF extends TCPDF { global $with_doc; if ($with_doc) { - $this->SetY(-15); - $this->SetFont($this->_ff, '', 14); - $this->Cell(0, 6, __('Page number:') . ' ' . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), 'T', 0, 'C'); - $this->Cell(0, 6, PMA_localisedDate(), 0, 1, 'R'); - $this->SetY(20); - } - } - - /** - * Add a bookmark - */ - function Bookmark($txt, $level = 0, $y = 0, $page = '') - { - $this->Outlines[0][] = $level; - $this->Outlines[1][] = $txt; - $this->Outlines[2][] = $this->page; - if ($y == -1) { - $y = $this->GetY(); + parent::Footer(); } - $this->Outlines[3][] = round($this->hPt - $y * $this->k, 2); - } - - function _putbookmarks() - { - if (count($this->Outlines) > 0) { - // Save object number - $memo_n = $this->n; - // Take the number of sub elements for an outline - $nb_outlines = sizeof($this->Outlines[0]); - $first_level = array(); - $parent = array(); - $parent[0] = 1; - for ($i = 0; $i < $nb_outlines; $i++) { - $level = $this->Outlines[0][$i]; - $kids = 0; - $last = -1; - $prev = -1; - $next = -1; - if ($i > 0) { - $cursor = $i-1; - // Take the previous outline in the same level - while ($this->Outlines[0][$cursor] > $level && $cursor > 0) - $cursor--; - if ($this->Outlines[0][$cursor] == $level) { - $prev = $cursor; - } - } - if ($i < $nb_outlines-1) { - $cursor = $i + 1; - while (isset($this->Outlines[0][$cursor]) && $this->Outlines[0][$cursor] > $level) { - // Take the immediate kid in level + 1 - if ($this->Outlines[0][$cursor] == $level + 1) { - $kids++; - $last = $cursor; - } - $cursor++; - } - $cursor = $i + 1; - // Take the next outline in the same level - while ($this->Outlines[0][$cursor] > $level && ($cursor + 1 < sizeof($this->Outlines[0]))) - $cursor++; - if ($this->Outlines[0][$cursor] == $level) { - $next = $cursor; - } - } - $this->_newobj(); - $parent[$level + 1] = $this->n; - if ($level == 0) { - $first_level[] = $this->n; - } - $this->_out('<<'); - $this->_out('/Title (' . $this->Outlines[1][$i] . ')'); - $this->_out('/Parent ' . $parent[$level] . ' 0 R'); - if ($prev != -1) { - $this->_out('/Prev ' . ($memo_n + $prev + 1) . ' 0 R'); - } - if ($next != -1) { - $this->_out('/Next ' . ($this->n + $next - $i) . ' 0 R'); - } - $this->_out('/Dest [' . (1 + (2 * $this->Outlines[2][$i])) . ' 0 R /XYZ null ' . $this->Outlines[3][$i] . ' null]'); - if ($kids > 0) { - $this->_out('/First ' . ($this->n + 1) . ' 0 R'); - $this->_out('/Last ' . ($this->n + $last - $i) . ' 0 R'); - $this->_out('/Count -' . $kids); - } - $this->_out('>>'); - $this->_out('endobj'); - } - // First page of outlines - $this->_newobj(); - $this->def_outlines = $this->n; - $this->_out('<<'); - $this->_out('/Type'); - $this->_out('/Outlines'); - $this->_out('/First ' . $first_level[0] . ' 0 R'); - $this->_out('/Last ' . $first_level[sizeof($first_level)-1] . ' 0 R'); - $this->_out('/Count ' . sizeof($first_level)); - $this->_out('>>'); - $this->_out('endobj'); - } - } - - function _putresources() - { - parent::_putresources(); - $this->_putbookmarks(); }
function SetWidths($w) @@ -449,7 +339,7 @@ class PMA_PDF extends TCPDF * and helps in drawing/generating the Tables in PDF document. * * @name Table_Stats - * @see PMA_PDF + * @see PMA_Schema_PDF */ class Table_Stats { @@ -481,7 +371,7 @@ class Table_Stats * @global object The current PDF document * @global array The relations settings * @global string The current db name - * @see PMA_PDF, Table_Stats::Table_Stats_setWidth, + * @see PMA_Schema_PDF, Table_Stats::Table_Stats_setWidth, Table_Stats::Table_Stats_setHeight */ function __construct($tableName, $fontSize, $pageNumber, &$sameWideWidth, $showKeys = false, $showInfo = false) @@ -565,7 +455,7 @@ class Table_Stats * @param integer fontSize The font size * @global object The current PDF document * @access private - * @see PMA_PDF + * @see PMA_Schema_PDF */ function _setWidth($fontSize) { @@ -603,7 +493,7 @@ class Table_Stats * @param boolean setColor Whether to display color * @global object The current PDF document * @access public - * @see PMA_PDF + * @see PMA_Schema_PDF */ public function tableDraw($fontSize, $withDoc, $setColor = 0) { @@ -661,7 +551,7 @@ class Table_Stats * in PDF document. * * @name Relation_Stats - * @see PMA_PDF::SetDrawColor,PMA_PDF::PMA_PDF_setLineWidthScale,PMA_PDF::PMA_PDF_lineScale + * @see PMA_Schema_PDF::SetDrawColor,PMA_Schema_PDF::PMA_PDF_setLineWidthScale,PMA_Schema_PDF::PMA_PDF_lineScale */ class Relation_Stats { @@ -751,7 +641,7 @@ class Relation_Stats * @param integer i The id of the link to draw * @global object The current PDF document * @access public - * @see PMA_PDF + * @see PMA_Schema_PDF */ public function relationDraw($changeColor, $i) { @@ -831,7 +721,7 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema * @global string The current db name * @global array The relations settings * @access private - * @see PMA_PDF + * @see PMA_Schema_PDF */ function __construct() { @@ -849,18 +739,10 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema $this->setExportType($_POST['export_type']);
// Initializes a new document - $pdf = new PMA_PDF($this->orientation, 'mm', $this->paper); + $pdf = new PMA_Schema_PDF($this->orientation, 'mm', $this->paper); $pdf->SetTitle(sprintf(__('Schema of the %s database - Page %s'), $GLOBALS['db'], $this->pageNumber)); $pdf->setCMargin(0); $pdf->Open(); - $pdf->SetAuthor('phpMyAdmin ' . PMA_VERSION); - $pdf->AliasNbPages(); - $pdf->AddFont('DejaVuSans', '', 'dejavusans.php'); - $pdf->AddFont('DejaVuSans', 'B', 'dejavusansb.php'); - $pdf->AddFont('DejaVuSerif', '', 'dejavuserif.php'); - $pdf->AddFont('DejaVuSerif', 'B', 'dejavuserifb.php'); - $pdf->SetFont($this->_ff, '', 14); - $pdf->setFooterFont(array($this->_ff, '', 14)); $pdf->SetAutoPageBreak('auto'); $alltables = $this->getAllTables($db,$this->pageNumber);
@@ -978,9 +860,9 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema /** * Draws the grid * - * @global object the current PMA_PDF instance + * @global object the current PMA_Schema_PDF instance * @access private - * @see PMA_PDF + * @see PMA_Schema_PDF */ private function _strokeGrid() { @@ -1057,7 +939,7 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema * @global integer The current page number (from the * $cfg['Servers'][$i]['table_coords'] table) * @access private - * @see PMA_PDF + * @see PMA_Schema_PDF */ private function _showOutput($pageNumber) {
hooks/post-receive