CASE & ACTIVITY
インフォテックの取り組み
  • 調査・研究

Salesforceで手書きサイン入力を実装する方法

タブレットPCを活用したビジネスでは、署名等の手書きサインの要望を頂くことがあります。
例えば、契約などの手続きにおいて取引先責任者の署名が必要など、Salesforce上でも手書きサインが必要になる場合があります。

本稿では、Visualforceページ上に手書きサインをしてPDF出力する方法として、
VisualforceとjQueryプラグインを活用した実装方法の一例をご紹介します。

jQueryプラグインは「jSignature」を利用します。
このプラグインは、WEBブラウザ上に手書きサインを導入したい時に活用できるプラグインの一つです。

画面イメージ

【初期画面】
グレーのエリアが手書き入力するエリアになります。

【手書き入力】
グレーの枠内でスタイラスペンや指で、電子サインを記入することができます。

【手書きサインの画像化】
「確定」ボタンを押下し、手書きサインを画像化します。

【PDF出力】
「PDF出力」ボタンを押下し、画像化した手書きサインをPDF出力します。

 

サンプルソース

Visualforce(一部抜粋)

 

Apex(一部抜粋)

 

実装手順

jSignatureを静的リソースに登録

GithubからjSignatureをダウンロードし、実装するSalesforce環境の静的リソースに登録します。

登録した資産は3つです。
ダウンロードしたjSignatureのlibs内の「jSignature.min.noconflict.js」「jquery.js」「modernizr.js」です。

手書きサイン入力エリアの定義

入力エリアの定義

<div id=”signature”>が手書きサインの入力エリアになります。
Javascriptで制御されるので、Visualforceではdivタグだけ定義します。

Javascriptは、jSignatureのサンプルが参考になります。
画面読み込み時の初期設定と、線を引くための設定を定義します。

Visualforce

Javascript

 

ボタンの配置

<div id=”tools” style=”text-align:right;”>は「確定」「クリア」ボタンを配置するためのエリアです。
必要なボタンをバインドさせることで、手書きサインの削除等の操作ができます。

Visualforce

Javascript

 

手書きサインの画像化

手書きサインはPDF出力が可能です。
ただし、Visualforce PDFでは URI スキーム形式で符号化された画像はサポートされていません。
手書きサインを画像ファイルとして一度保存しておく必要があります。

今回は、画像化した手書きサインを対象の取引先責任者の添付ファイル(Attachment)として保存します。
添付ファイルに保存した手書きサイン画像をPDF出力時に読み込むことで、手書きサイン画像をPDFに埋め込みます。

実装のポイントは2つです。

  1. JavascriptからApexクラスを呼ぶので、actionfunction(saveFunc)を定義します。
  2. 手書きサインの入力チェック
    if($sigdiv.jSignature(‘getData’,’base30′)[1].length>1)
    何も入力がなかった場合はlengthが0となり、saveFunc()は呼ばれないようにしています。

Visualforce

 

APEX

 

PDF出力処理の実装

手書きサイン画像は、添付ファイル(Attachment)に保存した画像を読み込みます。

Visualforce

 

大変だったこと

手書きサインがPDFに表示されない

「PDF」ボタンを押下し、PDFが出力させる処理を作成しましたが、
出力されたPDFに手書きサインの画像データが表示されない事象が発生しました。
表示されない原因は、手書きサインの画像データがURI スキーム形式だったことです。
前述でも記載しましたが、Visualforce PDFは URI スキーム形式で符号化された画像はサポートされていません。

今回の対処方法は、手書きサインを画像化して添付ファイル(Attachment)に保存することで対処しました。