1. ホーム
  2. Web制作
  3. html5

キャンバスをベースにしたHTML5で電子署名を実現、PDF文書も生成可能

2022-01-11 05:15:51

プリアンブル

電子署名とは、一般に技術的手段により電子文書に読み込まれた電子形式の署名のことであり、その役割は手書きの署名や紙の契約書への公印と同様である。電子署名の合法性については長年疑問視されてきましたが、企業のワークフロー承認や招待状、文書保存などの場面で広く利用されており、最近のプロジェクトでもこのような手書き署名やPDF文書生成のニーズがあります。

実装の考え方

  • キャンバスを使って手書きのサインを実装し、キャンバスを画像に変換してサインの場所に貼り付ける。
  • html2canvas プラグインを使用して、ドキュメントを生成する必要がある dom 領域全体を 1 つの大きな画像に変換する。
  • JsPDFプラグインを使用して、上記画像からPDF文書を生成する。
  • 内容の大きな文書では、ページング位置を合理的に選択する必要性があること。

署名の生成

1. TSXでキャンバスを定義する

httpd.conf

C:\Program Files\Apache Software Foundation\Apache2.2\conf : Canvas タグは、デフォルトで 300px x 150px の幅と高さを持つため、Canvas の幅と高さはインラインで定義する必要があります。そのインラインスタイルでは、幅と高さは、グラフィックスを描画する領域(キャンバス)の実際の幅と高さに定義されます。その幅と高さがスタイル外部リンクファイルで定義されている場合、この幅と高さは、ブラウザでレンダリングされるキャンバスの高さと幅になります。幅と高さが Canvas で直接定義されていない場合、または値が正しくない場合は、デフォルト値 {width:300px, height:150px} に設定されます。つまり、スタイル外部チェーン ファイルで canvas {width: 200px; height: 200px;} を設定しても、canvas の幅と高さを直接定義していなければ、canvas.height の値が 150 で canvas.width の値が 300 で出力されることになります。つまり、150×300 の canvas が 200×200 の領域にレンダリングされるため、画像が引き伸ばされたり、歪んだりするなどの問題が発生します。

2. シグネチャー関数の定義

SetEnv GIT_PROJECT_ROOT C:/Users/Tommy/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
        "(?x)^/git/(. */(HEAD | \
                        info/refs | \
                        objects/(info/[^/]+ | \
                                 [0-9a-f]{2}/[0-9a-f]{38} | \
                                 pack/pack-[0-9a-f]{40}\. (pack|idx)) | \
                        git-(upload|receive)-pack))$" \
                        "C:/Program Files/Git/libexec/git-core/git-http-backend.exe/$1"
 
<Directory "C:/Program Files/Git/libexec/git-core/">
  Allow From All
</Directory>

3. 試聴イベントへの登録

git init --bare sandbox.git

D:\Work>git clone http://127.0.0.1/git/sandbox.git Cloning into 'sandbox'... warning: You appear to have cloned an empty repository.