投稿

11月, 2008の投稿を表示しています

【PHP】PHP-ExcelのFPDFを日本語化対応する(失敗編)

ここの続き。FPDFを日本語対応させて、PHP-ExcelからPDF出力したときに文字化けせずに出力させるように奮闘したときのメモ。FPDFの日本語対応自体はFPDF-Jのサイトここのブログを読めば分かる。PHP-ExcelのFPDFで変換している箇所を修正して、変換してみても文字化けが直らず。FPDFを単独で実行すると、日本語も正常に表示できるので、PHP-Excelでは何か特別な対応が必要なのだろうか・・・。やれることはやったので、とりあえず諦め。PHP-Excelで操作して、JODConverterでPDF変換することにした。前に設定した記事。<2009/03/06 追記>
PHP-ExcelのPDF作成処理はTCPDFを使うように変更になった。ここで書いた記事を参考に。

PHPからエクセルを操作するPHP-Excelを使ってみた

この記事の続編。作成したExcelファイルをPDFにも変換できるPHP-Excel。 今のバージョンはExcel2007形式とExcel2003までの形式と両方読み込み+書き込みできるので、PHPでExcelを操作するのに最強のライブラリだと思う。
ダウンロードはここから。まずは環境の準備。試すだけなら、lamppをインストールすれば環境構築終了。参考。ちなみにinstall.txtには次のように書いてある。PHP version 5.2 or higher PHP extension php_zip enabled PHP extension php_xml enabled Microsoft Office 2007を持っていない場合は試用版をインストールするか、Microsoftが配布している互換機能をインストールすれば2000, XP, 2003のOfficeでも2007のファイルを読み書きできるようになる。準備完了。まずはサンプルプログラムを動かす。ReleasesからPHPExcelをダウンロード。Classesのファイルはlamppのライブラリディレクトリにコピー
# cp Classes/* /opt/lampp/lib/php/Testsディレクトリにエイリアスを設定して、Testsは書き込み可能にする。
# chmod 777 TestsこれでWebからTests内のPHPファイルにアクセスすると、サンプルの動きを確認できる。runall.phpを実行すると全て実行される。いろんなサンプルがあるし、ドキュメントも充実しているのでやりやすい。これで動作確認ができたら、次にやりたいことは、既存のExcelファイルを開いて、特定のセルに値を挿入。これはサンプルの07reader.phpと03formulas.phpを組み合わせれば簡単に実現。
日本語を扱う場合はUTF8で挿入する必要あり。PHPファイルの文字コードがUTF8ならOK。最近のバージョンは過去のExcel形式も読み込んだり、書き出したりできる。このライブラリ絶対流行ると思う。---でもPDF変換したときに元のファイルに日本語が含まれていると文字化け。xlsxやxlsで吐き出すと文字化けは起きない。内部的にFPDFを使っているみたいなので、FPDFを日本語化対応すれ…

【Linux】OpenOffice.orgとJODConverterでExcelをPDF変換(設定編)

環境はCentOS5.2。JREのインストールは前にPunoをインストールしようとして失敗したときの記事を参考に。JAVA_HOMEを設定してない場合は設定
# vi .bash_profile
export JAVA_HOME=/usr/java/latest
# source .bash_profileJODConverterはここからtomcat付きをダウンロード。 参考記事
# unzip jodconverter-tomcat-2.2.1.zip
# cd jodconverter-tomcat-2.2.1
# bin/startup.sh <2009/03/24 追記>
Office2007形式に対応するために、コンパイルからやってみた記事も参考に。ちなみにJODConverterのライセンスはGNU LGPL。これでJODConverterのサービスが起動するので、
http://<サーバ名>:8080/converter
にアクセスして起動していることを確認。ポートを空けるのを忘れずに。参考
この段階ではOpenOffice.orgのサービスを起動してないので変換はできない。OpenOffice.orgはここから最新版をダウンロード。SDKとかUNOではなく、まるっとインストールするために「RPM,JREなし」を選択。
# tar xzvf OOo_3.0.0_LinuxIntel_install_ja.tar.gz
# cd OOO300_m9_native_packed-1_ja.9358/RPMS/ デスクトップ環境はインストールしてないのでgnomeを削除
# rm -f ooobasis3.0-gnome-integration-3.0.0-9358.i586.rpm
# rpm –ivh *.rpmインストール後は/opt/openoffice.org3/に配置される。OpenOffice.orgをサービスとして起動。
# cd /opt/openoffice.org3/program/
# ./soffice -headless -accept="socket,port=8100;urp;" –…

