フッターコンテンツにスキップ
IRONPDFの使用

IronPDFを使ってオンライン申請フォームをPDF要約にする

データベース内にのみ存在するフォームデータの問題点

IronPDFホームページ。 顧客が住宅ローン申請、保険見積もり、または新入社員の入社手続き書類といった、複数のステップからなるWebフォームに入力すると、そのデータはデータベースの行またはJSONペイロードとして保存されます。 それで終わりです。 PDF文書はありません。 お客様からは、提出された内容の印刷可能な記録やPDFファイルは提供されていません。 40分かけて収入の詳細を入力し、書類をアップロードしたばかりの借り手は、"お申し込みを受け付けました"という確認メールを受け取るだけで帰ることになります。PDF形式で保存できる書類は何もなく、書類の整合性に関して紛争が生じた場合に参照できる資料もありません。

コンプライアンス上の問題はより深刻です。 監査チームは、申請者が"送信"をクリックした瞬間に、申請者が提出した文書全体の内容を正確に把握できるスナップショットを必要とすることがよくあります。 社内のレビュー担当者は、スクリーンショットを撮ったり、WORDにコピー&ペーストしたりすることで、その不足を補っています。 これらの方法のいずれも、標準的で再現性のあるレコードを生成したり、ドキュメントの構造を保持したりすることはできません。 監査人が元のローン申請書の提出を求めた際、"データベースからエクスポートして書式を整えてきます"といった回答は避けるべきです。本日は、IronPDFがこうした課題の解決策となり得る理由について解説します。

解決策:送信時に C# で PDF を生成する

Iron SoftwareのIronPDFライブラリを使用することで、.NETアプリケーションや.NET Coreシステムは、HTMLや送信されたフォームデータを、ブランド化されたPDF文書に即座に変換することができます。 この .NET PDF ライブラリを使用すると、チームが確認ページで既に使用しているのと同じ HTML コンテンツや Web 技術を、PDF 生成のテンプレートとして活用できます。 有料のサードパーティ製ドキュメント生成APIは存在しません; PDFの作成は、既存のアプリケーション内で実行されます。

生成されたPDFは申請者にメールで送信され、バックオフィスの文書ワークフローのためにPDFビューアや文書管理システムに保存されます。 ドキュメントのワークフローを自動化することで、レビュー担当者は標準化された最終ドキュメントを受け取ることができます。 ユーザーがどのウェブページにアクセスしたかに関わらず、すべての送信に対して同じ高品質なPDFが生成されます。

実際の動作例:フォームデータからPDFファイルを作成する

1. 送信ハンドラーがフォームモデルを受け取る

ユーザーが"送信"をクリックすると、サーバーサイドのハンドラーがフォームモデルと電子署名のメタデータを受け取ります。 現時点で、データはすべて揃っています。 ハンドラーはモデルを単に保持するだけでなく、PDF生成タスクにモデルを渡します。 IronPDFを使用すれば、デジタル署名を含む様々なPDF生成タスクを、わずか数行のコードで処理できます。

この簡単な IronPDF の例では、以下のサンプルデータコードを使用します:

サンプルデータ

2. HTMLファイルまたは文字列テンプレートに送信データが入力されます

Razorビュー、HTMLファイル、HTML構造、またはHTML文字列テンプレートがレイアウトとして機能します。 このシンプルなHTML文字列には、Iron Softwareの顧客ロゴや"Iron Suite"に関連するテキストロゴなどの画像が含まれる場合があります。 書式設定を保持するために、外部CSSファイルまたはインラインCSSを使用して、フォントファミリーやフォントサイズを設定することができます。

3. ChromePdfRenderer は HTML を PDF 文書に変換します

IronPDFを使用すれば、このプロセスは簡単です。 まず、NuGet パッケージ マネージャー、Visual Studio パッケージ マネージャー、またはパッケージ マネージャー コンソールを使用して IronPDF をインストールします。

以下のコードスニペットは、HTMLからPDFへの変換に使用されたものと同じコードを示しています:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 20;

