2011-06-20 9 views
2

Zend_Pdfで自分のpdfドキュメントのテンプレートを作成する際に問題があります。私はhttp://framework.zend.com/manual/en/zend.pdf.pages.htmlで提供されているガイドに従ってきましたが、フッタのテキストやロゴが最初のページを除くどのページでも見えないので、動作しないようです。Zend_Pdfとテンプレート

これは私のコードのサンプルは次のとおりです。(注意; MTP定数はポイントへミリメートルからわずか再計算である)

//Create pdf object 
$pdf = new Zend_Pdf(); 

//Create the first page 
$page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); 

/*HEADER*/ 
//insert logo at the top 
$logo = Zend_Pdf_Image::imageWithPath(APPLICATION_PATH . '/../document_root/images/logotype.png'); 
$page->drawImage($logo, 22*MTP,274*MTP, 62*MTP, 289*MTP); 

/*FOOTER*/ 
$footerStyle->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 10); 
$page->setStyle($footerStyle); 
$page->drawText('Footer text', 33*MTP, 20*MTP, 'ISO-8859-1'); 

//save the page to pdf->pages 
$pdf->pages[0] = $page; 

//save the page as a template 
$template = $pdf->pages[0]; 

//create the next page from template 
$page1 = new Zend_Pdf_Page($template); 

//save the next page to pdf->pages 
$pdf->pages[] = $page1; 

持って、私は完全に誤解どのようZend_Pdfは、この「テンプレート機能」の作品? Zend_Pdfには、FPDFのような外部のpdfジェネレータのいくつかにコンパイルされたかなりの機能がありませんが、それでもすべてのページの基本的なヘッダー/フッターを作成する方法がなければなりません。

答えて

0

clone代わりに新しいページに引数としてページを渡すようにしてください。

$page1 = clone $template; 

または単に

$pdf->pages[] = clone $pdf->pages[0]; 
+0

残念ながら、それはどちらか動作しません。 "メッセージ: 'clone'キーワードを使用したZend_Pdf_Pageオブジェクトのクローン作成はサポートされていません。 '新しいZend_Pdf_Page($ srcPage)'構文を使用してください。 私は新しい "newPage"機能を実装した回避策を実行しました。この関数を呼び出すたびにページが作成され、ヘッダーとフッターを生成するために2つの新しい関数(generatePdfHeaderとgeneratePdfFooter)が呼び出されます。結果のページが返され、通常のZend_Pdf関数を引き続き使用できます。 – Lobo

+0

質問は - **どのZFのバージョンを使用していますか?**。私はちょうど100%確実であるために1.11.6でそれをテストしました。このバージョンのページは何の問題もなくクローンされています。 –

+0

私は1.10を使用しているため、問題がある可能性があります。残念ながら私は今すぐpdf関数をアップグレードしてやり直す時間がありませんが、ベータ版の後にバグフィックスや再モデリング、合理化のための時間があります。その段階では、私は間違いなくアップグレードして再度テストします。お手伝いありがとう – Lobo

関連する問題