社員旅行でもサプライズ

土日は社員旅行で渥美半島の先端まで行ってきました。詳細スケジュールは公式ブログの方で。他の社員のブログでも書いてありますが、今回の目玉はなんといっても社員同士の電撃結婚発表。まさに電撃。そして衝撃。あまりの衝撃(感動)に涙を流す者も出る始末。Mさんが入社してきて1ヶ月そこらでそんな展開になっているとは・・・。全く気付きませんでした。もっと根掘り葉掘り聞いてみたかったですが、その日二人は親に挨拶に行くそうで、泊まらずにいってしまわれた。二人ともおめでとう。お幸せに。エクスブリッジの伝説に新たな一頁が追加された瞬間でした。

【Linux】OpenOffice.org-SDK, UREのインストールとPunoを設定(失敗編)

環境はCentOS5.2。ここの記事を書いたときに発見したPunoをインストールしようと奮闘したときのメモ。・・・できなかったんだけどね。必要なツールをインストール。
# yum install gcc-c++
他にもGNU makeとかzipとかないと後で怒られるけど、そのたびにインストールすればOK。JavaのJREをここからLinux RPM (自己解凍ファイル) をダウンロード→インストール。
# ./jre-6u10-linux-i586-rpm.bin パスを通す
# cd
# vi ./.bash_profile
PATH=$PATH:$HOME/bin:/usr/java/latest/bin
# source ./.bash_profileOpenOffice.orgのSDKはここの右下にある「OpenOffice.org SDK」からダウンロード→インストール。
# ./OOo-SDK_2.4.0_LinuxIntel_install.sh
解凍場所を聞かれるので適当な場所を選択。 # rpm -ivh unpack_openofficeorg/RPMS/openoffice.org-sdk-2.4.0-9286.i586.rpm何も聞かれずに/opt/openoffice.org2.4_sdk/にインストールされた。インストールと設定の仕方は/opt/openoffice.org2.4_sdk/index.htmlを見れば結構詳しく書いてある(英語)。OpenOffice.orgのUNO Runtime Environment(URE)を同じくここの右下にある「UNO Runtime Environment (URE)」からダウンロード→インストール。
(OpenOffice.orgを丸ごとインストールしてもUREがインストールされる)
# ./OOo-URE_1.3_LinuxIntel_install_en-US.sh
# rpm -ivh unpack_ure/RPMS/openoffice.org-ure-1.3-9221.i586.rpm ちなみにどこにインストールされたかは
# rpm -qi openoffice.org-ure��…

OpenOfficeのドキュメントをPHPから操作する

前の記事の関連で調べたときのメモ。OpenOffice.orgのドキュメントはXMLをzip圧縮してあるだけなので、比較的簡単にPHPから扱えると思ったら、いいライブラリが見つからない。Open Document Formatについては前の記事を参考に。使えそうなのがOpenDocumentPHP。でも開発がしばらく止まっているので駄目そう。とりあえず使ってみたけど(バージョンは0.6)、作ったファイルを読み込んで、特定のセルに値を挿入とかメソッドが見つからなかったので、残念ながらあきらめ。PHP-Excelは盛んに更新されていて使いやすいので(PDFに変換できるしね→でも日本語は文字化け)、OpenOfficeの方も頑張ってほしい。

OOXML(Office Open XML)とODF(Open Document Format)の違い

