⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdf.class.inc

📁 groupoffice
💻 INC
字号:
<?php/***  Copyright Lorenz Softwareentwicklung & Systemintegration 2004*  Author: Georg Lorenz <georg@lonux.de>*  Version: 0.99 Release date: 11 Juni 2004**  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 file holds the pdf class containing methods and properties* for generating pdf files from calendars and views** @package  calendar pdf class* @author   Georg Lorenz <georg@lonux.de>* @since    Group-Office 2.06*/define('FPDF_FONTPATH', $GO_CONFIG->class_path.'fpdf/font/');require_once($GO_CONFIG->class_path.'fpdf/xfpdf.class.inc');class pdf extends XFPDF{  var $cell;    function pdf($orientation='L',$unit='mm',$format='A4')  {	$this->FPDF($orientation,$unit,$format);	$this->cell = array();  }  /**  * Prints the table header row.  *  * @param  array $captions		Contains an array with table header titles.  * @param  array $bg_colors	Background colors for the table header line.  * @access public  * @return void  */  function print_table_header($captions, $bg_colors)  {	//set the default background color	$this->_set_bg_color("#FFF7EF");			$border['weekday'] = 'LTR';	$border['date'] = 'LBR';	$border['holiday'] = 'LBR';		$is_holiday = false;	foreach($captions['holiday'] as $value)	{	  if($value)	  {	    $border['date'] = 'LR';		$is_holiday = true;	  }	}		foreach($captions as $type => $caption)	{	  if($type == 'holiday' && !$is_holiday)	  {	    break;	  }	  	  $this->_set_table_header_cell(11, $border[$type]);	  $this->_print_cell("");	  $this->_set_table_header_cell(38, $border[$type]);	  	  for($day=0;$day<count($caption);$day++)	  {		$this->_set_bg_color($bg_colors[$day]);		$this->_print_cell($caption[$day]);	  }	  $this->Ln();	}  }  /**  * Prints the table body row.  *  * @param  array $events		Contains an array with calendar events' elements relevant for printing.  * @param  int $events_count	Count of events for a day containing the most of them for   * 							determination of line count to be printed in a cell.  * @param  string $time_row	Contains either the text of time value (e.g. 10:00) to be  * 							printed into the first table column or it is simply empty (table header row).  * @access public  * @return void  */  function print_body_row($events, $events_count, $time_row="")  {	$event_rows = ($events_count > 0) ? $events_count : 1;		for($event_row=0;$event_row<$event_rows;$event_row++)	{	  $border = 'LR';	  if($event_row == 0)	  {	    if($event_row == $event_rows-1)		{	      $border = $border.'TB';		}else		{		  $border = $border.'T';		}	  }else	  {	    if($event_row == $event_rows-1)		{		  $border = $border.'B';		}	  }	  //set the properties for the first column of the table (time column)  	  $this->_set_table_header_cell(11, $border);	  $this->_set_bg_color("#F7F3F7");      $time_row = ($time_row != "" && $event_row == 0) ? $time_row.":00" : "";	  $this->_print_cell($time_row);	        $this->_set_table_body_cell(38, $border);	  foreach($events as $event)	  {		$color = isset($event['color'][$event_row]) ? $event['color'][$event_row] : $event['color'][0];	    $this->_set_bg_color($color);		$text = !empty($event['name'][$event_row]) ? $event['name'][$event_row] : "";        $this->_print_cell($text);	  }	  $this->Ln();	}  }    /**  * Sends the opened pdf file directly to the default printer.  *  * @param  bool $dialog	If set to false the pdf file will be printed immediately, else popups the printer dialog.  * @access public  * @return void  */  function auto_print($dialog=false)  {	$parm = $dialog ? 'true' : 'false';	$script = "print(".$parm.");";	$this->IncludeJS($script);  }    /**  * Prints the page header row. This function mustn't be called manually.  * It is called automatically on page brakes.  *  * @param  void  * @access private  * @return void  */  function Header()  {    global $week_title, $title;    $this->_set_header_cell();	//Background color	$this->SetFillColor(255,255,255);    //Title    $this->_print_cell($title);	//Background color	$this->SetFillColor(102,102,102);	//Foreground color	$this->SetTextColor(255,255,255);	//Week_Title    $this->_print_cell($week_title);  }    /**  * Sets the cell to be printed  *  * @param  string $text	Text to be printed  * @access private  * @return void  */  function _print_cell($text)  {    $this->Cell($this->cell['width'],$this->cell['height'],utf8_decode($text),$this->cell['border'],$this->cell['ln'],$this->cell['align'],$this->cell['fill']);  }  /**  * Sets the page header cell properties.  *  * @param  float $width  	Cell width. If 0, the cell extends up to the right margin.  * @param  mixed $border	Indicates if borders must be drawn around the cell.  * 						The value can be either a number or a string   * 						containing some or all of the following characters:  * 						0: no border, 1: frame, L:left, T:top, B:bottom, R:right  * @access private  * @return void  */  function _set_header_cell()  {    $this->SetFont('Arial','B',10);	    $this->cell['width'] = 0;	$this->cell['height'] = 5;	$this->cell['border'] = 0;	$this->cell['ln'] = 1;	$this->cell['align'] = 'L';	$this->cell['fill'] = 1;  }    /**  * Sets the table header cell properties.  *  * @param  float $width  	Cell width. If 0, the cell extends up to the right margin.  * @param  mixed $border	Indicates if borders must be drawn around the cell.  * 						The value can be either a number or a string   * 						containing some or all of the following characters:  * 						0: no border, 1: frame, L:left, T:top, B:bottom, R:right  * @access private  * @return void  */  function _set_table_header_cell($width, $border)  {    $this->SetFont('Arial','',7);	$this->SetTextColor(0,0,0);		$this->cell['width'] = $width;	$this->cell['height'] = 4;	$this->cell['border'] = $border;	$this->cell['ln'] = 0;	$this->cell['align'] = 'C';	$this->cell['fill'] = 1;  }  /**  * Sets the table body cell properties.  *  * @param  float $width  	Cell width. If 0, the cell extends up to the right margin.  * @param  mixed $border	Indicates if borders must be drawn around the cell.  * 						The value can be either a number or a string   * 						containing some or all of the following characters:  * 						0: no border, 1: frame, L:left, T:top, B:bottom, R:right  * @access private  * @return void  */  function _set_table_body_cell($width, $border)  {    $this->SetFont('Arial','',7);	$this->SetTextColor(0,0,0);		$this->cell['width'] = $width;	$this->cell['height'] = 4;	$this->cell['border'] = $border;	$this->cell['ln'] = 0;	$this->cell['align'] = 'L';	$this->cell['fill'] = 1;  }  /**  * Sets the background color  *  * @param  string $bg_color HTML color code: e.g. #FFFFFF  * @access private  * @return void  */  function _set_bg_color($bg_color="#FFFFFF")  {	$bg_color = hex2dec($bg_color);	$this->SetFillColor($bg_color['R'],$bg_color['G'],$bg_color['B']);  }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -