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を作る

Posted on

DB暗号化を調べてみた

DBに保存する時に個人情報をそのまま保存するのは、万が一DBの情報が流出した時にまずいので、色々と調べてみました。

まず、パスワードはphpのmd5でハッシュ化して保存すれば、復号できないのでOK、パスワードを忘れた場合は、新しいパスワードをランダム生成。
次に、暗号・復号するデータ。
氏名やメールアドレスなど、
php側で暗号・復号する方法と、DB側で暗号・復号する方法があります。(ハードディスク自体暗号の方法もありますが)
で、問題は、LIKE検索とINDEXでした。
基本、暗号化して保存すると上記2点が出来なくなることが問題です。
その点も踏まえてどんな方法があるか調査してみました。
とりあえず今回は
php mysqlの環境で出来ればということで・・・

続きを読む DB暗号化を調べてみた

Posted on

ブラウザ・IEの画像キャッシュをなんとかする

画像をアップするシステムを作ってる時にかなり邪魔なブラウザの画像のキャッシュ。

画像をアップしなおしたのにブラウザで確認すると前の画像が!!
そんな時の解決方法をまとめてみました。
テストしたのは
IE6,8
Firefox4
Chrome11
テストファイルはphpです。

続きを読む ブラウザ・IEの画像キャッシュをなんとかする