OOXML(Office Open XML)はMicrosoft Office 2007で採用されたファイルフォーマット。wikipedia
Office 2003までの互換を考慮しているため仕様が複雑。ODF(OpenDocument Format for Office Applications)はオフィススイート用の標準規格として策定されたファイルフォーマット。OpenOffice.orgで採用されたファイルフォーマット。wikipedia
OOXMLに比べシンプル。実質
MS Office 2007(OOXML) VS OpenOffice.org(ODF)
という図式。両方とも規格の内容は公開されていて、基本XML(と画像などのバイナリ)をzip圧縮しているだけ。なので、外部アプリケーションからの操作などもやりやすい。違いを解説しているは次のサイト。2007 Officeの文書フォーマット「OOXML」を正しく知るOOXML: 何が問題なのかODFに関するリンク集

XREAサーバへJoomlaのインストール

イメージ
そろそろXoopsからJoomlaへ移行したいと思い立ち。とりあえずJoomlaをインストールしたときのメモ。Joomlaはここからダウンロード。初めてインストールする場合は日本語パックが付いている方が管理画面の操作がわかりやすい。XREAサーバにアップロードするときは解凍したのをアップロードすると恐ろしく時間が掛かるので、サーバで解凍した方が全然早い。やり方はXREAのサーバ管理画面で「ホスト情報登録」しといて、SSHでアクセス。ユーザ名、パスワードはFTPと同じ。SSHでアクセスするツールはTeraTermが便利。参考。サーバで解凍するコマンドは
$ tar –xzvf Joomla_1.5.7-Stable-Full_Package.tar.gz
カレントディレクトリにすべて解凍されるので、あらかじめディレクトリを作って作業すること。
zipの場合は
$ unzip Joomla_1_5_6_ja-JP_Stable.zipデータベースはあらかじめUNICODEで作成しておく。あとはhttp://<サーバ名>/にアクセスすれば自動でインストールが始まる。設定の確認では次のような.htaccessを置いておけばほとんど「はい」になる。php_flag register_globals off
php_flag output_buffering off php_flag mbstring.encoding_translation On
php_value mbstring.language neutral
php_value mbstring.http_input autoconfiguration.phpはいいえのままだけど、これはこのままでOK。最初configuration.php-distをコピーしておいたら次のFTPの設定で
Error: the XML response that was returned from the server is invalid.
と怒られたので、用意しておいたら駄目みたい。FTPの設定はXREAのFTPアカウントそのままでOK.「FTP初期フォルダ検索」で自動で初期フォルダを取得可能。最後に管理者の情報を入力してインストール完了。ディレクトリの…

エルゴヒューマン(Ergohuman)の高級椅子

イメージ
2年ぐらい前に買ったエルゴヒューマンの椅子を紹介。座りながら寝れるような椅子を探していてたどり着いた。8万円するぐらいあって、座り心地は最高。メッシュで構成されているので、全く蒸れない。高さが調整できるのはもちろん、座る所を前後に調整できたりする。詳しくはここを参照。椅子は個人によって好みが分かれるので、買うなら試しに座ってから買った方がよい。これは名古屋の東急ハンズに置いてあるので、気になる人は座りに行ってみては?会社の椅子もこれにしたい・・・。

【PHP】2つのパス(URL)を結合する関数を作ってみた

プログラム内で2つのパス(URL)を結合することがよくありますが、$sTop = “http://exbridge.jp/”;$sUrl = $sTop . “index.php”;この最初の文字列の最後にスラッシュがあるかないかで結合の仕方が変わってくる。いちいち気にしたくないので、自動で補完して結合してくれるような関数がないものかと探してみたけど、PHPにはないみたい。VBScriptではBuildPath.NETではcombineしょうがないので自作してpetitworkに組み込みました。円マーク「¥」にも対応しているのでURLでもローカルパスでも使えるはず。 他にスマートな方法があれば教えてほしい。/** * 2つのURL(パス)を結合するときにスラッシュがある場合でもない場合でも * うまいこと結合して結果を返す * * @access public * @param string $sPath1 結合文字列(前) * @param string $sPath2 結合文字列(後) * @param string $sSeparate 連結文字列。デフォルトは「/」 * @return string/boolean 2つのパスの結合結果(失敗時はfalse) */ function getBuildPath($sPath1, $sPath2, $sSeparate = DS ) { $sReturn = ''; if (strlen($sPath1) == 0) { return false; } $sPath1 = rtrim($sPath1, '\/'); $sPath2 = ltrim($sPath2, '\/'); $sReturn = $sPath1 . $sSeparate . $sPath2; return $sReturn; }

