カテゴリー別アーカイブ: PHP

TCPDF FPDIでPDFファイル生成

ここではTCPDF、FPDIを使ったPHPでのPDFファイルの生成を解説していきます。

tcpdf

TCPDFのダウンロード
http://sourceforge.net/projects/tcpdf/files/

FPDIのダウンロード
http://www.setasign.de/products/pdf-php-solutions/fpdi/downloads/
FPDIはFPDIとFPDI_TPLの2つダウンロードしてください。
FPDI_TPLのfpdf_tpl.phpはFPDI直下に置いてください。

UTF-8で日本語フォント

TCPDF標準フォントならkozgopromediumになりますが数字がうまく表示されなかったのでIPAフォント、TTFファイルのIPA Pゴシックをダウンロードします。
http://ossipedia.ipa.go.jp/ipafont/ipafont/download.html

サンプルソース

<?php
  
    require_once('./tcpdf/tcpdf.php');
    require_once('./fpdi/fpdi.php');
  
    $pdf = new FPDI();
  
    // 余白設定
    $pdf->SetMargins(0, 0, 0);
    // セルパディング設定
    $pdf->SetCellPadding(0);
    // 自動改ページ
    $pdf->SetAutoPageBreak(false);
  
    // ヘッダ、フッダを使用しない
    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);
  
    // 1ページ目を準備
    $pdf->AddPage();
  
    // フォント設定
    $font = $pdf->addTTFfont('./tcpdf/fonts/ipagp.ttf', 'TrueTypeUnicode', '', 32);
    $pdf->SetFont($font, '', 10);
  
    // PDFファイル読み込み
    $pdf->setSourceFile('./pdf/include.pdf');
    $page = $pdf->importPage(1);
    $pdf->useTemplate($page);
  
    // Text
    $pdf->Text(10, 10, 'こんにちは世界');
  
    // 改行
    $pdf->Ln();
  
    // セル
    $pdf->Cell(70, 10, 'セル', 1, 0, 'L');
  
    $pdf->Ln();
  
    // HTML表記
    $pdf->writeHTML('<h1>html表記</h1>', true, 0, true, 0);
  
    // 画像表示
    $pdf->Image('./image/image.jpg', 10, 10);
  
    // PDF出力
    $pdf->Output('sample.pdf', 'D');

解説

$pdf->SetMargins(0, 0, 0); (9行目)
余白の設定をします。

$pdf->SetCellPadding(0); (11行目)
セルパディングを設定します。

$pdf->SetAutoPageBreak(false); (13行目)
自動改ページするかをtrue or falseで指定してください。

$pdf->setPrintHeader(false); (16、17行目)
ヘッダー、フッダーを使用するかをtrue or falseで指定してください。

$pdf->AddPage(); (20行目)
1ペーシ目を準備します。

$pdf->SetFont($font, ”, 10); (24行目)
フォントサイズを設定します。

$pdf->setSourceFile(‘./pdf/include.pdf’); (27~29行目)
テンプレートになるPDFファイルがあれば読み込んでください。

$pdf->Text(10, 10, ‘こんにちは世界’); (32行目)
x座標、y座標、表示する文字列で指定してください。

$pdf->Ln(); (35行目)
PDF内での改行ができます。

$pdf->Cell(70, 10, ‘セル’, 1, 0, ‘L’); (38行目)
セルの幅、高さ、文字列、枠線で囲むかの指定、出力後のカーソルの移動方法、テキストの整列で指定してください。

$pdf->writeHTML(); (43行目)
出力するHTMLテキスト、改行するかしないか、背景の塗つぶし指定、前回の高さ設定を引き継ぐかで指定してください。

$pdf->Image(‘./image/image.jpg’, 10, 10); (46行目)
画像ファイル、x座標、y座標、幅、高さで指定してください。

