IRONSOFTWAREHOME
IRONPDFの使用

.NET CoreでIronPDFを使用してPDFを生成する方法

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

単なる書式の問題ではなく、コンプライアンス上の問題

IronPDFのホームページ ほとんどのFinTechアプリケーションは、取引データをリレーショナルデータベースに保存し、要求に応じてレシートを生成します。 顧客が要求した場合、アプリケーションは記録を再クエリしてビューをレンダリングします。 このアプローチには根本的な問題があります。生成されるPDFや"領収書"は、データの現在の状態を反映しているだけで、取引が完了した瞬間に顧客が確認した内容とは一致しないからです。

データベースのレコードは、通常の運用プロセスを通じて修正、変更、または更新することができます。 再クエリされたレシートは履歴文書ではありません; それは過去のタイムスタンプを持った現在のスナップショットです。支払い処理業者がチャージバックに直面する際や、ネオバンクのコンプライアンスチームが規制当局に応える場合、レンディングプラットフォームの監査ログが召喚された場合、または暗号交換がKYC審査官に文書の整合性を示す必要がある場合、問い合わせではなく文書が必要です。

決済の時点で保存され、改ざん検知のためにハッシュ化され、不変のストレージに書き込まれたPDF文書こそが、その文書です。 これにより、既存のPDFドキュメントが長年にわたり有効な状態を維持できます。 財務報告書であれ、初めての簡単なPDF作成であれ、ドキュメント生成は完璧でなければなりません。

PCI-DSS、SOX、およびAMLの記録保持義務では、PDF文書をプログラムで作成することを特に求めているわけではありませんが、実証可能かつ監査可能な記録が求められています。 レンダリングされ、ハッシュ化され、タイムスタンプが付けられたPDFファイルは、データベースの行だけでは得られない方法で、その要件を満たします。 この記事の後半で、IronPDFを使用して新しいPDF文書を作成するこのプロセスがどのように機能するかの例を見ていきます。

ソリューションの概要:C#でHTMLコンテンツをPDFに変換する

Iron Software社のIronPDFライブラリは、トランザクションが完了したまさにその瞬間に、トランザクションパイプラインの一部として同期的に生成されたPDF領収書を作成します。IronPDFは、NuGetパッケージマネージャーまたはVisual Studioのパッケージマネージャーコンソールからインストールできます。 .NET CLIを使用して、単にパッケージIronPDFを実行してください。

レシートはHTMLテンプレートまたはHTMLファイルから生成され、トランザクションIDとタイムスタンプが刻印された後、ハッシュ化され、不変のストレージに書き込まれます。 これが最終的な文書となります。 維持すべきSSRS定義はなく、呼び出すべきサードパーティ製ドキュメントAPIもなく、ヘッドレスブラウザのサイドカーもありません。 IronPDFは、PDF処理用のNuGetライブラリとしてインプロセスで動作します。

ドキュメントワークフローの自動化による主なメリット:

  • すべてのページサイズにおいて書式を維持すること。

  • 文書の完全性を保証するためのデジタル署名のサポート。

  • WebページまたはHTML文字列からPDFオブジェクトを作成する機能。

  • Iron Softwareの顧客ロゴやブランドロゴは簡単に埋め込むことができます

トランザクションからレシートへのパイプラインの仕組み

ハッピーパス

支払いが成功し、取引記録がデータベースに書き込まれます。 同じハンドラーは、レスポンスを返す前に、取引の詳細(ID、UTCタイムスタンプ、金額と通貨、送金者および受取人の識別子、手数料の内訳、および動的コンテンツ)をHTMLコンテンツ受領書テンプレートに埋め込みます。

レンダラー new ChromePdfRenderer(具体的には var renderer = new ChromePdfRenderer();)は、WebコンテンツをPDF形式に変換します。 生成されたPDFバイト配列は、直ちにSHA-256を使用してハッシュ化されます。

using IronPdf
using System.Security.Cryptography;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 15;

renderer.RenderingOptions.MarginBottom = 15;

string receiptHtml = $@"
    <h1>Transaction Receipt</h1>
    <p><strong>Transaction ID:</strong> {tx.Id}</p>
    <p><strong>Timestamp (UTC):</strong> {tx.CompletedAt:u}</p>
    <p><strong>Amount:</strong> {tx.Amount:F2} {tx.Currency}</p>
    <p><strong>Fee:</strong> {tx.Fee:F2} {tx.Currency}</p>
    <p><strong>From:</strong> {tx.SenderRef} &rarr; <strong>To:</strong> {tx.ReceiverRef}</p>
    <p><strong>Resulting Balance:</strong> {tx.ClosingBalance:F2} {tx.Currency}</p>";

var pdf = renderer.RenderHtmlAsPdf(receiptHtml);

string hash = Convert.ToHexString(SHA256.HashData(pdf.BinaryData));

await _db.StoreReceiptHashAsync(tx.Id, hash);

await _blobStorage.UploadImmutableAsync($"receipts/{tx.Id}.pdf", pdf.BinaryData);

生成されたPDFドキュメントの例