【PHP】Webで帳票を作成するのにPDF変換を利用する方法

システムで入力したデータを帳票として印刷したいという要望はどこにでもありますが、それを実現するための方法は様々です。Google先生に聞いてみると有償のツールがいろいろと出てきます。
GUIで操作できるし、開発工数も削減できるので、トータルでみると買ったほうがいいかも。以下はフリーで使い勝手のいいPDF作成・変換ツールがないものかと探したメモ。環境はLinux(CentOS5.2) + Apache + PHP名称説明FPDF簡単にPHPからPDFを出力できるPHPのクラス。簡単なものならこれで十分。でも日本語対応が不十分らしい。UTF-8に対応していない。日本語対応するのは難しくない。
FPDIを使えば既存PDFの読み込みも可能に。
本家サイト日本語サイト。TCPDFFPDFを元に開発された。UTF-8に標準で対応。こっちも日本語対応が不十分らしい。
FPDIを使えば既存PDFの読み込みも可能に。今ならFPDFよりこっちがおすすめ。
本家サイト日本語解説サイト。HTML2FPDFその名の通りHTMLをPDFに変換できる。サンプルを見る限りかなり便利そう。
中身はFPDFが動いていて、HTMLタグに合わせて位置を調整しているらしい。
本家サイトSorceforge。Apache FOPXMLからPDFに変換するためのJavaライブラリ。実行するためにはJavaの実行環境が必要。
詳しくはwikipediaを読む。
XML→XSL-FO→PDFという流れらしい。参考サイト
可能性は無限大。難易度も無限大。
PHPで利用する場合はXMLを作っておいて、コマンドラインで実行
本家サイト。OpenOffice.orgのPDF作成ツールを利用するOpenOffice.orgをサービスとして起動して、OpenOffice.orgのPDF変換機能を利用する方法。
PHPからはコマンドラインを実行する。
詳しくはここを参照。
レイアウトをMicrosoft Excel or OpenOffice.org Calcで作成…

懐かしのHappy Hacking Keyboard上位モデルに日本語配列

大学時代にHappy Hacking Keyboard(英語配列)を使っていて、その使い勝手が忘れられずHappy Hacking Keyboard Lite2とかに手を出していましたが、上位モデルが日本語配列になって新登場するらしいです。PFU、“Happy Hacking Keyboard”上位モデルに日本語配列製品を追加日本語配列だけど、Controlキーがちゃんとaの横にあるのが素晴らしい。
(この辺は変更できるみたい)Windowsを使う限りファンクションキーとテンキーは手放せないですが、LinuxやUnixを使う場合は正に最適なキーボードなので、サーバ用に一つ買っておきたい(と思ってます)。でも2万5000円はちょっときついなー。

オンサイトサポートとは(=出張サポート)

オンサイトサポート(on-site support)(site=現場)とは、製品が故障した際に技術者が現地に行くサポート方式。用語説明事前準備なしに現場に行って対応するサポートに対して用いることが多い要は「出張サポート」メーカーの場合、電話サポートと区別するためによく使われる。システム開発では
不具合の連絡 → 開発環境で現象確認 → ネットワーク対応 or 現地対応
となるため、あまり聞き慣れない言葉。

【Linux】CentOSでFAX送信サーバ構築

