今日は、Visualforceで作成したPDFファイルを、ボタン押下時に「メモ&添付ファイル」に保存する方法をご紹介。
○PDFファイル
まず、PDFファイルをVisualforceで作成します。
名前:PdfPage
This is PDF File.
○添付ファイル保存Apex
次に、PDFファイルを「メモ&添付ファイル」に保存するApexを作成します。
カスタムボタンのJavaScriptから呼び出せるようにWebServiceメソッドにし、PDFファイルを保存するレコードのIDを引数で受け取るようにします。
Page.<Visualforceページ>.getContent()で、Visualforceページの本文のデータが取得できます。
global class PdfUtil {
WebService static void create(ID id) {
// 添付ファイルに登録
Attachment attachment = new Attachment();
attachment.Name = 'Test.pdf'; // ファイル名
attachment.Body = Page.PdfPage.getContent(); // 本文
attachment.ParentId = id; // 関連先
insert attachment;
}
}
○カスタムボタン
最後に、上記で作成したApexを呼び出すカスタムボタンを作成し、ページレイアウトに表示します。ここでは、Test__cというオブジェクトにカスタムボタンを作成しています。
表示の種類:詳細ページボタン
動作:JavaScriptを実行
内容のソース:OnClick JavaScript
{!REQUIRESCRIPT('/soap/ajax/20.0/connection.js')}
{!REQUIRESCRIPT('/soap/ajax/20.0/apex.js')}
sforce.apex.execute(
'PdfUtil', 'create', {id:'{!Test__c.Id}'});
document.location.reload();
alert('PDFファイルを作成しました。')
動作はこんな感じ↓
ボタン押下後