Visualforceを使わずにApexのみでPDFを作る(Spring’26)

technologies

ベンジャミンのヤマノウチです。

Spring’26からVisualforceを経由せずにApexだけでPDFを作成できる、というので試してみました。

1:Spring’26時点では有効化の必要があるので有効化する

 ※くれぐれも影響のないSandboxやDeveloper環境などでお試しください

1.1:設定で「リリース更新」を検索、リリース更新を選択。「Use Visualforce PDF Rendering Service with Apex Blob.toPdf()」の「使用開始」ボタンを押下する。

1.2:「テスト実行を有効化」を押下する

2:開発者コンソールで以下のコードを実行する

いったん「請求書」としてますがなんでもよいと思います。

// 1. 変数の定義
String accName = '株式会社ベンジャミン';

// 2. HTMLの組み立て
// 新しいエンジンでは Arial Unicode MS を指定することで日本語が描画されます
String html = '<html><head><style>' +
              'body { font-family: "Arial Unicode MS"; }' +
              'h1 { color: #1797E8; border-bottom: 1px solid #ccc; }' +
              '</style></head><body>' +
              '<h1>請求書</h1>' +
              '<p>取引先名: ' + accName + '</p>' +
              '<p>このPDFは Spring \'26 の Blob.toPdf() で生成されました。</p>' +
              '</body></html>';

// 3. PDF変換(設定が有効なら、ここでHTMLがレンダリングされます)
Blob pdfBlob = Blob.toPdf(html);

// 4. ファイルとして保存
ContentVersion cv = new ContentVersion();
cv.Title = 'Spring26_Invoice_Test.pdf';
cv.PathOnClient = 'Spring26_Invoice.pdf';
cv.VersionData = pdfBlob;
insert cv;

System.debug('PDFの生成に成功しました。ID: ' + cv.Id);

3:結果を確認する

ファイルタブから「Spring26_Invoice_Test.pdf」を探して開く、あるいはプレビューする

考え方としてはBlob.ToPdf()のメソッドがHTMLを読み込めるようになった、と理解したのでよさそうです。もともとPDF作るだけならできてた・・・?のかもですが、マルチバイト(日本語含む)対応含め今回のリリースでの適用とのことです。フォントの制約もありそうです。がっつり作ろうと思ったらまだまだ検証が必要ですが、ちょっとしたものならこれで十分かもしれませんね。

Related posts