$pdf->Output(‘sample.pdf’, ‘D’); (49行目)
I: ブラウザに出力する(既定)、保存時のファイル名が$nameで指定した名前になる。
D: ブラウザで(強制的に)ダウンロードする。
F: ローカルファイルとして保存する。
S: PDFドキュメントの内容を文字列として出力する。

関連記事
TCPDF FPDIでPDF読み込みエラーを解消 setSourceFile
http://office-goto.info/php/tcpdf-fpdi-setsourcefile/

PHPExcelでExcel出力

ここではPHPExcelを使ってExcelファイルを出力していきます。

phpexcel

PHPExcelをダウンロード
http://phpexcel.codeplex.com/

サンプルソース

<?php

    require_once 'PHPExcel.php';
    require_once 'PHPExcel/Writer/Excel5.php';
    require_once 'PHPExcel/IOFactory.php';
   
    $ex = new PHPExcel();
    $sheet = $ex->getActiveSheet();
   
    // Excelファイル読み込み Excel5
    // $reader = PHPExcel_IOFactory::createReader('Excel5');
    // $ex = $reader->load("include.xls");
    // $sheet = $ex->getActiveSheet();
   
    // Excelファイル読み込み Excel2007
    // $reader = PHPExcel_IOFactory::createReader('Excel2007');
    // $ex = $reader->load("include.xls");
    // $sheet = $ex->getActiveSheet();
   
    // シートタイトル設定
    $sheet->setTitle('シート1');
    // フォント設定
    $sheet->getDefaultStyle()->getFont()->setName('MS ゴシック');
    // フォントサイズ設定
    $sheet->getDefaultStyle()->getFont()->setSize(11);
   
    // 書き込み
    $sheet->setCellValue('A1', 'A1に書き込み');
    $sheet->setCellValueByColumnAndRow(1, 2, 'B2に書き込み');
   
    // C1をセンター揃え
    $sheet->setCellValue('C1', 'C');
    $sheet->getStyle('C1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
   
    // 背景色
    $sheet->getStyleByColumnAndRow(0, 2)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
    $sheet->getStyleByColumnAndRow(0, 2)->getFill()->getStartColor()->setRGB('000000');
   
    // 文字色 A1
    $sheet->getStyleByColumnAndRow(0, 1)->getFont()->getColor()->setRGB('00ffff');
   
    // 罫線
    $line = array(
            'borders' => array(
                    'top'     => array('style' => PHPExcel_Style_Border::BORDER_THIN),
                    'bottom'  => array('style' => PHPExcel_Style_Border::BORDER_THIN),
                    'left'    => array('style' => PHPExcel_Style_Border::BORDER_THIN),
                    'right'   => array('style' => PHPExcel_Style_Border::BORDER_THIN)
            )
    );
    $sheet->getStyle('D1')->applyFromArray($line);
    $sheet->getStyleByColumnAndRow(4, 1)->applyFromArray($line);
   
    // Excel 2007 形式で保存
    // $writer = PHPExcel_IOFactory::createWriter($ex, 'Excel2007');
    // $writer->save("output.xlsx");
   
    // Excel 2003 以前の形式で保存
    $writer = new PHPExcel_Writer_Excel5($ex);
    $writer->save('output.xls');
   
    // ファイルをダウンロード
    $file = 'output.xls';
    $fileSize = filesize($file);
    header ("Content-Disposition: attachment; filename={$file}");
    header ("Content-Length:{$fileSize}");
    header ("Content-Type: application/octet-stream");
    readfile($file);

解説

$sheet->setTitle(‘シート1’); (21行目)
シートのタイトルを設定します。

$sheet->getDefaultStyle()->getFont()->setName(‘MS ゴシック’); (23行目)
フォントの指定をします。

$sheet->getDefaultStyle()->getFont()->setSize(11); (25行目)
フォントのサイズを設定します。

$sheet->setCellValue(‘A1’, ‘A1に書き込み’); (28、29行目)
A1を指定してExcelに書き込みます。
数値で書き込む場合、列は0から始まるのに対して、行は1から始まるので注意が必要です。

->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); (33行目)
センター揃えを指定しています。

