AddFont('ArialMT','','arial.php'); $this->AddFont('Arial-BoldMT','B','arial_bold.php'); $this->AddFont('ArialMT','I','arial.php'); $this->AddFont('ComicSansMS','','comic.php'); $this->AddFont('ComicSansMS','B','comic.php'); $this->AddFont('ComicSansMS','I','comic.php'); $this->AddFont('Georgia','','georgia.php'); $this->AddFont('Georgia','B','georgia.php'); $this->AddFont('Georgia','I','georgia.php'); $this->AddFont('Tahoma','','tahoma.php'); $this->AddFont('Tahoma-Bold','B','tahoma_bold.php'); $this->AddFont('Tahoma','I','tahoma.php'); $this->AddFont('TimesNewRomanPSMT','','times.php'); $this->AddFont('TimesNewRomanPSMT','B','times.php'); $this->AddFont('TimesNewRomanPSMT','I','times.php'); $this->AddFont('Verdana','','verdana.php'); $this->AddFont('Verdana','B','verdana.php'); $this->AddFont('Verdana','I','verdana.php'); $this->SetFont('TimesNewRomanPSMT','',14); } function Header(){ // $logoXPos, $logoYPos, $logoWidth $this->Image('inc/fpdf/image/logo_1.png',10,6,10); //$this->SetFont('TimesNewRomanPSMT','',15); /* Cell(), который, помимо всего прочего, позволяет легко центрировать текст. Cell() принимает следующие аргументы (все являются опциональными): 1. Высота и 2. ширина ячейки. По умолчанию ширина растягивается до правого поля, а высота устанавливается в 0. 3. Строка текста для вывода. По умолчанию ''. 4. Указание для отображения рамки вокруг ячейки. Это может быть либо число (0=нет рамки, 1=рисуем рамку), или строка с одним или несколькими параметрами из следующего списка: 'L' (слева), 'T' (сверху), 'R' (справа), и 'B' (внизу). Значение по умолчанию: 0. 5. Куда помещать текущую позицию после вывода ячейки. Значение может быть 0 (справа от ячейки), 1 (начало следующей строки), или 2 (ниже). Значение по умолчанию: 0. 6. Выравнивание текста. Возможные значения: 'L' (выравнивание по левому краю), 'C' (выравнивание по центру), или 'R' (выравнивание по правому краю). Значение по умолчанию: 'L'. 7. Нужно ли заливать фон ячейки цветом. true = заливаем цветом, false = оставляем фон прозрачным. Значение по умолчанию: false. URL ссылки. Если задан, то ячейка с текстом становится рабочей ссылкой на другой ресурс. */ $this->Cell(80); $this->SetFont('TimesNewRomanPSMT','',10); $str = iconv('UTF-8', 'windows-1251', 'Федеральное государственное бюджетное образовательное учреждение высшего образования'); $this->Cell(30,0,$str,0,1,'C'); $this->SetFont('TimesNewRomanPSMT','',14); $this->Ln(8); $this->Cell(80); $str = iconv('UTF-8', 'windows-1251', 'Майкопский государственный технологический университет'); $this->Cell(30,0,$str,0,1,'C'); $this->Ln(20); } function Footer(){// Page footer // Position at 1.5 cm from bottom $this->SetY(-15); $this->SetFont('TimesNewRomanPSMT','',8); $str = iconv('UTF-8', 'windows-1251', 'Страница'); $this->Cell(0,10,$str.' '.$this->PageNo().'/{nb}',0,0,'C'); } function print_table($data,$Ctable){ $this->SetFont('TimesNewRomanPSMT','',10); $this->SetDrawColor( $Ctable['BorderColour'][0], $Ctable['BorderColour'][1], $Ctable['BorderColour'][2] ); //$this->Ln( 15 ); // Ячейка "PRODUCT" $this->SetTextColor( $Ctable['HeaderTopProductTextColour'][0], $Ctable['HeaderTopProductTextColour'][1], $Ctable['HeaderTopProductTextColour'][2] ); $this->SetFillColor( $Ctable['HeaderTopProductFillColour'][0], $Ctable['HeaderTopProductFillColour'][1], $Ctable['HeaderTopProductFillColour'][2] ); //$this->Cell( 46, 12, " PRODUCT", 1, 0, 'L', true ); $heightrow=8; foreach ( $data[0] as $k => $v ) { $this->Cell( 36, $heightrow, $v, 1, 0, 'C', true ); } $this->Ln( $heightrow ); // Создаем строки с данными $fill = false; $row = 0; //$this->SetTextColor( $Ctable['HeaderLeftTextColour'][0], $Ctable['HeaderLeftTextColour'][1], $Ctable['HeaderLeftTextColour'][2] ); $this->SetFillColor( $Ctable['HeaderLeftFillColour'][0], $Ctable['HeaderLeftFillColour'][1], $Ctable['HeaderLeftFillColour'][2] ); foreach ( $data as $k => $v )if($k) { // Создаем левую ячейку с заголовком строки foreach ( $v as $k1 => $v1 ){ $sw = $this->GetStringWidth($v1); $this->Cell( ($sw*4.3), $heightrow,$v1, 1, 0, 'L', $fill ); } $this->Ln( $heightrow ); } } } // Instanciation of inherited class $pdf = new PDF(); $pdf->SetFonts(); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->print_table($data,$Ctable); $str = iconv('UTF-8','windows-1251', 'Номер: '); for($i=1;$i<=40;$i++) $pdf->Cell(0,10,$str.$i,0,1); $pdf->Output(); exit(); /*{// Начало конфигурации $textColour = array( 0, 0, 0 ); $headerColour = array( 100, 100, 100 ); $tableHeaderTopTextColour = array( 255, 255, 255 ); $tableHeaderTopFillColour = array( 125, 152, 179 ); $tableHeaderTopProductTextColour = array( 0, 0, 0 ); $tableHeaderTopProductFillColour = array( 143, 173, 204 ); $tableHeaderLeftTextColour = array( 99, 42, 57 ); $tableHeaderLeftFillColour = array( 184, 207, 229 ); $tableBorderColour = array( 50, 50, 50 ); $tableRowFillColour = array( 213, 170, 170 ); $reportName = "ОТЧЕТ 1 УМУ"; $reportNameYPos = 160; $logoFile = "inc/fpdf/image/logo_1.png"; $logoXPos = 50; $logoYPos = 108; $logoWidth = 110; $columnLabels = array( "Q1", "Q2", "Q3", "Q4" ); $rowLabels = array( "SupaWidget", "WonderWidget", "MegaWidget", "HyperWidget" ); $chartXPos = 20; $chartYPos = 250; $chartWidth = 160; $chartHeight = 80; $chartXLabel = "Product"; $chartYLabel = "2009 Sales"; $chartYStep = 20000; $chartColours = array( array( 255, 100, 100 ), array( 100, 255, 100 ), array( 100, 100, 255 ), array( 255, 255, 100 ), ); $data = array( array( 9940, 10100, 9490, 11730 ), array( 19310, 21140, 20560, 22590 ), array( 25110, 26260, 25210, 28370 ), array( 27650, 24550, 30040, 31980 ), ); // Конец конфигурации } $pdf = new FPDF( 'P', 'mm', 'A4' );//L альбомная $pdf->SetTextColor( $textColour[0], $textColour[1], $textColour[2] ); $pdf->AddPage(); $pdf->SetFont( 'Arial', 'B', 24 ); if(file_exists($logoFile)){ $pdf->Image( $logoFile, $logoXPos, $logoYPos, $logoWidth ); }else{ $pdf->Ln( $reportNameYPos-60 ); $pdf->Cell( 0, 15, 'no file: '.$logoFile, 0, 0, 'C' ); } $pdf->Ln( $reportNameYPos );//Ln(), добавляет перевод строки на указанное расстояние //'L' выравнивание по левому краю)'C'центру,'R' по правому краю $pdf->Cell( 0, 15, $reportName, 0, 0, 'C' ); //Создаем колонтитул страницы и вводный текст $pdf->AddPage(); $pdf->SetTextColor( $headerColour[0], $headerColour[1], $headerColour[2] ); $pdf->SetFont( 'Arial', '', 17 ); $pdf->Cell( 0, 15, $reportName, 0, 0, 'C' ); $pdf->SetTextColor( $textColour[0], $textColour[1], $textColour[2] ); $pdf->SetFont( 'Arial', '', 20 ); $pdf->Write( 19, "Текст 1 TEXT 1" ); $pdf->Ln( 16 ); $pdf->SetFont( 'Arial', '', 12 ); $pdf->Write( 6, "Необходимый текст Despite the economic downturn, WidgetCo had a strong year. Sales of the HyperWidget in particular exceeded expectations. The fourth quarter was generally the best performing; this was most likely due to our increased ad spend in Q3." ); $pdf->Ln( 12 ); $pdf->Write( 6, "Еще текст 2010 is expected to see increased sales growth as we expand into other countries." ); $pdf->SetDrawColor( $tableBorderColour[0], $tableBorderColour[1], $tableBorderColour[2] ); $pdf->Ln( 15 ); // Создаем строку заголовков таблицы $pdf->SetFont( 'Arial', 'B', 15 ); // Ячейка "PRODUCT" $pdf->SetTextColor( $tableHeaderTopProductTextColour[0], $tableHeaderTopProductTextColour[1], $tableHeaderTopProductText Colour[2] ); $pdf->SetFillColor( $tableHeaderTopProductFillColour[0], $tableHeaderTopProductFillColour[1], $tableHeaderTopProductFill Colour[2] ); $pdf->Cell( 46, 12, " PRODUCT", 1, 0, 'L', true ); // Остальные ячейки заголовков $pdf->SetTextColor( $tableHeaderTopTextColour[0], $tableHeaderTopTextColour[1], $tableHeaderTopTextColour[2] ); $pdf->SetFillColor( $tableHeaderTopFillColour[0], $tableHeaderTopFillColour[1], $tableHeaderTopFillColour[2] ); for ( $i=0; $iCell( 36, 12, $columnLabels[$i], 1, 0, 'C', true ); } $pdf->Ln( 12 ); // Создаем строки с данными $fill = false; $row = 0; foreach ( $data as $dataRow ) { // Создаем левую ячейку с заголовком строки $pdf->SetFont( 'Arial', 'B', 15 ); $pdf->SetTextColor( $tableHeaderLeftTextColour[0], $tableHeaderLeftTextColour[1], $tableHeaderLeftTextColour[2] ); $pdf->SetFillColor( $tableHeaderLeftFillColour[0], $tableHeaderLeftFillColour[1], $tableHeaderLeftFillColour[2] ); $pdf->Cell( 46, 12, " " . $rowLabels[$row], 1, 0, 'L', $fill ); // Создаем ячейки с данными $pdf->SetTextColor( $textColour[0], $textColour[1], $textColour[2] ); $pdf->SetFillColor( $tableRowFillColour[0], $tableRowFillColour[1], $tableRowFillColour[2] ); $pdf->SetFont( 'Arial', '', 15 ); for ( $i=0; $iCell( 36, 12, ( '$' . number_format( $dataRow[$i] ) ), 1, 0, 'C', $fill ); } $row++; $fill = !$fill; $pdf->Ln( 12 ); } //Создаем график // Вычисляем масштаб по оси X $xScale = count($rowLabels) / ( $chartWidth - 40 ); // Вычисляем масштаб по оси Y $maxTotal = 0; foreach ( $data as $dataRow ) { $totalSales = 0; foreach ( $dataRow as $dataCell ) $totalSales += $dataCell; $maxTotal = ( $totalSales > $maxTotal ) ? $totalSales : $maxTotal; } $yScale = $maxTotal / $chartHeight; // Вычисляем ширину столбцов $barWidth = ( 1 / $xScale ) / 1.5; // Добавляем оси: $pdf->SetFont( 'Arial', '', 10 ); // Ось X $pdf->Line( $chartXPos + 30, $chartYPos, $chartXPos + $chartWidth, $chartYPos ); for ( $i=0; $i < count( $rowLabels ); $i++ ) { $pdf->SetXY( $chartXPos + 40 + $i / $xScale, $chartYPos ); $pdf->Cell( $barWidth, 10, $rowLabels[$i], 0, 0, 'C' ); } // Ось Y $pdf->Line( $chartXPos + 30, $chartYPos, $chartXPos + 30, $chartYPos - $chartHeight - 8 ); for ( $i=0; $i <= $maxTotal; $i += $chartYStep ) { $pdf->SetXY( $chartXPos + 7, $chartYPos - 5 - $i / $yScale ); $pdf->Cell( 20, 10, '$' . number_format( $i ), 0, 0, 'R' ); $pdf->Line( $chartXPos + 28, $chartYPos - $i / $yScale, $chartXPos + 30, $chartYPos - $i / $yScale ); } // Добавляем метки осей $pdf->SetFont( 'Arial', 'B', 12 ); $pdf->SetXY( $chartWidth / 2 + 20, $chartYPos + 8 ); $pdf->Cell( 30, 10, $chartXLabel, 0, 0, 'C' ); $pdf->SetXY( $chartXPos + 7, $chartYPos - $chartHeight - 12 ); $pdf->Cell( 20, 10, $chartYLabel, 0, 0, 'R' ); // Создаем столбецы $xPos = $chartXPos + 40; $bar = 0; foreach ( $data as $dataRow ) { // Вычисляем суммарное значение по строке данных для продукта $totalSales = 0; foreach ( $dataRow as $dataCell ) $totalSales += $dataCell; // Создаем столбец $colourIndex = $bar % count( $chartColours ); $pdf->SetFillColor( $chartColours[$colourIndex][0], $chartColours[$colourIndex][1], $chartColours[$colourIndex][2] ); $pdf->Rect( $xPos, $chartYPos - ( $totalSales / $yScale ), $barWidth, $totalSales / $yScale, 'DF' ); $xPos += ( 1 / $xScale ); $bar++; } //Выводим PDF //I : Выводить PDF на экран, если такая функция поддерживается браузером, иначе загружать. //D : Загружать PDF. //F : Сохранять файл в папке на сервере. //S : Возвращать данные PDF как строку. $pdf->Output( "report.pdf", "I" ); exit(); */ ?>