2011-02-10 6 views
0

ЗАКАНЧИВАТЬ исходный код здесь:TCPDF - странный вопрос с колонтитулами

http://www.savvissl.com/demo1/showcode.php

ЗАКАНЧИВАТЬ сценарий здесь

http://www.savvissl.com/demo1/testPDF.php

Вот вопрос ... в колонтитуле печатает отлично на каждой странице, кроме последней страницы. На последней странице никогда нет нижнего колонтитула. Если в документе есть только одна страница, нижний колонтитул не будет печатать вообще.

+1

Не могли бы вы высказать свой код? – jpwco

+0

Он сделал ... это в первой ссылке. –

ответ

2

OK Я не мог понять это, но я смог скопировать пример сотрудников, который сработал. Если кто-то хочет, чтобы исходный код здесь:

<?php 

require_once('tcpdf/config/lang/eng.php'); 
require_once('tcpdf/tcpdf.php'); 


define('PDF_FOOTER_TEXT','800 Vinial St. Pittsburgh, PA 15212 | phone: 412.321.7006 | fax: 412.321.7005 | www.savvior.com'); 
$PDF_LINE_COLOR=array(255,255,0); 
define('PDF_FOOTER_TEXT_COLOR',170); 


class MYPDF extends TCPDF 
{ 
    //Page header 
    public function Header() 
    { 
     global $PDF_LINE_COLOR; 
     $image_file = K_PATH_IMAGES.'image.jpg'; 
     $this->Image($image_file, 160, 0, 30, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); 
     $this->SetFont('helvetica', 'B', 20); 
     $this->Cell(0, 15, '', 0, false, 'C', 0, '', 0, false, 'M', 'M'); 
     $this->line(10,27,200,27,array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'solid' => 4, 'color' => $PDF_LINE_COLOR)); 
    } 
    public function Footer() 
    { 
     global $PDF_LINE_COLOR; 
     $cur_y = $this->GetY(); 
     $ormargins = $this->getOriginalMargins(); 
     $this->SetTextColor(PDF_FOOTER_TEXT_COLOR, PDF_FOOTER_TEXT_COLOR, PDF_FOOTER_TEXT_COLOR); 
     $this->SetY($cur_y); 
     $this->line(10,400,200,400,array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'solid' => 4, 'color' => $PDF_LINE_COLOR)); 
     $this->Cell(0,11,"Page ". $this->getAliasNumPage().'/'.$this->getAliasNbPages(),'T',0,'L'); 
     $this->Cell(0,11,PDF_FOOTER_TEXT,'T',0,'R'); 
    } 

} 

ob_start(); 
    ?><h1>Content Is Needed For This Page...</h1> 
    ... 
    <? 

    $html=ob_get_clean(); 

function makePDFFile($fileName,$html) 
{ 
    $pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 
    // set document information 
    $pdf->SetCreator(PDF_CREATOR); 
    $pdf->SetAuthor('Savvior Project Manager'); 
    $pdf->SetTitle('Auto Generated PDF'); 
    $pdf->SetSubject('Auto Generated PDF'); 
    $pdf->SetKeywords('TCPDF'); 
    // set default header data 
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING); 
    // set header and footer fonts 
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); 
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); 
    // set default monospaced font 
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); 
    //set margins 
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP+5, PDF_MARGIN_RIGHT); 
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 
    //set auto page breaks 
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 
    //set image scale factor 
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
    //set some language-dependent strings 
    $pdf->setLanguageArray($l); 
    // set font 
    $pdf->SetFont('helvetica', '', 12); 
    // add a page 
    $pdf->AddPage(); 
    $pdf->writeHTML($html, true, false, true, false, ''); 
    $doc=$pdf->Output(dirname(__FILE__)."/cache/{$fileName}", 'F'); 
    return $fileName; 
} 

$file=makePDFFile('poo-poo-platter.pdf',$html); 

header("location: cache/{$file}"); 
?> 

Сравнивая этот новый код в мой старый не показывает никакого понимания, почему это работает ... на самом деле пример в примерах TCPDF папка имеет те же проблемы, однако если вы запускаете его со своего веб-сайта, нижний колонтитул отображается правильно. Хорошо в любом случае надеюсь, что это поможет кому-то

0

Я ничего не знаю о TCPDF, чтобы сохранить то, что я только что узнал going through their docs.

Похоже, что Footer() предназначен только для вас, когда вы прямо звоните AddPage(), после чего он добавляется на ПРЕДЫДУЩУЮ СТРАНИЦУ. В остальное время, я считаю, вы должны назвать это самим.

Существует также все это StartPage()/EndPage() вещь, которая звучит как альтернатива AddPage().

Возможно, вы захотите: «начать страницу, заголовок, нарисовать текст, нижний колонтитул, конечную страницу». Похоже, Write() звонит AddPage() для вас, поэтому присутствуют верхние и нижние колонтитулы на последней странице.

Практический результат: просто позвоните Footer() после того, как вы позвоните Write() в этом примере. Примеры в реальном мире почти наверняка будут немного сложнее.

+0

спасибо, человек, никогда не понимал это, но обошел его, начав ... см. Ниже – ladieu

Смежные вопросы