AdvanceSoftware Tech Blog

アドバンスソフトウェア株式会社の技術ブログ

AS-Report12で出力PDFファイルに電子署名とタイムスタンプを付与する

AS-Report 12.0 for .NETでは、新機能として、出力するPDFファイルに電子署名、タイムスタンプを付与することが可能となりました。この記事では、当製品にて出力PDFファイルに電子署名、タイムスタンプを付与する方法について説明します。

環境

Windowsフォームアプリケーションの作成

新規にWindowsフォームアプリケーションの作成をします。

新規プロジェクト作成

VisualStudio 2022を起動し、[新しいプロジェクトの作成]をクリックします。

次に、"Windowsフォームアプリ"を選択して[次へ]をクリックします。

画面の各項目をそれぞれ設定して[次へ]をクリックし、"追加情報"の画面でフレームワークを選択後、[作成]をクリックしてプロジェクトを立ち上げます。

AS-Report12使用準備

プロジェクトが立ち上がったら、[ソリューションエクスプローラー]から[依存関係]を右クリック - [Nugetパッケージの管理]からNugetパッケージマネージャーを開きます。

[パッケージソース]が"nuget.org"になっている事を確認して、参照タブの検索バーから "AdvanceSoftware.ASReport.CellReport"を検索し、一覧に表示されるパッケージをインストールします。

※依存関係にある外部ライブラリをインストールするため、製品のインストールはオンライン環境で行って頂く必要がございます。

Nugetパッケージのインストールが完了したら、[表示] - [ツールボックス]からCellReportとボタンコントロールをフォーム上に張り付け、ボタンコントロールをダブルクリックしてボタンのクリックイベントを実装します。

ツールボックスにCellReportが表示されない場合、以下をお試しください。

電子署名、タイムスタンプの付与

出力PDFファイルに電子署名、タイムスタンプを付与する方法を説明します。
(※タイムスタンプ付与の際にはインターネットへの接続が必要となります。)

ローカル証明書(pfx)データで電子署名を付与する

コード例(C#)

// 連絡先に"info@adv.co.jp"を設定します。
cellReport1.Pdf.Signature.Contact = "info@adv.co.jp";
// 署名時刻に2025/4/1 12:00:00を設定します。
cellReport1.Pdf.Signature.Date = new DateTime(2025, 4, 1, 12, 0, 0);
// 場所に"日本"を設定します。
cellReport1.Pdf.Signature.Location = "日本";
// 理由に"稟議"を設定します。
cellReport1.Pdf.Signature.Reason = "稟議";
// ローカル証明書(pfx)データに"C:\Certificate.pfx"ファイルの内容を設定します。
cellReport1.Pdf.Signature.CertificateData = System.IO.File.ReadAllBytes(@"C:\Certificate.pfx");
// ローカル証明書(pfx)データのパスワード"pass"を設定します。
cellReport1.Pdf.Signature.CertificatePassword = "pass";

電子署名にタイムスタンプを付与する

コード例(C#)

// タイムスタンプサーバーのURL "https://freetsa.org/tsr"を設定します。
cellReport1.Pdf.Signature.TimeStampUrl = "https://freetsa.org/tsr";
// タイムスタンプサーバーの ユーザー名"user"を設定します。
cellReport1.Pdf.Signature.TimeStampUser = "user";
// タイムスタンプサーバーの パスワード"pass"を設定します。
cellReport1.Pdf.Signature.TimeStampPassword = "pass";

PDFファイルの出力

ボタンコントロールのクリックイベントにコードを追記して、電子署名、タイムスタンプを付与したPDFファイルを出力します。

コード例(C#)

cellReport1 = new AdvanceSoftware.ASReport.CellReport();
cellReport1.Report.Start();
cellReport1.Report.Create(AdvanceSoftware.ASReport.ExcelVersion.ver2024);
cellReport1.Page.Start("Sheet1", "1");
cellReport1.Cell("A1").Value = "PDF ファイルの署名をご確認ください。";
cellReport1.Page.End();

// 連絡先に "info@adv.co.jp" を設定します。
cellReport1.Pdf.Signature.Contact = "info@adv.co.jp";
// 署名時刻に 2025/4/1 12:00:00 を設定します。
cellReport1.Pdf.Signature.Date = new DateTime(2025, 4, 1, 12, 0, 0);
// 場所に "日本" を設定します。
cellReport1.Pdf.Signature.Location = "日本";
// 理由に "稟議" を設定します。
cellReport1.Pdf.Signature.Reason = "稟議";
// ローカル証明書(pfx)データに "C:\Certificate.pfx" ファイルの内容を設定します。
cellReport1.Pdf.Signature.CertificateData = System.IO.File.ReadAllBytes(@"C:\Certificate.pfx");
// ローカル証明書(pfx)データのパスワード "pass" を設定します。
cellReport1.Pdf.Signature.CertificatePassword = "pass";

// タイムスタンプサーバーの URL "https://freetsa.org/tsr" を設定します。
cellReport1.Pdf.Signature.TimeStampUrl = "https://freetsa.org/tsr";
// タイムスタンプサーバーの ユーザー名 "user" を設定します。
cellReport1.Pdf.Signature.TimeStampUser = "user";
// タイムスタンプサーバーの パスワード "pass" を設定します。
cellReport1.Pdf.Signature.TimeStampPassword = "pass";

cellReport1.Report.End();
// PDFファイルを出力します。
cellReport1.Report.SavePdf(@"C:\Out.pdf");

出力結果

最後に

AS-Report12で出力PDFファイルに電子署名とタイムスタンプを付与する方法について解説してきました。
今回は以上です、ありがとうございました。
AS-Report12製品ページはこちら
AS-Report12体験版はこちら

© 2022 Advance Software Co., Ltd. All Rights Reserved.