🐴
Salesforce:"RenderAs:PDF" としたときに日本語が表示されない問題
はじめに
<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