PHPからPDF出力

2011/05/01 | PDF関連

ウェブから印刷用データを配布するのに、久しぶりにPDF出力を試してみた。昨今はCSSである程度の制御もできるようだが、やはりPDFの表現力にはかなわない。

以前はmbfpdfを使用していた。完全にやり方を忘れていたというのもあるし、日本語を簡単に扱いたいというのもあるし、新しいものに触れてみたいというのもある。そして検索で行き着いたのがTCPDF。

TCPDF

これ結構すごい。fpdfから拡張したようなのだが、最初からマルチバイト文字列が使えるようになっている(UTF-8)。日本語フォントも含まれているので、何も手を加えずともそのまま日本語のPDFファイルを作ることが出来る。

そしてfpdfのメソッドがだいたい組み込まれているようで、fpdfからの移植にほとんど手間がかからなかった(最初はfpdfでつくっていたのだが、将来的に日本語も使いたいので、一旦作ったプログラムを移植した)。

後はフォント。利用制限のない日本語フリーフォントでよさげなものを探すことにする。

Xserver、SixCoreで、拡張子htmlでphp

2011/04/28 | その他

Xserver、SixCoreのサーバで、拡張子htmlのファイルをphpスクリプトとして認識させるためのhtaccess。

AddHandler x-httpd-php .html

最近はこの記述で通るサーバが多いっぽい。それぞれ独自拡張とか、いろいろあるだろうから仕方ないのだろうけど、普通にしてくれよ、普通に。

FTPSをコマンドラインで実現する

2011/04/25 | その他

今回の話題はSFTPでなくてFTPS。SSHが絡む方でなくてFTP over SSL。

lftpというソフトウェアを教えていただいた。通常のftpと比較して、より高機能なFTPクライアントだ。評価の高いソフトウェアのようだが、一番気に入ったのはCentOSのリポジトリからyumでインストール出来るところ。下手に他のリポジトリを使ったり、ソースからインストールしたりする手間がない(ソースからインストールするのが嫌なのではなく、インストールしたソフトを生涯管理していくのが嫌)。

インストールはコマンド一発。

yum install lftp

で、実現した方法は以下のとおり。

set ftp:ssl-auth TLS
set ftp:ssl-force true
set ftp:ssl-allow yes
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes
set ftp:ssl-protect-fxp yes
open example.com
user username password
lcd /path/to/backup
cd /path/to/source
mget *.gz
mrm *.gz
close
quit

上記をファイルにしておいて、lftp -fの引数にファイル名を与えればOK。

これで共用サーバでもセキュアなバックアップが出来る(まぁ、共用サーバがセキュアでない、と言われるとそれ以上はなんとも言えないけど)。

Qdmailのエラーの意味が・・・

2011/04/20 | メール

メールを送る際は、Qdmail + Qdsmtpを活用するようにしている(特に数通以上送信する場合)。今日プログラムを作っていてエラーが出た。

Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.1.6
Qdmail error: OS Linux ; PHP Version 5.1.6 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 0, errorlog: 0
Qdmail error: No recipient line -> 2849
Qdmail error: Error happen, see upper line -> 2194
Qdmail error: Send Error line -> 2115

このメッセージを見ると「No recipient line」とあることから、toの指定をしていないように読み取れる。しかし実際はプログラムで指定してある。

$qdMailObj->to($email);

ちなみに上記一行の結果をvar_dumpしてみると、ちゃんとtrueを返してくれる。解せない。

結論から言うと、$emailにはちゃんとメールアドレスが入っていたのだが、これにゴミが付いていた(メールアドレスの後ろに半角スペース)。だから事前にtrimすることで解決できた。

でもそのくらいのことがダメなんだったらtoするときにfalseを返して欲しかった(まぁ、メールアドレスのチェックまでライブラリに頼るのか、という意見もあるかとは思うが)。もしくはエラーメッセージがもう少し分かりやすければよかったのに、と思った。

指定ファイルの合計サイズを知る

2011/04/14 | その他

一つのディレクトリ内にファイルをバックアップしていて、各ファイル名の前には日付(例えば20110412)を付与してある。このとき、例えば20110412で始まるファイル名のファイルの合計サイズを知りたくなった(1日あたりどのくらいの容量が消費されるのか知りたかった)。

du -c 20110412*

おぉーできた。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net