システムからFaxを送信する必要があったので、調査&設定したメモ。環境はCentOS5.2。FAXモデムは外付けのオムロンME5614Dを選択、外付けの方がやりやすいらしい。参考になるのはここここここ
以下実行したコマンド。まずは、faxを送信するソフトウェアを導入。
#yum install efax
ちなみにバージョンは0.9-27.2.1。その後、PDFとかPostScriptを操作するツールを導入。
# yum install poppler-utils ghostscriptfaxモデムはシリアルポート(com1)に接続し、デバイスの接続権限を設定。
# chmod 666 /dev/ttyS0 シェルスクリプト(/usr/bin/fax)のFaxデバイス名が/dev/modemになっているので、シンボリックリンクを作る。
# ln -sf /dev/ttyS0 /dev/modem ロックファイルの置き場所の権限を設定
# chmod 777 /var/lockefaxを使ったシェルスクリプトが/usr/bin/faxにあるのでこれをさっきのリンクを参考に修正(バックアップをとってから)。
# cp /usr/bin/fax /usr/bin/fax-bak
# vi /usr/bin/fax変更箇所↓
FROM="+81 052 111 2222" #81は国番号。052-111-2222の場合
NAME="from AURORA.Fax"
PAGE=a4
TELCVT='sed -e s/+81 */0/'            # Japan PDFを作成して動作確認。
# pdftops /tmp/Book1.pdf
# fax make Book1.ps
# fax send 052-111-2222 Book1.ps.001番号は「-(ハイフン)」があってもなくても送れる。複数ページに分かれる場合は
# fax send 052-111-2222 Book1.ps.*
とすれば一括送信。ちなみに電話番号に「,(カンマ)」を記述すれば数秒待機する0発信の…

DBDesignerをダウンロード

社内でER図をDBDesignerで書いているので、それをダウンロードするためのメモ。アメリカの会社がオープンソースで開発していたらしいけど、今は停止しているみたい。その最新版はDBDesigner4。日本語化はここ。そっからforkしてSourceForgeで開発されているのがDBDesigner-fork。こっちではPostgreSQLでも対応するよう開発が進められているようですが、最近はリリースされてないみたい。
なるべく早くリリースされてほしいなぁ。アニキに先を越されたけど、せっかく書いたのでアップ。PHP用DB接続支援ライブラリ「somfa」

オープンソースでシンクライアントを実現する「openThinClient」

前の記事とかでシンクライアントについて書きましたが、オープンソースのソフトウェアを使ってシンクライアント化を実現できるみたいです。openThinClient導入する手順はこちら。専用OSを各クライアントで起動するため、使えるソフトウェアに制限があるみたい。まだまだ実用レベルまでは時間がかかりそう。その他VMwareなどで実現したシンクライアントの導入事例はここから。suganuma@エクスブリッジ.jp

Googleカレンダーの予定を携帯に通知する

イメージ
Googleカレンダーのアラートを携帯に送れるようなので設定してみた。Googleカレンダーの設定で「モバイルの設定」から自分の携帯のアドレスを入れて、確認コードを送信。携帯に確認コードが届くので、それを入力して作業完了。↓こんな画面。メールの転送機能でも同じことが実現できますが、とりあえず設定しとくと後で役に立ちそう。ここでも書いたけど、携帯でGoogleカレンダーにアクセスするにはhttp://www.google.com/calendar/mあとは携帯でGoogleカレンダーの予定を新規作成できるようになってほしい。 名古屋のおもしろ会社エクスブリッジ

Linux上で.NETアプリケーションを動作させるMONOプロジェクト

.NETをLinux上で動作させようと頑張っているMONOプロジェクト。現在の最新版は2.0で多くの.NETアプリケーションが動くようになったみたいですが、まだ実用レベルではないようです。MONOプロジェクトについて知りたい場合はwikipediaを読むのが早い。もし、MONOプロジェクトが完全に.NET Frameworkと互換性を持つようになれば、開発工数削減のためにVisual Studioで開発して、CALの節約のためにLinuxサーバで動かすシステムが出てくるような気がします。たぶん、まだまだ先の話だと思いますが。名古屋でプロのSEを目指す