« 画面のURLとURLパラメータ | メイン | Google Chrome 拡張機能 「Force.com Utility Belt」 »

2011年8月 3日 (水)

ボタン押下時にPDFファイルを添付する方法

今日は、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ファイルを作成しました。')



動作はこんな感じ↓

ボタン押下前
20110803_1

ボタン押下後

20110803_2

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。

採用情報

株式会社フレクトでは、事業拡大のため、
・Salesforce/Force.comのアプリケーション開発
・HerokuやAWSなどのクラウドプラットフォーム上
でのWebアプリケーション開発
エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみたい方、
是非ご応募下さい。

フレクト採用ページへ

会社紹介

  • 株式会社フレクトは、
      ・認定コンサルタント
      ・認定上級デベロッパー
      ・認定デベロッパー
    が在籍している、セールスフォースパートナーです。
    また、heroku partnersにも登録されています。
    herokuパートナー
    株式会社フレクト
    Salesforce/Force.com
    導入支援サービス
    弊社の認定プロフェッショナルが支援致します。
    ・Visualforce/Apexによるアプリ開発
    ・Salesforceと連携するWebアプリ開発
    も承っております。
    セールスフォースご検討の際は、
    お気軽にお問合せください。

Twitter

リファレンス

■Developer's Guide(リファレンス)
・Apex  HTML | PDF | 日本語PDF | ガバナ制限
・Visualforce  HTML | PDF
・Web Services API  HTML | PDF | 日本語PDF
・Bulk API  HTML | PDF
・REST API  HTML | PDF | 日本語PDF
・Metadata API  HTML | PDF
・Migration Tool  HTML | PDF
・AJAX Toolkit  HTML | PDF
・Data Loader PDF | 日本語PDF

■早見表 (日本語)
数式
Apex
Visualforce
Web Services API
Chatter