IronPDFの例のPDF出力 その後、新しいPDFドキュメントは不変ストレージに保存されます。 初めてPDFを作成する場合でも、既存のPDFを結合する場合でも、手順は同じです。 翻訳文は、顧客向けにPDFビューアで表示されます。 Iron Softwareの製品デモでは、デモ担当チームが、わずか数行のコードで動的なレポートや、HTMLからPDFへの変換、PDF生成といったタスクを処理できる点をよく強調しています。

UI/UXの理解を助けるため、ダッシュボードには、セキュリティ保護されたハッシュ化されたファイルを示す青い丸に鍵のマーク、灰色の丸に鍵のマーク、または青い丸に鍵のマークが表示される場合があります。ダウンロードリンクに関連する右向きのカーソルアイコンは、ユーザーのナビゲーションを支援します。

各ページにヘッダーまたはフッターを配置することで、文書の信頼性を強調します:

var shortHash = hash[..12];

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = $@"
        <div style='font-size:9px; color:#666; text-align:center;'>
            Generated: {tx.CompletedAt:u} &nbsp;|&nbsp;
            TX: {tx.Id} &nbsp;|&nbsp;
            SHA-256: {shortHash}...
        </div>"
};
HTML

フッターの例

例のフッター 領収書の各ページには、トランザクションID、生成タイムスタンプ、および短縮ハッシュが記載されており、コンプライアンス担当者がデータベースにアクセスすることなく、整合性を抜き打ちで確認するのに十分な情報となっています。

エッジケース

**取り消しおよび返金。**取引が失敗または取り消された場合でも、書類の提出が必要です。 元の取引IDと領収書のハッシュを参照し、取り消しイベント用の別個のPDFを生成してください。 リバーサルレシートは、何が起こったかの記録として独立して存在します; それは元のものを置き換えたり修正したりするものではありません。

**多通貨取引。**HTMLテンプレートは、ロケールごとに通貨記号の配置、小数点区切り記号、および為替レートの表示を正しく処理する必要があります。 C#のフォーマット文字列がこれの大部分を処理します。ドイツ語の小数表記規則には {amount.ToString("F2", CultureInfo.GetCultureInfo("de-DE"))} を使用し、小数点を使用しないJPYなどの通貨には記号を明示的に配置します。 為替レートとそのタイムスタンプは、金額から推測されるものではなく、明示された項目として表示される必要があります。

**規制上の透かし。**一部の法域では、特定の種類の文書に"NOT A TAX INVOICE(税務請求書ではありません)"、"UNOFFICIAL COPY(非公式の写し)"、またはその法域固有の開示文言を記載することが義務付けられています。 これらは、基盤となるトランザクションデータを変更することなく、テンプレート内のHTMLオーバーレイまたはスタイル設定されたヘッダーバンドとして適切に処理されます。

コンプライアンスを超えて重要な理由

ステークホルダー提供されるもの
コンプライアンス / 法務監査要求に数分で対応できる、変更不可能なハッシュ化されたレシート。再クエリ、再構築、および現在のデータベースレコードが顧客の見た内容と異なる理由の説明は不要です。
カスタマーサポート取引時に顧客が受け取った正確な文書であり、紛争解決を解釈ではなく事実に基づいて行う
お客様取引のたびに数秒以内に受信トレイに届く、Professionalでブランドイメージを反映した領収書。これは、企業が記録として保管しているものと同じ文書です。
エンジニアリングメンテナンスが必要なHTMLテンプレートは1つだけで、外部サービスへの依存なくプロセス内でレンダリングされ、監視すべきAPI契約もなく、文書ごとの課金を追跡する必要もありません
財務・会計文書保存ポリシーに準拠し、別途のアーカイブワークフローを必要とせずに財務記録保持要件を満たす、長期保存向けのPDF/Aアーカイブ出力
ヒント: 単一のレンダリングオプション(renderer.RenderingOptions.PdfArchiveFormat = IronPdf.Rendering.PdfArchiveFormat.PDF_A_3B)を有効にすることで、長期的な財務記録の保存に適したISO標準準拠のアーカイブ文書を生成できます。

結び

"取引データを保存している"と"監査可能な記録を持っている"間のギャップは、見かけよりも小さいです; それはトランザクションコミットフローに追加された1つのレンダリングステップです。 この手順により、データベースの行だけでは提供できない"来歴"を持つ文書が生成されます。具体的には、遡及的に変更できないタイムスタンプ、改ざんを検知するハッシュ、そして顧客が開封しても監査人が要求しても見た目が変わらない物理的な記録物です。

IronPDF を使用すれば、.NET チームは、HTML レシート(領収書)のレンダリングからフッターへのスタンプ、出力のハッシュ化、不変ストレージへのストリーミングに至るまで、そのプロセスを完全に制御できます。これらすべてを、ironpdf.com の単一のライブラリから実行可能です。 トランザクションパイプラインの構築や強化を検討されている場合は、30日間トライアルを開始し、本番環境への移行前に、コンプライアンス要件に照らしてレシート出力を検証してください。

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。