YetiForceCRMでは、見積書や請求書などの顧客向け帳票をPDF形式で出力するために「PDFテンプレート」機能が用意されています。まず管理者ユーザでPDFテンプレートを作成・設定することで、各レコード画面から対応するPDF帳票を生成できるようになります (Creating a PDF of a Quote · Issue #12620 · YetiForceCompany/YetiForceCRM · GitHub) (Creating a PDF of a Quote · Issue #12620 · YetiForceCompany/YetiForceCRM · GitHub)。以下、PDFテンプレートの作成から編集、適用、出力、そして日本語対応まで、ステップバイステップで解説します。
1. PDFテンプレート機能の概要と準備
- PDFテンプレートとは:帳票(見積書や請求書など)のレイアウトや内容を定義したテンプレートです。YetiForceCRMでは各モジュール(例:見積書、請求書)ごとにPDFテンプレートを作成し、レコードのデータを差し込んでPDFを生成します。
- 出力エンジン:標準ではYetiForce独自のHTML-to-PDFエンジンが組み込まれており、無料で利用できます (YetiForce PDF Premium | YetiForce Documentation) (YetiForce PDF Premium | YetiForce Documentation)。この標準エンジンで基本的なPDF出力が可能です。※高度なCSS対応やフォント互換性が必要な場合、有償の「PDF Premium(Chromiumベース)」エンジンも利用可能ですが、本マニュアルでは主に標準エンジンでの手順を説明します (YetiForce PDF Premium | YetiForce Documentation)。
- 事前準備:PDFテンプレート機能を使うには管理者権限が必要です。システム管理画面よりPDFテンプレートを作成します。テンプレートが存在しないモジュールではPDF出力ボタン自体が表示されないため、まずはテンプレート作成から始めます (Creating a PDF of a Quote · Issue #12620 · YetiForceCompany/YetiForceCRM · GitHub)。
2. PDFテンプレートの新規作成方法
- 管理画面へ移動:管理者ユーザでログインし、画面右上の歯車アイコンなどからシステム設定メニューを開きます。
- 「PDF」設定を選択:管理メニュー内の「システム設定」→「システムツール」→「PDF」をクリックします ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。
※メニュー名は使用言語によって異なりますが、日本語環境の場合「PDFテンプレート」等と表示されることがあります。 - 新しいテンプレートの作成:「PDFテンプレート」一覧画面で「新規作成」または「新しいPDFテンプレート」ボタンを押します ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。テンプレート作成フォームが開きます。
- 基本情報の入力:テンプレート名、適用モジュール、表示順序などを指定します。
- テンプレート名:テンプレートの名称をわかりやすく入力します(例:「見積書 標準フォーマット」など)。
- モジュール:ドロップダウンから対象モジュールを選択します(例:「Quotes(見積書)」や「Invoices(請求書)」)。これによりそのモジュールのレコードで本テンプレートが使用可能になります。
- 状態:有効/無効(アクティブ)のチェックがあれば有効にします。必要に応じてデフォルト(既定)テンプレートに設定することも可能です。
- ページ設定(必要に応じて):「用紙サイズ」「向き」「余白」等の項目があれば設定します。YetiForceCRM標準エンジンではHTML内にデータ属性でページ設定を書く方式ですが、UI上で入力欄が用意されている場合もあります(バージョンによって異なる)。特に指定しない場合、デフォルトはA4縦向き、適切な余白で出力されます。
- 帳票レイアウトの編集:ヘッダー、フッター、本文、透かし(Watermark)といった各セクションの内容を入力します(詳細は次節参照)。
- 保存:「保存」ボタンを押してテンプレートを保存します。保存後、選択したモジュール(例:見積書)の各レコード画面にPDF出力オプションが表示されるようになります (Creating a PDF of a Quote · Issue #12620 · YetiForceCompany/YetiForceCRM · GitHub) (Creating a PDF of a Quote · Issue #12620 · YetiForceCompany/YetiForceCRM · GitHub)。
3. PDFテンプレートエディタの使い方と主な機能
PDFテンプレート作成フォームにはWYSIWYGエディタ(リッチテキストエディタ)が組み込まれており、HTMLの知識がなくても帳票の体裁をある程度デザインできます。また必要に応じてHTMLソースを直接編集することも可能です。
- セクション別編集:テンプレートは大きく次のセクションに分かれています ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub):
- ヘッダー:各ページ上部に出力される内容。会社ロゴ、会社名や帳票タイトル(「御見積書」「請求書」など)を配置します。
- フッター:各ページ下部に出力される内容。ページ番号や会社住所・連絡先、フッターメッセージ等を配置します。
- 本文:メインの帳票内容。見積明細表や金額、顧客情報など帳票の本体部分を記述します。
- 透かし(ウォーターマーク):ページ背景に透かしとして表示するテキストや画像(例:「見本」スタンプなど)がある場合に指定します。
- WYSIWYG編集:各セクションにはリッチテキストエディタがあり、文字の装飾や表の挿入などをGUIで行えます。エディタ上部のツールバーから、太字/斜体、段落配置、表挿入など基本的なHTML編集操作が可能です。
- HTMLソース編集:高度なレイアウト調整や変数挿入のためには、エディタの「ソースコード表示(HTML表示)モード」に切り替えて直接HTMLコードを編集できます ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。エディタ上の「<>」ボタン(または「ソース」タブ)をクリックすると、そのセクションのHTMLソースが表示され編集可能になります。必要に応じてこのモードで細かい調整を行ってください。
- 変数の挿入:TextParserによる動的変数を用いて、レコードのデータや関連情報を差し込むことができます (YetiForce PDF Premium | YetiForce Documentation)。エディタ上でフィールドを選択して挿入する機能や、変数一覧のヘルプが提供されている場合があります。手動で入力する場合、以下のような書式で記述します。 《主な変数の例》
- レコード固有の項目:
$(record : フィールド名)$または$(モジュール名 : フィールド名)$の形式で、現在出力しているレコードのフィールド値に置換されます。例えば見積モジュールで$(record : subject)$と書けばその見積レコードの件名が挿入されます(※実際のシンタックスはシステム内で定義されたものに従ってください)。 - 組織情報(会社情報):
$(organization: 部署ID|フィールド)$の形式で、Companyモジュール(企業情報・部署情報)のフィールドを参照できます (I can’t upload the logo image or even add pictures to pdf templates · Issue #9945 · YetiForceCompany/YetiForceCRM · GitHub)。例えば$(organization: 1|name)$は「部署ID=1」の会社名、$(organization: 1|logo)$は登録済みロゴ画像を表します。部署ID=1は通常メイン会社を指します。 - 商品明細表:見積や請求の「商品/サービス明細」の一覧表を差し込むには、専用の変数を使用します。YetiForce標準では
$(custom : ProductsTableShortVersion)$という特殊変数が用意されており、これを本文に記述すると、その見積書/請求書レコードに紐づく商品一覧表が自動生成されます (PDF Template · Issue #11491 · YetiForceCompany/YetiForceCRM · GitHub)。この表には項目名(品名)、数量、単価、税額、小計などが含まれ、複数行の商品がある場合は自動的に行が展開されます。
- レコード固有の項目:
- レイアウト調整:HTMLテーブルやCSSスタイルを使ってレイアウトを整形できます。例えば、明細部分をより細かく制御したい場合、
<table>タグを用いて列幅や罫線をカスタマイズできます。YetiForce標準PDFエンジンはある程度のHTML/CSSに対応しています(CSS3の基本とHTML5に概ね対応) (YetiForce PDF Premium | YetiForce Documentation)が、すべてのスタイルが反映されるわけではありません。基本はインラインスタイルやシンプルな表組みでレイアウトを作成し、凝ったデザインや高度なCSSは避けたほうが無難です(必要なら有償エンジンの検討もあり)。 - 保存と確認:各セクションの編集が終わったらテンプレートを保存します。一度保存すれば、再度編集フォームを開いて内容を変更することも可能です(テンプレート一覧から編集アイコンをクリック)。編集後は実際にPDF出力してレイアウトを確認するようにしましょう(テスト出力方法は後述)。
4. ロゴ画像や会社情報の挿入方法
帳票には自社のロゴや会社情報(社名・住所・連絡先など)を載せるのが一般的です。YetiForceCRMでは会社情報(Company/Departments)モジュールに登録されたデータをPDFテンプレートに差し込む方法が推奨されています (I can’t upload the logo image or even add pictures to pdf templates · Issue #9945 · YetiForceCompany/YetiForceCRM · GitHub)。以下に代表的な方法を紹介します。
- 会社ロゴの表示:YetiForceの管理画面で**会社情報(Departments)**にロゴ画像をアップロードしておき、PDFテンプレート側でそのロゴ変数を呼び出します。手順は次の通りです (I can’t upload the logo image or even add pictures to pdf templates · Issue #9945 · YetiForceCompany/YetiForceCRM · GitHub):
- 会社情報にロゴを登録:管理メニュー「会社情報(Company)→ 部門(Departments)」にて、自社(部署)のレコードを編集し、ロゴ画像をアップロードして保存します。これで部署IDに対応するロゴがCRM上に保存されます。
- テンプレートにロゴ変数を挿入:PDFテンプレートのヘッダー(または適切な位置)のHTMLソースに、
$(organization: 部署ID|logo)$という変数を記述します (I can’t upload the logo image or even add pictures to pdf templates · Issue #9945 · YetiForceCompany/YetiForceCRM · GitHub)。例えば部署ID=1が自社メインの場合、$(organization: 1|logo)$とします。この変数がロゴ画像(要素相当)に置き換わり、PDF上に画像が表示されます。
<img>タグを書く必要はありません。変数展開によってシステムが適切に画像を埋め込みます。HTMLエディタで画像を直貼りする方法もありますが、セキュリティ上HTMLフィルタにより保存時に除去されてしまう可能性があります (I can’t upload the logo image or even add pictures to pdf templates · Issue #9945 · YetiForceCompany/YetiForceCRM · GitHub)。そのため、変数による埋め込みが推奨されます。 - 会社情報(テキスト)の挿入:社名、住所、電話番号などもCompanyモジュールに登録された値を差し込めます。例えば、
$(organization: 1|name)$で会社名、$(organization: 1|address)$で住所(※正確なフィールド名はシステム設定に依存)というように、対応する変数を記述します。これにより、会社情報を一元管理しつつテンプレートに反映できます。特に複数の会社/部署を運用している場合、IDを変えるだけで別部署の情報を差し込めるので便利です。 - 取引先情報の挿入:帳票の宛先となる取引先や顧客担当者の情報も、通常はレコードの関連として取得できます。見積書や請求書には取引先や連絡先の関連フィールドがあるため、たとえば
$(relatedRecord : account_id|accountname)$のような変数(書式は例)で顧客名を表示したり、$(relatedRecord : contact_id|firstname)$で担当者名を表示することが可能です。これらもテンプレートエディタの「変数挿入」機能を使って選択できる場合があります。 - 画像の直接挿入(上級編):変数ではなく手動で画像を挿入したい場合には、ストレージに画像ファイルを置いて参照する方法があります ([Question] Images in YetiForce-PDF: What is the right approach? · Issue #11018 · YetiForceCompany/YetiForceCRM · GitHub)。手順としては、YetiForceCRMの
storage/ディレクトリに任意の画像ファイル(例:社印画像など)を配置し、PDFテンプレートのHTMLに<img src="..." />タグでそのファイルを読み込みます。既定ではセキュリティ上、自サイトの画像であっても外部URLと見なされてブロックされるため、システム設定の許可ドメインに自社ドメインを追加する必要があります ([Question] Images in YetiForce-PDF: What is the right approach? · Issue #11018 · YetiForceCompany/YetiForceCRM · GitHub)($PURIFIER_ALLOWED_DOMAINSの設定にホスト名を追加)。この方法は煩雑なため、可能な限り上記の変数機能で対応することをおすすめします。 - 会社ロゴ・情報配置のポイント:ヘッダー領域に会社ロゴを左上に配置し、その右側に会社名・住所を縦に並べる、というレイアウトが一般的です。エディタ上で表(2カラム)を挿入し、左セルにロゴ変数、右セルに会社名や住所変数を入れて体裁を整えると良いでしょう。ロゴ画像の高さ・幅は必要に応じてHTML側でスタイル指定(例:
<img ... style="width:120px;">など)して調整します。住所など長い情報は適宜改行タグ(<br>)を用いて見やすく配置してください。
5. 日本国内向け帳票レイアウトへのカスタマイズ
日本で一般的に使用される見積書・請求書の様式に近づけるために、以下の点に注意してPDFテンプレートを調整します。
- フィールド項目名の日本語化:YetiForceCRM自体を日本語ローカライズしていれば、大半の項目ラベルは日本語表示になります。しかしPDFテンプレート内で独自に項目名を記載する場合(特に明細表のヘッダーなど)、適宜日本語表記に直しましょう。例えば、「Subject」を「件名」、「Quantity」を「数量」、「Unit Price」を「単価」などとします。変数で自動生成される部分について、システムが英語のまま出力する場合は、一旦テンプレート内で静的に日本語ラベルを書いてしまう方法もあります(例:明細表を自作する場合、列見出しとして直接「品名」「数量」等と記載)。帳票タイトルも「Quotation」ではなく「御見積書」といった表現に変更しておくと良いでしょう。必要に応じてテンプレートエディタ内で自由にテキスト編集してください。
- 明細表のレイアウト:標準の
$(custom : ProductsTableShortVersion)$変数で出力される明細表には、製品/サービス名、数量、単価、税額、小計などが含まれます。このレイアウトを日本の帳票スタイルに合わせたい場合、いくつか工夫が可能です。- 列の並び・幅調整:日本の見積書では一般的に「品名」「数量」「単価」「金額」の順で列が並びます。標準出力の順序が異なる場合や不要な列がある場合、出力結果に合わせてCSSで列幅を調整し見やすくすることができます(ただし、標準の明細テーブル変数は内部的にHTMLを生成しているため、完全な並び替えや列削除は難しい場合があります)。より柔軟に制御したい場合は、TextParserのカスタマイズによって独自の明細テーブル変数を作成することもできます (PDF Template · Issue #11491 · YetiForceCompany/YetiForceCRM · GitHub) (PDF Template · Issue #11491 · YetiForceCompany/YetiForceCRM · GitHub)(上級者向け、後述)。
- 日本円の表示形式:通貨の表示も日本式に揃えます。日本円では通常「¥10,000」あるいは「10,000円」のように表記します。YetiForceの通貨設定で「通貨記号の位置(prefix/suffix)」や小数点以下桁数を設定できますので、円の場合は記号を値の前に付け、小数点以下は0桁に設定します(管理メニュー「通貨設定」を確認してください)。標準のテーブル出力で通貨記号の位置が欧米式(値の後ろに記号)になっている場合、前述の通貨設定を変更するか、フォーマットを調整する必要があります (PDF Template · Issue #11491 · YetiForceCompany/YetiForceCRM · GitHub)。どうしても変更できない場合、極端な方法としてPDFテンプレート用のテーブル出力クラスを修正することも可能です (PDF Template · Issue #11491 · YetiForceCompany/YetiForceCRM · GitHub)。
- 税込・税抜表示:日本の請求書では消費税を明示する必要があります。YetiForceの見積/請求モジュールでは税額や合計金額のフィールドがありますので、これらもテンプレートに表示しましょう。例えば小計、消費税額、総計をそれぞれ
$(record : sum_total)$,$(record : sum_tax)$,$(record : sum_gross)$(フィールド名は仮例)といった変数で挿入できます。明細テーブル変数が自動で税額・合計行を出力しない場合は、本文セクションのテーブル下部に別途これらの変数を配置して、**「小計:〇〇円」「消費税(10%):〇〇円」「合計:〇〇円」**というように表記します。書式は社内の標準様式に合わせて設定してください。 - 日付や有効期限:見積書なら発行日や見積有効期限、請求書なら請求日や支払期日などを明記します。これらもレコードのフィールド値を差し込むことで自動化できます。和暦や年月日表記への変換が必要な場合は、システムの言語設定に依存しますが、必要に応じて変数に対する書式指定(例えば
$(record : datefield|format:yyyy年MM月dd日)$のような機能があれば利用)を検討します。直接テキストとして和暦等を入れる場合は都度手動更新が必要になるので注意してください。
- レイアウトの細部調整:日本の帳票では細かな体裁も重要です。以下の点にも配慮しましょう。
- フォントと余白:全体のフォントは読みやすいものを選びます。デフォルトでは欧文フォント(DejaVu Sans)が使用されますが、日本語フォントを適用することで見栄えが向上します(後述のマルチバイト対応参照)。ページ余白は、社用紙のレイアウトに合わせて上下左右を適宜設定してください。ヘッダーに社名ロゴを入れる場合は上余白を大きめに取るなど、PDF出力を見ながら調整します。
- 改ページ制御:明細行が多い場合、自動的に次ページに繰り越されます。複数ページに渡る場合でも項目名のヘッダーを各ページに表示したい時は、HTMLの表で
<thead>タグを使う方法があります。YetiForceのPDFエンジンは通常、表のを各ページ先頭に再描画します。ただしテーブル全体を変数で出力している場合、制御が難しいため、商品明細が多数になるケースではテンプレートの設計段階でレコードを分割するなど運用で対応することも検討してください。 - 社判や署名欄:必要に応じて代表者印や担当者サイン欄を設けます。画像で社判を入れる場合は前述の画像挿入方法で配置できます。また、PDFテンプレートではなく印刷後に捺印する運用もあるため、レイアウト上捺印欄(「□□会社 代表印」など)を用意しておくと良いでしょう。
以上の調整を行い、日本で一般的な様式(例えば請求書なら左上に自社情報、右上に相手先情報、タイトル中央、大枠表で明細と金額、小計・税込合計、振込先や注意事項を最後に記載、等)に近づけていきます。ポイントは、実際の紙の帳票をイメージして、必要な情報が過不足なく盛り込まれているか、見やすい配置になっているかを確認することです。
6. モジュールごとのテンプレート適用とPDF出力方法
テンプレートを作成しただけではPDFは出力されません。各モジュールのレコード画面から適用する手順が必要です。この節では、見積書モジュールを例にPDFを生成する手順を説明します。他の帳票系モジュール(請求書など)でも基本手順は同様です。
- テンプレートのモジュール適用:テンプレート作成時に紐付けたモジュール(例:Quotes)が、テンプレートの適用対象となります。1つのモジュールに対して複数のテンプレートを作成しておくことも可能です。例えば見積書のテンプレートを「社外提出用」「社内用控え」など複数用意し、用途に応じて使い分けることもできます。その場合、どのテンプレートを使用するかを出力時に選択します(後述)。
- PDF出力ボタンの表示:テンプレートが有効化されていれば、対象モジュールのレコード(明細画面)に「PDF」出力用のボタンまたはメニューが表示されます (Creating a PDF of a Quote · Issue #12620 · YetiForceCompany/YetiForceCRM · GitHub) (Creating a PDF of a Quote · Issue #12620 · YetiForceCompany/YetiForceCRM · GitHub)。場所は画面UIにより異なりますが、一般的にはレコード詳細ビューの上部メニューに「PDF出力」アイコン(プリンタやPDFのシンボル)が追加されるか、操作(アクション)ドロップダウンメニュー内に「PDFエクスポート」項目が出現します。日本語環境では「PDF出力」や「PDF作成」といった表示になっている可能性があります。
- テンプレートの選択:複数テンプレートがある場合、PDF出力操作を実行するとテンプレート選択のポップアップやドロップダウンが表示されます。ここで使用したいテンプレート(名前)を選びます。1つしかなければ自動的にそれが選択されます。例えば「見積書 標準フォーマット」と「見積書 簡易版」があれば、出力時にどちらかを選べます。デフォルトに設定されたテンプレートがある場合、UIによってはワンクリックでデフォルトテンプレートのPDFを直接ダウンロードするボタンが表示され、その他のテンプレートは別途選択する形式になることもあります。
- PDFの生成とダウンロード:テンプレート選択後、システムがPDFを生成します。通常は数秒以内に処理が完了し、ブラウザのダウンロードが開始されるか、新しいタブでPDFプレビューが表示されます。環境設定やブラウザ設定によりますが、ファイル名は「見積番号.pdf」などレコードに紐づく名前で出力されます。注意:PDF生成に失敗した場合(真っ白なPDFやエラーメッセージが表示された場合)は、後述のデバッグ手順を参考に原因を確認してください。
- メールへの添付:YetiForceCRMには、生成したPDFをそのままメールに添付して送信する機能もあります。例えば取引先への見積送付メールを作成する際、メール作成画面から「PDF添付」オプションで対象テンプレートを指定すると、PDFファイルを自動添付してメール送信できます (Release notes | Changelog | YetiForce Documentation)(設定によりメニュー名や手順は異なりますが、「メールにPDFを添付(Send Email with PDF)」機能があります)。このように、PDFテンプレートは印刷・保存だけでなく、システム内の他機能(メール送信やワークフロー自動送信)と連携して活用することも可能です。
7. PDFテンプレートのテスト出力とデバッグ方法
テンプレートを作成・編集したら、必ずテスト出力して期待通りのPDFになっているか確認しましょう。テストと微調整を繰り返すことで、不具合のない帳票レイアウトを完成させます。ここではテスト時にチェックすべきポイントと、問題発生時のデバッグ方法を解説します。
- テスト用レコードの用意:まず、出力対象モジュール(見積書等)で十分なデータが入ったレコードを用意します。複数の明細行、長めの項目値、日本語の文字列など、実際の運用に近いデータを含むレコードを選ぶとよいでしょう。テスト環境があれば理想的ですが、本番で試す場合は念のためダミーの見積書を登録してそれで試すことをおすすめします。
- 出力結果の確認:前述の手順でPDFを生成し、内容を確認します。以下にチェックポイントを挙げます。
- レイアウト:要素の位置や順序が意図したとおりになっているか。ズレや重なり、改ページ不自然な箇所がないか。
- フォントと文字化け:日本語が正しく表示されているか(□や�?といった豆腐文字になっていないか)。意図したフォントが適用されているか。
- 項目データ:すべての差し込みフィールドが正しい値を表示しているか。空欄になるべきでない箇所が空になっていないか(変数のタイプミスによる未展開などに注意)。
- 数値計算:金額の合計や税額など計算結果が正しいか。桁区切りや通貨記号の位置も確認します。
- 画像:ロゴや印影など画像が正しく表示されているか。サイズや解像度も適切か確認します。
- ページング:ページ番号(もし入れていれば)が正しく振られているか。複数ページの場合の繰り越しレイアウトに不自然な点はないか。
- 問題発生時の対処:もし出力結果に問題があった場合、以下のような対応でデバッグします。
- レイアウト崩れ:HTMLソースを再チェックします。タグの閉じ忘れや入れ子構造の不備があるとレイアウトに影響します。WYSIWYGエディタで整えた際に不要なタグが入っていないかも確認してください。一度シンプルな内容で出力し、徐々に要素を増やして問題箇所を切り分ける方法も有効です。
- 変数が展開されない/誤っている:変数名のスペルミスや誤用を疑います。テンプレート編集画面で正しいフィールドを選び直す、あるいは公式の変数リファレンスと照合してください。例えば
$(record : organizationname)$のように書いたが値が入らない場合、正しくは$(relatedRecord : account_id|accountname)$等モジュールに応じた書式で書く必要がある、といったケースがあります。 - 画像が表示されない:まず変数方式で埋め込んでいる場合、Companyモジュールにロゴがアップされているか確認します。直接タグを書いている場合、HTMLフィルタにより削除されていないかを疑います (I can’t upload the logo image or even add pictures to pdf templates · Issue #9945 · YetiForceCompany/YetiForceCRM · GitHub)。保存後にソースを再度開き、
<img>タグが残っているか確認してください。消えていた場合、前述のPURIFIER許可ドメイン設定が適切か見直します ([Question] Images in YetiForce-PDF: What is the right approach? · Issue #11018 · YetiForceCompany/YetiForceCRM · GitHub)。ドメイン指定が正しく行われていないと、システムは外部リソースと見なして画像タグを除去します。設定変更後は再度テンプレートHTMLにタグを挿入し直してください。また、画像パスが正しいか(スペルや大文字小文字)も確認します。代替策として、画像をBase64エンコードして直接埋め込む方法もあります(<img src="data:image/png;base64,......">)が、文字数が多くなり編集しづらいため、基本は変数または許可ドメイン設定で対処します。 - 日本語が文字化け・非表示:これはフォント問題である可能性が高いです。標準フォントのDejaVu Sansは多言語対応ですが、日本語のグリフは含まれていません (GitHub – YetiForceCompany/YetiForcePDF: The best library in the world to generate PDF from HTML)。そのためPDF中で日本語が表示されない場合、カスタムフォントの組み込みが必要です(次節参照)。一時的にPDF Premiumエンジンが利用可能なら切り替えてみるのも一案です。Premiumではシステムフォントを使うため日本語も問題なく表示されます (YetiForce PDF Premium | YetiForce Documentation)。
- PDF生成エラー:稀に、PDF出力時にエラーメッセージ(例:「TCPDF ERROR」など古いバージョンの場合)や空白のPDFが返ることがあります。原因として考えられるのは、HTMLの構文エラー、大きすぎる画像の埋め込み、サーバー側ライブラリの不具合などです。まずはYetiForceCRMのログ(
/logs/フォルダやサーバーのPHPエラーログ)を確認しましょう。ログにはテンプレート処理中のエラー内容が出力されている可能性があります。不明なエラーの場合、公式フォーラムやGitHubのIssueを検索すると類似事例が見つかることもあります (Quotes pdf template TCPDF ERROR: [Image] · Issue #154 · YetiForceCompany/YetiForceCRM · GitHub) (Quotes pdf template TCPDF ERROR: [Image] · Issue #154 · YetiForceCompany/YetiForceCRM · GitHub)。エラーメッセージを元に、問題の原因(例えば「指定画像のサイズ取得に失敗」など (Quotes pdf template TCPDF ERROR: [Image] · Issue #154 · YetiForceCompany/YetiForceCRM · GitHub))を突き止め、該当箇所を修正します。
- 修正と再テスト:問題箇所を修正したら再度PDFを出力して確認します。必要に応じてこのPDCAサイクルを繰り返してください。特に日本語帳票は英語と比べてフォントやレイアウトの調整がシビアですので、細かな点も見逃さず確認しましょう。最終的に実運用で使える品質のPDF帳票が得られたら完成です。
8. カスタムフォントの追加とマルチバイト(日本語)対応のポイント
**日本語を正しくPDFに表示するには、日本語対応フォントを使用する必要があります。**YetiForceCRM標準のPDFエンジンでは、デフォルトフォントとして「DejaVu Sans」が組み込まれていますが、残念ながら日本語の文字は含まれていません (GitHub – YetiForceCompany/YetiForcePDF: The best library in the world to generate PDF from HTML)。そのため、テンプレート内に日本語(マルチバイト文字)を含む場合はカスタムフォントの導入が重要になります。
- フォントファイルの用意:まず、日本語のフォントファイル(TrueType形式の*.ttfなど)を用意します。オープンソースのものでは「Noto Sans JP」や「IPAゴシック」などが利用できます。ファイルサイズが大きすぎないものを選ぶとよいでしょう(PDFサイズにも影響するため)。
- フォントファイルの配置:用意したフォントファイルをサーバ上のYetiForceCRMディレクトリ内に配置します。おすすめはstorageフォルダ配下です。例えば
/storage/fonts/フォルダを作成し、その中にNotoSansJP-Regular.ttf等のファイルをアップロードします ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub) ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。storage以下であればYetiForceアップデート時にも消されにくく、安全です。 - HTMLでのフォント登録:YetiForceのPDFエンジン(YetiforcePDF)では、HTML内に特殊な
<div data-font>タグを入れることでカスタムフォントを登録できます (GitHub – YetiForceCompany/YetiForcePDF: The best library in the world to generate PDF from HTML)。テンプレートのHTMLソース先頭に、以下のようなコードを追加します(例として「Noto Sans JP」を登録する場合)。<div data-font data-family="Noto Sans JP" data-weight="400" data-style="normal" data-file="/storage/fonts/NotoSansJP-Regular.ttf"></div> <div data-font data-family="Noto Sans JP" data-weight="700" data-style="normal" data-file="/storage/fonts/NotoSansJP-Bold.ttf"></div>各data-fontエントリでフォントの属性を指定しています (GitHub – YetiForceCompany/YetiForcePDF: The best library in the world to generate PDF from HTML):data-family:フォントファミリ名(任意の識別名。スペース含む場合は引用符で囲む)。data-weight:フォントの太さ(400=通常、700=ボールドなど)。data-style:スタイル(normalまたはitalic)。data-file:フォントファイルのサーバ上絶対パス。
font-family: 'Noto Sans JP'; font-weight:700;のような指定を行うとそのフォントが適用されます ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。日本語テキストを含む要素(例えば本文全体)にこのフォントを適用することで、日本語も正しくPDFに埋め込まれ表示されるようになります。 - 注意:HTMLフィルタ:
<div data-font ...>は通常のHTMLではない特殊タグのため、YetiForceCRMのエディタが保存時にこのタグを削除してしまう場合があります ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。実際、過去のバージョンではエディタ経由で上記コードを入力しても保存後に消えてしまう事例が報告されています ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。対処法として、直接データベースを編集してタグを挿入する、高度なカスタムPHPコードでフォント登録する、といった開発者向けの方法もあります ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub) ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)が、一般ユーザにはハードルが高いため、まず以下の方法を試してみてください。- エディタのソースモードで
<div data-font>タグを追加したら、保存ではなく一度プレビューを行ってみます(可能であれば)。または一度だけ保存してすぐ再編集せずに、そのまま次のステップでPDF出力テストをしてみます。エディタ上は消えて見えてもデータとして保持されているケースも考えられます。 - それでフォントが効かなければ、システムのHTML Purifier設定で許可タグに
divのdata-font属性を追加できないか調べます(ただし通常はコード変更が必要)。 - 最終手段として、サーバの
vendor/yetiforce/yetiforcepdf/lib/Fonts/にフォントファイルを置き、vendor/yetiforce/yetiforcepdf/lib/Objects/Font.php内の$customFontFiles配列にフォントを登録するという方法があります ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub) ([Question]: Own PDF-Templates and PDF-Custom Fonts where to upload? · Issue #11016 · YetiForceCompany/YetiForceCRM · GitHub)。これはYetiForcePDFライブラリ自体への改変になるため、アップデート時の維持に注意が必要ですが、確実にフォントを追加できます。
- エディタのソースモードで
- PDF Premiumエンジンの利用(代替策):どうしても標準エンジンで日本語フォント組み込みが難航する場合、有償のYetiForce PDF Premiumエンジンを導入する選択肢もあります。PDF PremiumはChromiumブラウザを使ってPDFを生成するため、Webページと同等のフォント描画が可能で、日本語も標準で問題なく表示できます (YetiForce PDF Premium | YetiForce Documentation)。Chrome上で日本語フォントを読み込む形になるので、@font-faceでWebフォントを読み込んだり、サーバにインストールした日本語フォントを使うこともできます。PDF Premiumは年間購読が必要ですが、帳票の日本語対応や高度なデザイン(CSS3完全対応等 (YetiForce PDF Premium | YetiForce Documentation))を重視する場合には検討する価値があります。導入方法はマーケットプレイスから購入後、Chromiumのパスを設定するなど (PDF | YetiForce Documentation) (PDF | YetiForce Documentation)の手順となります(詳細は公式ドキュメント (YetiForce PDF Premium | YetiForce Documentation)を参照)。
- 文字エンコーディング:通常、YetiForceCRMはUTF-8環境ですので、日本語テキストもUTF-8で保存・処理されています。PDF生成時もUTF-8が前提となっているため、特別な設定変更は不要です。ただし、テンプレート内に直接入力した記号類(例:「①」などの丸数字や機種依存文字)はフォントによっては表示されない可能性があります。可能な限り一般的な文字で記載するか、どうしても必要な場合は画像化して埋め込むなど工夫してください。
以上が日本語対応のポイントです。特にフォント設定は難所ですが、一度適切に組み込めば以降の帳票すべてで日本語が崩れず表示されるようになります。要点としては、「フォントファイルを用意し、システムに認識させ、日本語テキスト部分にそのフォントを当てる」ことです (GitHub – YetiForceCompany/YetiForcePDF: The best library in the world to generate PDF from HTML)。PDFは表示環境に依存せず埋め込まれたフォントで描画されますので、自社で使うフォントが相手先でも反映される点も安心です。
以上、YetiForceCRM 7.0.x系におけるPDF帳票出力機能の使い方を詳述しました。見積書・請求書のPDFテンプレートを作成・調整することで、日常業務の帳票作成を大幅に効率化できます。実際の画面操作や追加のオプションについては、公式ドキュメントやコミュニティフォーラムも参考にしてください(例えば (YetiForce PDF Premium | YetiForce Documentation)にPDF機能の概要説明があります)。このマニュアルを参考に、自社のフォーマットに合った美しいPDF帳票をYetiForceCRM上で実現してください。
参考文献・リンク:YetiForce公式ドキュメント(PDF Premium説明 (YetiForce PDF Premium | YetiForce Documentation)など)、GitHub Issue解説 (I can’t upload the logo image or even add pictures to pdf templates · Issue #9945 · YetiForceCompany/YetiForceCRM · GitHub) (PDF Template · Issue #11491 · YetiForceCompany/YetiForceCRM · GitHub)他。