#PHPWordを触ってみた
PHPOfficeにはPHPExcelの他に、PHPWordやPHPPowerpointがあるのをご存じでしょうか?
とりあえず、その中でPHPWordを触ってみました。
##導入
README通りに進めます。
composer.json
{
"require": {
"phpoffice/phpword": "dev-master"
}
}
で、composer update
でインストール完了
##書いてみる
<?php
require_once 'vendor/autoload.php';
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
//文字
$section->addText(
'ほげほげほげたろー',
array('name' => 'MS ゴシック', 'size' => 20, 'color' => '66FFFF', 'bold' => true)
);
//改行
$section->addText(
'ほげほげほげたろー',
array('name' => 'MS ゴシック', 'size' => 20, 'color' => '66FFFF', 'bold' => true, 'italic' => true, 'underline' => 'dash')
);
//てーぶる
$tableStyle = array(
'borderColor' => '006699',
'borderSize' => 6,
'cellMargin' => 50
);
$table = $section->addTable($tableStyle);
$table->addRow();
$table->addCell(2000, array('bgColor' => 'FFFF66'))->addText('あああ');
$table->addCell(2000, array('bgColor' => 'FF6666'))->addText('いいい');
$table->addRow();
$table->addCell(2000, array('bgColor' => '66FF66'))->addText('ううう');
$table->addCell(2000, array('bgColor' => '6666FF'))->addText('えええ');
//画像
$section->addImage('test.jpg');
// Saving the document as OOXML file...
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('helloWorld.docx');
まとめ
上記例ではテンプレートなしで作業しましたが、テンプレートも使用ができます。
また、ネットには日本語は対応してないって記事が結構ありますが現在は普通に対応しているので日本語でもそのままPHPWordが使えます。
細かい調整はやや難しそうですが、テンプレートから値を埋め込むなどの対応で可能な範囲であれば問題なく使用できそうです!
追記
PDFで出せないのって話が出たのでちょっと試してみました。
//tcpdfのダウンロードが必要
\PhpOffice\PhpWord\Settings::setPdfRendererPath('./tcpdf');
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');
$objWriter2 = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'PDF');
$objWriter2->SetFont('kozminproregular', '', 12);// 日本語フォント
$objWriter2->save('helloWorld.pdf');
で、とりあえずは出来ました。
ただ、テーブルの背景色や画像などが取ってこれなかったです。
もしかしたら、PDF変換ツールを別のものに置き換えればもっときれいに出るかもですがとりあえず出来なくはないというところまで。