🐴

Salesforce:"RenderAs:PDF" としたときに日本語が表示されない問題

2021/01/11に公開

はじめに

<apex:page renderAs="pdf">

apex:page タグのプロパティを変更することで、VisualforceページをPDFファイルとして表示する事ができる。

問題

renderAs="pdf"とすると、2バイト文字(日本語とか)が表示されない

renderAs="pdf" なし

renderAs="pdf" あり

結論

Arial Unicode MSを利用する。
フォントが汚ねぇ!って言われたら泣くしかない。

日本語表示できるようにフォント指定したVFページ

<apex:page id="Page" standardStylesheets="false" showHeader="false" sidebar="false"  applyHtmlTag="false"  renderAs="PDF" >
 
<head>
  <style>
  @page {
    size: 8.27in 11.69in;
    padding: 0;
  }
  body {
    font-family: Arial Unicode MS;
    font-size: 10pt;
    text-align: left;
  }
  </style>
</head>
 
<body>
  <div>
    <p>I am a horse . </p>
    <p>私は馬です。</p>
  </div>
</body>
 
</apex:page>

出力画面

RenderAsPDFを使いたいがUS Gothicを使いたくない場合

イケてる解決策はまだ見つからず。。。

暫定策

RenderAs:PDF を消し、Googleフォントを使う。
PDF出力したい場合はブラウザの印刷機能を使う。

<apex:page docType="html-5.0" standardController="Account" >
<style type="text/css">
p {
  margin: 1mm;
  padding: 0;
  color: #000000;
  font-family: 'Noto Serif JP', serif;
  font-face:'Noto Serif JP';
  sans-serif;
  font-size: 11pt;
  font-weight: normal;
    font-weight: bold;
  -webkit-print-color-adjust: exact;
}
    </style>
    <head>
    <link href="https://fonts.googleapis.com/css?family=Noto+Serif+JP&display=swap" rel="stylesheet"/>
    </head>
    <p>I am a horse .</p>
    <p>私は馬です</p>
    <div>
    あああああ
    </div>
    </apex:page>

出力画面

Discussion