renderer.RenderingOptions.MarginBottom = 20;

renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;

string html = $@"
    <h1>Loan Application Summary</h1>
    <p><strong>Applicant:</strong> {submission.FullName}</p>
    <p><strong>Submitted:</strong> {submission.SubmittedAt:f}</p>
    <p><strong>Loan Amount:</strong> {submission.LoanAmount:C}</p>
    <p><strong>Reference:</strong> {submission.ReferenceNumber}</p>
    <hr/>
    <h2>Employment Details</h2>
    <p>{submission.EmployerName} — {submission.AnnualIncome:C} per year</p>";

PdfDocument summary = renderer.RenderHtmlAsPdf(html);
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 20;

renderer.RenderingOptions.MarginBottom = 20;

renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;

string html = $@"
    <h1>Loan Application Summary</h1>
    <p><strong>Applicant:</strong> {submission.FullName}</p>
    <p><strong>Submitted:</strong> {submission.SubmittedAt:f}</p>
    <p><strong>Loan Amount:</strong> {submission.LoanAmount:C}</p>
    <p><strong>Reference:</strong> {submission.ReferenceNumber}</p>
    <hr/>
    <h2>Employment Details</h2>
    <p>{submission.EmployerName} — {submission.AnnualIncome:C} per year</p>";

PdfDocument summary = renderer.RenderHtmlAsPdf(html);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.MarginTop = 20

renderer.RenderingOptions.MarginBottom = 20

renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4

Dim html As String = $"
    <h1>Loan Application Summary</h1>
    <p><strong>Applicant:</strong> {submission.FullName}</p>
    <p><strong>Submitted:</strong> {submission.SubmittedAt:f}</p>
    <p><strong>Loan Amount:</strong> {submission.LoanAmount:C}</p>
    <p><strong>Reference:</strong> {submission.ReferenceNumber}</p>
    <hr/>
    <h2>Employment Details</h2>
    <p>{submission.EmployerName} — {submission.AnnualIncome:C} per year</p>"

Dim summary As PdfDocument = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

C#によるPDF出力例

出力されたPDFの例。 使いやすいAPIにより、PDFドキュメントを生成したり、ローカルファイルや単純なHTML文字列からPDFを作成したりすることができます。 動的なレポートの場合、ChromePdfRendererはJavaScriptの実行を完璧に処理します。 なお、UI上では、主要な機能やライセンスの状態を示すために、青い丸で囲まれた鍵のアイコンや、灰色の丸で囲まれた鍵のアイコンが表示される場合があります。

ヒントHTMLテンプレート内に会社のロゴをBase64データURIとして直接埋め込むことで、アプリケーションのデプロイ先にかかわらず正しく表示されるようにします。これにより、レンダリング時にファイルパスやCDNの可用性に依存する必要がなくなります。

4. 生成されたPDFは申請者にメールで送信され、確認のために保存されます

新しいPDFドキュメントでは、電子メールの添付ファイル用にBinaryDataが公開されています。 また、PDFファイルの修正、編集、暗号化、画像の埋め込みも可能です。 PDFを分割したり、PDFを分離したり、1つのPDFを複数のPDFに分割したりする必要がある場合、このライブラリが対応します。 既存のPDFと結合したり、PDFフォームを管理したりすることも可能です。

using System.Net.Mail;
using System.IO;

var stream = new MemoryStream(summary.BinaryData);

var attachment = new Attachment(
    stream,
    $"Application-{submission.ReferenceNumber}.pdf",
    "application/pdf"
);

var message = new MailMessage
{
    From = new MailAddress("applications@yourcompany.com"),
    Subject = $"Your Application Confirmation – Ref {submission.ReferenceNumber}",
    Body = $"Dear {submission.FullName},\n\nThank you for submitting your application. Your submission summary is attached.",
};

message.To.Add(submission.Email);

message.Attachments.Add(attachment);

using var client = new SmtpClient("smtp.yourprovider.com");

await client.SendMailAsync(message);
using System.Net.Mail;
using System.IO;

