2011-02-10 17 views
0

との奇妙な問題がここにソースコードをチェックアウト:TCPDF - フッター

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

ここでチェックアウトスクリプトを

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

をここでは問題が...細かいフッタプリントです最後のページを除くすべてのページに表示されます。最後のページにフッターはありません。ドキュメントにページが1つしかない場合、フッターはまったく印刷されません。

+1

コードを投稿できますか? – jpwco

+0

彼はやった...それは最初のリンクにあります。 –

答えて

2

OK私はそれを理解できませんでしたが、私は働いていた同僚の例をコピーすることができました。誰もがソースコードを望んでいる場合はここにある:

この作業の理由に何の洞察を明らかにしていない私の古いに...実際にはTCPDFのexamplesフォルダ内の例では、同じ問題を示し、しかし場合は、この新しいコードを比較
<?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}"); 
?> 

フッターが正しく表示されているWebサイトから実行します。まあとにかくこれは誰かを助けることを願って

0

私はちょうど私が学んだことを保存したTCPDFについて何も知らないgoing through their docs

具体的にAddPage()を呼び出すとFooter()が呼び出されるのは、前のページに追加されているようです。残りの時間はあなたが自分でそれを呼び出さなければならないと信じています。

AddPage()の代わりにこのStartPage()/EndPage()個のものがあります。

「開始ページ、ヘッダー、テキスト、フッター、終了ページを描画」することができます。 Write()はあなたのためにAddPage()を呼び出しているように見えます。そのため、最終ページのすべてのヘッダーとフッターが表示されます。

結論:この例ではWrite()に電話した後、Footer()に電話するだけです。実際の例は、ほぼ確実にもう少し複雑になります。

+0

感謝の男、決してそれを把握したことはありませんが、始めることによってそれを回った...下を参照してください – ladieu