siwapp インストール

請求書管理システム siwapp をインストールしました。

インストール手順

  • パッケージをダウンロードして設置
  • sf_root_dir/cache、sf_web_dir/uploads
  • MySQLでデータベース、ユーザー作成
設置先にアクセスするとインストーラが動作します。
sf_root_dirは設置ディレクトリの直下、sf_web_dirは設置ディレクトリの下のwebディレクトリになります。

最初に言語の選択が出てきます。
この選択肢は日本語で表示されますが、「日本語」という選択肢はありません。ベースに使われているフレームワークsymfonyの機能によって日本語で選択肢は表示されていて、メッセージファイルとして日本語用が用意されていないために選択肢に日本語が出てこない、という状態になっています。
インストールなので、英語のままでも構わないのですが、
apps/installer/i18n/messages.en.xml をコピーしてmessages.ja.xmlを作成し、中身を翻訳することで日本語でのインストールも可能になります。
翻訳の際には、target-language=”ja”として<target>に翻訳文を入れていきます。

Step5 Configuration でApplication initial dataのチェックをつけるとサンプルデータがデータベースにロードされます。

最後に、databases.ymlとconfig.phpが書き込み出来ない場合はダウンロードを促されます。
それぞれダウンロードして、config/database.yml と web/config.php に配置してインストール完了となります。

動作確認

サンプルデータをロードした場合は、最初からサンプルデータが表示されて詳細画面等確認できます。

上部にある Settings > Global settings で自社情報の設定を行います。
日本語の入力も問題ありません。

詳細画面の下に印刷用のボタンが表示されています。

”Print”は、新しいウィンドウで印刷用表示を表示して印刷します。
”PDF”は、PDFファイルを生成します。
”Print”はブラウザからの印刷なので問題ありませんが、”PDF”は日本語が文字化けします。

PDFの日本語化

PDF生成にはsymfonyのプラグインsfDomPDFPlugin(dompdf)が使われています。

フォントの準備

日本語フォントにはTakao Fontsを使用します。
Takao Fontsのページからフォントをダウンロードして展開すると、以下のファイルに展開されます。

ChangeLog
IPA_Font_License_Agreement_v1.0.txt
README
README.ja
TakaoExGothic.ttf
TakaoExMincho.ttf
TakaoGothic.ttf
TakaoMincho.ttf
TakaoPGothic.ttf
TakaoPMincho.ttf


フォントの変換

dompdfで使用するには .ufmファイルが必要になります。
siwapp/plugins/sfDomPDFPlugin/lib/dompdf/load_font.php という変換ツールがありますが、ttf2pt1という外部ツールが必要になるので、dompdfのwiki”A guide to enabling Unicode support in DOMPDF (when using the CPDF backend)“にある、http://eclecticgeek.com/dompdf/load_font.phpを使います。

“DOMPDF Version: “は、”0.6.0 beta 1 and earlier”と”0.6.0 beta 2 and later”しか選択肢がありません。
A guide to enabling Unicode support in DOMPDF (when using the CPDF backend)にも0.6.0以上を使うように書いてあって、siwappに同梱されているdompdfは0.3の様ですが”0.6.0 beta 2 and later”を選択しても問題ないようです。

Font Name: TakaoExMincho
Base: TakaoExMincho.ttf
を指定するとdompdf_fonts.zipというファイルがダウンロードされます。
zipファイルの中身は以下のファイルになります。

dompdf_font_family_cache.sample
TakaoExMincho.ttf
TakaoExMincho.ufm


siwappへの組み込み

data/fonts に使用するフォントが格納されているので、TakaoExMincho.ttf と TakaoExMincho.ufm をここに配置します。
dompdf_fonts.zipに入っていた dompdf_font_family_cache.sample の最後に
  'takaoexmincho' => 
  array (
    'normal' => DOMPDF_FONT_DIR . 'TakaoExMincho',
    'bold' => DOMPDF_FONT_DIR . 'TakaoExMincho',
    'italic' => DOMPDF_FONT_DIR . 'TakaoExMincho',
    'bold_italic' => DOMPDF_FONT_DIR . 'TakaoExMincho',
  ),
という記述があるので、これをdata/fonts/dompdf_font_family_cache.dist.phpに追加します。

日本語フォントの指定

dompdfはHTMLファイルをPDFに変換するツールなので、元のHTMLでのフォント指定を変更する必要があります。

PDF生成用のHTMLは ”Print” で表示されるHTMLと同じで、Settings > Printing templates にある”Invoice Template”を編集します。

    body, input, textarea { font-family:helvetica,sans-serif; font-size:8pt; }
となっているところを、以下のように変更します。
    body, input, textarea { font-family:TakaoExMincho,sans-serif; font-size:8pt; }:

あるいは、HTMLのフォント指定をそのままにして、data/fonts/dompdf_font_family_cache.dist.php のhelveticaの指定をTakaoExMinchoに置き換えてしまっても良さそうです。
  'helvetica' => array(
    'normal' => DOMPDF_FONT_DIR.'TakaoExMincho',
    'bold'   => DOMPDF_FONT_DIR.'TakaoExMincho',
    'italic' => DOMPDF_FONT_DIR.'TakaoExMincho',
    'bold_italic' => DOMPDF_FONT_DIR.'TakaoExMincho'
  ),

以上でPDFの日本語が文字化けしないようになります。

表示の日本語化

インストーラと同じように、siwapp/apps/siwapp/i18n/messages.en.xmlをコピーしてmessages.ja.xmlを作成、翻訳して siwapp/apps/siwapp/i18n/ に設置すると、Settings > My settings のInterface languageで日本語が選択できるようになります。