var stream = new MemoryStream(summary.BinaryData);

var attachment = new Attachment(
    stream,
    $"Application-{submission.ReferenceNumber}.pdf",
    "application/pdf"
);

var message = new MailMessage
{
    From = new MailAddress("applications@yourcompany.com"),
    Subject = $"Your Application Confirmation – Ref {submission.ReferenceNumber}",
    Body = $"Dear {submission.FullName},\n\nThank you for submitting your application. Your submission summary is attached.",
};

message.To.Add(submission.Email);

message.Attachments.Add(attachment);

using var client = new SmtpClient("smtp.yourprovider.com");

await client.SendMailAsync(message);
Imports System.Net.Mail
Imports System.IO

Dim stream As New MemoryStream(summary.BinaryData)

Dim attachment As New Attachment(
    stream,
    $"Application-{submission.ReferenceNumber}.pdf",
    "application/pdf"
)

Dim message As New MailMessage With {
    .From = New MailAddress("applications@yourcompany.com"),
    .Subject = $"Your Application Confirmation – Ref {submission.ReferenceNumber}",
    .Body = $"Dear {submission.FullName}," & vbCrLf & vbCrLf & "Thank you for submitting your application. Your submission summary is attached."
}

message.To.Add(submission.Email)

message.Attachments.Add(attachment)

Using client As New SmtpClient("smtp.yourprovider.com")
    Await client.SendMailAsync(message)
End Using
$vbLabelText   $csharpLabel

PDFを添付したメールの例

Ironpdf Form To Pdf 4 related to PDFを添付したメールの例 同じ BinaryData バイト配列が、送信レコードと共に、Blob ストレージ(Azure Blob、AWS S3、またはドキュメント管理システム)に書き込まれます。 レビュー担当者はキューからタスクを取り出し、毎回一貫性のある書式設定済みのドキュメントを開くことができます。

実世界の利点

コンプライアンスと監査証跡。PDFは申請者が提出した正確なデータから生成され、提出時点のタイムスタンプが記録されます。 これは不変であり、コンプライアンスチームが、変更された可能性のあるデータベースから再構築することなく、オンデマンドで生成できるスナップショットです。

顧客の信頼。申請者は、提出した内容を確認できる、Professionalでブランドイメージを反映した文書を受け取ります。 住宅ローンの借り手や保険の申込者にとって、その確認書は大きな意味を持ち、他の保険証券やローン書類と一緒に提出できるものです。

内部効率。レビュー担当者は、すべての提出物を同じ構造と形式で提示する標準化されたPDFを基に作業を行います。 スクリーンショットの使用、WORDへのフィールド値のコピペ、異なるチームメンバーによる提出物間の書式不統一は一切ありません。

テンプレートの再利用。ドキュメントのレイアウトを制御するのは、HTMLテンプレートのみです。 フォームに新しいセクション(共同申請者フィールドや改訂された開示ブロックなど)が追加された場合、チームは1つのファイルを更新するだけで、今後のすべての提出書類に自動的に反映されます。

外部サービスは使用しません。IronPDFはNuGetパッケージとしてインプロセスで動作します。 ドキュメントごとのAPI利用料は発生せず、外部のレンダリングサービスを監視する必要もなく、送信フロー中にネットワークへの依存もありません。

結び

送信されたWebフォームは構造化データを生成します。 意図的に努力をしなければ、それだけではドキュメントは生成されません。 このギャップは、保持できる確認資料がない応募者、一貫性のないエクスポートデータに基づいて作業する審査担当者、そして監査人に実際に提示できる資料を必要とするコンプライアンスチームにとって、深刻な障害となります。

送信時にPDFを生成することで、ハンドラーに1つの追加ステップを加えるだけで、そのギャップを埋めることができます。 IronPDFは、.NET環境にPDF機能のすべてを提供し、単一のライブラリ内でドキュメントの生成、読み取り、編集、およびデータ抽出を行うことができます。 ご自身のフォームワークフローで試してみたい場合は、30日間トライアルを開始し、正式導入前に出力結果を確認してください。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね