Strict Standards: Declaration of action_plugin_blog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/lib/plugins/blog/action.php on line 13

Strict Standards: Declaration of action_plugin_indexmenu::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/lib/plugins/indexmenu/action.php on line 13

Strict Standards: Declaration of action_plugin_importoldchangelog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/lib/plugins/importoldchangelog/action.php on line 8

Strict Standards: Declaration of action_plugin_importoldindex::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/lib/plugins/importoldindex/action.php on line 8

Strict Standards: Declaration of action_plugin_include::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/lib/plugins/include/action.php on line 19

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parserutils.php on line 208

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parserutils.php on line 211

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parserutils.php on line 421

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parserutils.php on line 594

Strict Standards: Declaration of cache_instructions::retrieveCache() should be compatible with cache::retrieveCache($clean = true) in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/cache.php on line 291

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/auth.php on line 154

Strict Standards: Only variables should be passed by reference in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/doku.php on line 73
zendでpdf出力 [開発チーム]

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

Deprecated: Function split() is deprecated in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/inc/parser/lexer.php on line 517

▼はじめに

参考サイト

▼導入方法

webサーバーの基本が整った状態で行います

◆サーバーにzend一式をインストール

apt-get install php5-dev
apt-get install apache2-dev

pear channel-update pecl.php.net
pecl install apc

※lennyの場合、apache2-devapache2-threaded-devに変更

fontの準備

http://ossipedia.ipa.go.jp/ipafont/からzipファイルを適当な場所でDLし、展開します
展開したら、展開ディレクトリ内へ移動し、ファイルの名前を確認

# cd IPAfont*****
# ls
IPA_Font_License_Agreement_v1.0.txt  Readme00301.txt  ipag.otf  ipagp.otf  ipam.otf  ipamp.otf

*.oftなどの拡張子だった場合、「mv」コマンドで「*.ttf」に変更します

変更が完了したら、fontを移動させます
今回は、わかりやすい場所へ移動するため、「/usr/share/fonts/truetype/」に新規ディレクトリ「japanese」を作成し、移動させました

zendframeworkの準備

今回、ドキュメントルートが「/var/www」なので、「/var/www/ZendFramework-1.7.4」の配置で行います
PDFを作成する際は、「/var/www/ZendFramework-1.7.4/library/Zend/Pdf」を使用します
※今回はPdf以下のファイルすべてのrequireを、絶対pathで指定しました(これしか使わなかったため)

ファイルの作成

ドキュメントルート直下に以下のファイルを作成します

<?php
/**
 * Zend_Pdf
 * ページサイズを定義済み定数で指定
 */
 
/** Zend_Pdfの読み込み */
require_once '/var/www/ZendFramework-1.7.4/library/Zend/Pdf.php';
 
 
/** 生成 */
// Zend_Pdfのインスタンス生成
$pdf = new Zend_Pdf();
 
// ページを作成(サイズ)
// A4縦
//$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
// A4横
//$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4_LANDSCAPE);
// USレター縦
//$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_LETTER);
// USレター横
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE);
 
 
/** 設定 */
// フォントの指定(標準フォント:Helvetica)
//$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
// 日本語表示フォント
$font = Zend_Pdf_Font::fontWithPath('/usr/share/fonts/truetype/japanese/ipagp.ttf');
 
 
// フォントを36ptで適用
$pdf->pages[0]->setFont($font, 36);
 
// 文字列定義(日本語用)
//$text = 'Hello World!';
$text = 'hello くま!';
 
// 100pt, 400ptの位置にUTF-8で描画
$pdf->pages[0]->drawText($text, 100, 400, 'UTF-8');
 
 
/** 出力 */
// HTTPヘッダ:PDFを出力
header('Content-type: application/pdf');
 
// HTTPヘッダ:ファイル名をhello_world.pdfに
header('Content-Disposition: attachment; filename="hello_world.pdf"');
 
// ドキュメントを出力
echo $pdf->render();

図形・線・画像

<?php
/**
 * Zend_Pdf
 * ページサイズを定義済み定数で指定
 */
 
/** Zend_Pdfの読み込み */
require_once '/var/www/ZendFramework-1.7.4/library/Zend/Pdf.php';
 
 
/** 生成 */
// Zend_Pdfのインスタンス生成
$pdf = new Zend_Pdf();
 
// A4サイズのページを作成
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
 
// 色の指定
$color1 = new Zend_Pdf_Color_Html('#3366FF');
$color2 = new Zend_Pdf_Color_Html('silver');
$color3 = new Zend_Pdf_Color_Html('forestgreen');
$color4 = new Zend_Pdf_Color_Html('#336699');
 
 
$p1 = $pdf->pages[0];
 
 
// フォントの指定(標準フォント:Helvetica)
//$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
$font = Zend_Pdf_Font::fontWithPath('/usr/share/fonts/truetype/japanese/ipagp.ttf');
 
 
// フォントを36ptで適用
$p1->setFont($font, 18);
$p1->setFillColor($color4);
 
 
// 文字列定義
$text = 'くまは「たまには熊っぽく寝てみよう」と考えた。';
$pdf->pages[0]->drawText($text, 100, 400, 'UTF-8');
 
 
// 線の定義
$p1->setLineColor($color1);
$p1->setLineWidth(1);
//$p1->setLineDashingPattern(array(5, 5, 2, 2));                //点線
$p1->setLineDashingPattern(array(1, 1));                        //若干点線
//$p1->setLineDashingPattern(Zend_Pdf_Page::LINE_DASHING_SOLID);        //線
$p1->drawLine(300, 700, 500, 750);
 
