Posted on

phpexcel斜め罫線を引く方法

phpexcelで斜め罫線を引く方法がわからず、
延べ2日間くらい探してなかったので、
右端の四角罫線に対して、画像で斜め線をつけていたのですが、
印刷でどうしても1ページに収まらないため、再度探しました。
すると、斜め罫線を引く方法の英語サイトで見つけました。
私がすこし変更したものですが、情報として提供したいと思います。

// 斜め罫線
$styleArray = array(
    'borders' => array(
        'diagonal' => array(
            'style' => PHPExcel_Style_Border::BORDER_THIN,
            'color' => array('argb' => 'FF000000'),
        ),
        'diagonaldirection' => PHPExcel_Style_Borders::DIAGONAL_DOWN,
    ),
);
$sheet->getStyle("N16")->applyFromArray($styleArray);
Posted on

PHPで統計処理を行うには

ビッグデータの活用がすっかり定着してきた昨今、どうデータを分析するかがとても大事になってきました。
PHPはWEBアプリケーション用言語ですので従来はデータ分析と言っても単にカテゴライズや平均を求める程度で需要は満たせましたが、今後は統計的な手法を用いてさらに突っ込んだ解析を行う場面も出てくるかと思います。
そんな時に使えるライブラリを紹介します。

そのライブラリとは、ズバリ、

続きを読む PHPで統計処理を行うには

Posted on

TCPDFでCODE39のバーコードの読取精度が悪いので調整してみました。

この前の案件でTCPDFでCODE39のバーコードを表示することがあり、
バーコード小さくしてを印刷すると黒い線が太くて白い部分がつぶれるので
TCPDF自体を修正し、黒線を細くすることで読取精度を上げてみました。

以下修正個所です。 

tcpdf/tcpdf.phpの15421行目

foreach ($arrcode['bcode'] as $k => $v) {
// modified $v['w'] にバーコード1線分の太さ1か3で入っているので細さを調整したい数値(0.1)をセット
$bw= ($v['w'] > 1) ? $v['w'] * $xres - 0.1 : $v['w'] * $xres + 0.1;
if ($v['t']) {
// draw a vertical bar
$ypos = $y + $vpadding + ($v['p'] * $barh / $arrcode['maxh']);
$this->Rect($xpos, $ypos, $bw, ($v['h'] * $barh / $arrcode['maxh']), 'F', array(), $style['fgcolor']);
}
$xpos += $bw
}

これで認識率上がりました。0.1の数値を調整することでもうちょっと認識率上げれそうでした。

Posted on

TCPDFでいつの間にか日本語のフォント・サブセットが使えるようになってた!!

いつもお世話になってるTCPDFですが
VER 5.2.000よりフォント・サブセットを使用できるのは知っていたのですが
日本語で使用するとCPUとメモリを使いすぎて使い物になりませんでした・・・

今までどおりフォントの全て埋め込みで対応していたのですがやはり3MBオーバーは重いなーと思っていました。(バックアップ用に生成したPDFとか置くのはとても無理でした)

以前案件で軽いPDFを出す必要がありだめもとで新しいTCPDF(6系)を使ってみたところ・・・
使えるようになってました!!(数100kbとかで出力できたりします。)

これでお客さんに重いって言われなくなります!

以下サンプルと注意事項です。

続きを読む TCPDFでいつの間にか日本語のフォント・サブセットが使えるようになってた!!

Posted on

PHPでサーバーを監視するプログラムを作ってみました。

最近サーバーの調子が悪いので、サーバーにトラブルがあったら連絡くれるようにしてみました。

有料の監視ツールを使うほどでもないので、簡単に無料でできるか調べると、
アシアルさんでいいのを発見!これを使ってDBも監視するようにしました。
以下監視プログラムです。

続きを読む PHPでサーバーを監視するプログラムを作ってみました。

Posted on

CakePHPでinputの名前で5層に対応する

CakePHPで配列で指定したinputに$this->dataが連動してくれる
helperのありがたい機能を使っていたのですが、
<?php echo $form->input(“Part.1.element.1.radio”, array(‘type’=>’text’)); ?>
という感じの5層構造になるとデータの引継ぎをしてくれません。
helperの対応しているのは4層までみたいです。

困ったということで調べてみるのですが、これという記事が見つからないので
自分でカスタマイズして5層でもデータがやり取りできるようにしました。

続きを読む CakePHPでinputの名前で5層に対応する

Posted on

wdCalenderが本番サーバーで動かない

wdCalenderをローカル環境で動かしていて、実際本番環境にUPした時に動かなくなってテンパッタのでメモとしてブログに残しておきます。

症状としてはテスト環境では動くのに本番環境では動かないというもの。
jqueryに頼っているので実際動かないと、どう調査をしたらいいか分からずとりあえず、FireBugで追っかけていきます。
するとどうもテストでは値が入っている所に、本番では入っていないということが分かりました。しかもJSON形式のデータが・・・

JSON形式のデータ???んっ!!以前phpのjson_encodeはphpのバージョンに依存するなというのに、はまった事があるなということで調べるとビンゴでJSONが使えるPHPのバージョンは5.2以上ということ。
本番サーバーではphpのバージョンが5.1.6だったので早速5.1.6でもJSONが使えるように「http://www.softel.co.jp/blogs/tech/archives/973」を参考にサーバーの設定を変更!!
これで動くかなと思っていたのですが動かない・・・という事でもう一度デバッグ作業をしていきます。
今度はphpの記述部分をfwrite関数を使っていって1行ずつファイルにデバッグ文を出力して追って行きます。するとある関数で処理が止まってしまっている事が分かりました。
それはdate_parse関数なのですが調べてみると、この関数が使えるのはphp5.2以上との事でして、JSONと一緒やんという顛末でした。date_parse関数のところを独自の記述に置き換えると見事動いてくれました。

基本としてwdCalenderはphp5.2以上で使うもの。それ以前で使うときは動くように自分で調整をして上げる必要ありという事でした。

Posted on

MySQLに大量のデータをインポートする

今回レンタルサーバーの区画のMySQLに大量データを流し込まなくなったのですが、レンタルサーバーが用意してくれているphpMyAdminでは容量が大きくてインポートが出来ませんでした。
自社で管理しているサーバーであればコマンド一発で難なく出来るのですが、レンタルサーバーなものでコマンドも使えない、php.iniの値も変えれないということでどうした物かという状況になりました。
困ってググッてみたらBigDumpという便利そうなものを発見!!
詳しくはhttp://d.hatena.ne.jp/istwar/20101019/1287505139を見てもらった方が早いので説明は書かないですけど、とにかくPHPファイル1つでインポートが出来ちゃうのでどんなサーバー相手でもへっちゃらというのは素晴らしい!!
すごい重宝するので皆さんも是非使ってみてください。

Posted on

TCPDFでセキュリティー設定をしたPDFを作る

この前、閲覧、印刷のみできるPDFて作れる?

という需要があったので色々と調査してみた。(しかもPHP4で)
最初はTCPDF無理やと思って、FPDFとかで試していたのですが、
実はPDF4バージョンもあることがわかった。
今回は、
PDFで「印刷禁止」「文字等コピー禁止」「編集禁止」「パスワード」「有効期限」「ローカルPCで開くの禁止」を
テストしてみました。

続きを読む TCPDFでセキュリティー設定をしたPDFを作る