->getFill()->getStartColor()->setRGB(‘000000’); (37行目)
背景色を指定しています。
setFillType(PHPExcel_Style_Fill::FILL_SOLID);(36行目)がないと色がつきませんでした。

->getFont()->getColor()->setRGB(’00ffff’); (40行目)
文字色を指定しています。

->applyFromArray($line); (51、52行目)
連想配列で指定できるので、例では連想配列を指定しています。

テンプレートの読み込みや保存はご利用のExcelのバージョンに合わせてご使用ください。

setHorizontal();の定数一覧

中央揃え PHPExcel_Style_Alignment::HORIZONTAL_CENTER
左揃え PHPExcel_Style_Alignment::HORIZONTAL_LEFT
右揃え PHPExcel_Style_Alignment::HORIZONTAL_RIGHT

上詰め PHPExcel_Style_Alignment::VERTICAL_TOP
中央揃え PHPExcel_Style_Alignment::VERTICAL_CENTER
下詰め PHPExcel_Style_Alignment::VERTICAL_BOTTOM

PHP PHPからJavascriptに配列変数を渡す

ここではPHPからJavascriptに配列変数を渡す方法を解説しています。

PHPで配列を文字列に整形

<?php

    $arrBar = array(1,2,3);
    $arrBar = implode(',', $arrBar);

「implode」を使い、配列を「,」カンマ区切りの文字列に整形します。

Javascriptに変数を渡す

<script type="text/javascript">
    var jsBar = '<?php echo $arrBar; ?>';
</script>

PHP側で「,」カンマ区切りの文字列に整形した変数をJavascriptに渡します。

Javascriptで文字列から配列へ整形

<script type="text/javascript">
    var bar = jsBar.split(',');
</script>

「split」を使い、受け取った変数を文字列から配列に整形し直します。

これで配列変数の受け渡しができます。

関連記事
PHP PHPからJavascriptに変数を渡す
http://office-goto.info/php/js-variable/

PHP PHPからJavascriptに変数を渡す

ここではPHPからJavascriptに変数を渡す方法を解説しています。

サンプルソース

<script type="text/javascript">
    var foo = '<?php echo $foo; ?>';
    var bar = '<?php echo $bar; ?>';
    var baz = '<?php echo $baz; ?>';
</script>

解説
PHPでfoo、bar、bazの変数が定義されているものと仮定して、HTMLファイルのhead部で変数を渡します。
注意する点はphpタグを「’」シングルクォーテーションか「”」ダブルクォーテーションで囲み;「セミコロン」を忘れずに付けるようにしてください。

関連記事
PHP PHPからJavascriptに配列変数を渡す
http://office-goto.info/php/js-array-variable/

PHP 画像アップロード

ここではPHPでの画像のアップロードについて解説しています。

HTML

<form action="<?php echo $_SERVER['PHP_SELF'];?>" name="img_up" method="post" enctype="multipart/form-data">
<input type="file" name="img_file" />
</form>

画像をアップロードするにはformにenctypeを指定します。

php

<?php

    // ファイル名をランダムに
    $img_name = md5(uniqid(rand(), true));
    $img_name .= '.'.substr(strrchr($_FILES['img_file']['name'];, '.'), 1);
    $img_path = "./img/{$img_name}";
    if (!move_uploaded_file($_FILES['img_file']['tmp_name'], $img_path)) {
        echo "Error";
        exit();
    }

画像をアップロードするには「move_uploaded_file」を使用します。

書式
bool move_uploaded_file ( string $filename , string $destination )

filename
アップロードしたファイルのファイル名。
今回は例としてランダムでファイル名を決めています。

destination
ファイルの移動先。
画像をアップロードするパスを指定してください。

返り値
画像のアップロードに成功した場合は「true」を返します。