// 多角形の定義
$p1->setFillColor($color3);
$p1->drawPolygon(
        array(100, 300, 150, 200, 250),
        array(300, 300, 150, 350, 150),
        Zend_Pdf_Page::SHAPE_DRAW_FILL, Zend_Pdf_Page::FILL_METHOD_EVEN_ODD
        );
 
// 多角形の定義(塗りつぶし)
$p1->setFillColor($color2);
$p1->drawPolygon(
        array(100, 300, 150, 200, 250),
        array(300, 300, 150, 350, 150),
        Zend_Pdf_Page::SHAPE_DRAW_FILL, Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING
        );
 
// 画像の挿入
$img = Zend_Pdf_Image::imageWithPath('moka.jpg');
$p1->drawImage($img, 100, 600, 250, 800);
 
/** 出力 */
// HTTPヘッダ:PDFを出力
header('Content-type: application/pdf');
 
// HTTPヘッダ:ファイル名をhello_world.pdfに
header('Content-Disposition: attachment; filename="hello_world.pdf"');
 
// ドキュメントを出力
echo $pdf->render();

文字色の変更

<?php
/**
 * Zend_Pdf
 * ページサイズを定義済み定数で指定
 */
 
/** Zend_Pdfの読み込み */
require_once '/var/www/ZendFramework-1.7.4/library/Zend/Pdf.php';
 
 
/** 生成 */
// Zend_Pdfのインスタンス生成
$pdf = new Zend_Pdf();
 
// A4サイズのページを作成
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
 
 
/** 設定 */
// カラーを生成
$colorGrayScale = new Zend_Pdf_Color_GrayScale(0.5);
$colorRgb       = new Zend_Pdf_Color_Rgb(0.9, 0.2, 0.7);
$colorCmyk      = new Zend_Pdf_Color_Cmyk(1.0, 0.5, 0.0, 0.2);
$colorHtml      = new Zend_Pdf_Color_Html('forestgreen');
$colorHtml2     = new Zend_Pdf_Color_Html('#daa520');
 
// フォントの指定(標準フォント:Helvetica)
//$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
$font = Zend_Pdf_Font::fontWithPath('/usr/share/fonts/truetype/japanese/ipagp.ttf');
 
 
// フォントを36ptで適用
$pdf->pages[0]->setFont($font, 36);
 
// 文字列定義
$text = 'Hello World!';
 
// カラーを適用
$pdf->pages[0]->setFillColor($colorGrayScale);
// 50pt, 750ptの位置にUTF-8で描画
$pdf->pages[0]->drawText($text, 50, 750, 'UTF-8');
 
// カラーを適用
$pdf->pages[0]->setFillColor($colorRgb);
// 50pt, 700ptの位置にUTF-8で描画
$pdf->pages[0]->drawText($text, 50, 700, 'UTF-8');
 
$pdf->pages[0]->setFillColor($colorCmyk);
$pdf->pages[0]->drawText($text, 50, 650, 'UTF-8');
 
$pdf->pages[0]->setFillColor($colorHtml);
$pdf->pages[0]->drawText($text, 50, 600, 'UTF-8');
 
$pdf->pages[0]->setFillColor($colorHtml2);
$pdf->pages[0]->drawText($text, 50, 550, 'UTF-8');
 
 
/** 出力 */
// HTTPヘッダ:PDFを出力
header('Content-type: application/pdf');
 
// HTTPヘッダ:ファイル名をhello_world.pdfに
header('Content-Disposition: attachment; filename="hello_world.pdf"');
 
// ドキュメントを出力
echo $pdf->render();

▼ブラウザからアクセス

アクセス時、日本語の場合だと多少時間がかかりますが、きちんと保存されます

▼Iceに入れてみた

<?php
 
class Ice_Pdf extends Zend_Pdf{
 
  protected static $_G = null;
 
  public final function __construct(){
    parent::__construct();
  }
 
  public static final function G() {
    if (null === self :: $_G) {
      self :: $_G = new self();
    }
    return self :: $_G;
  }
 
  public final function output(){
    header('Content-type: application/pdf');
    header('Content-Disposition: attachment; filename="'.date("YmdHis",DF_TIME).'.pdf"');
    die(self::G()->render());
  }
 
  public final function addPage($num=null){
    if($num === null){
      $num = count(self::G()->pages);
    }
    self::G()->pages[$num] = self::G()->newPage(Zend_Pdf_Page::SIZE_A4);
    return self::G();
  }
 
  public function pageLine($num){
    self::G()->pages[$num]->setLineColor(new Zend_Pdf_Color_Html('#3366FF'));
    self::G()->pages[$num]->setLineWidth(1);
    //$p1->setLineDashingPattern(array(5, 5, 2, 2));                //点線
    self::G()->pages[$num]->setLineDashingPattern(array(1, 1));                        //若干点線
    //$p1->setLineDashingPattern(Zend_Pdf_Page::LINE_DASHING_SOLID);        //線
    self::G()->pages[$num]->drawLine(300, 700, 500, 750);
    return self::G();
  }
}
zendでpdf出力.txt · 最終更新: 2010/07/27 15:47 (外部編集)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0

Strict Standards: Only variables should be passed by reference in /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/dokuwiki/doku.php on line 81