IRONSOFTWAREHOME
IRONPDFの使用

ASP.NET CoreでHTMLをPDFに変換する -- IronPDFガイド

Curtis Chau
Curtis Chau
Updated: 2026年6月20日

ASP.NET Coreアプリケーションに PDF ビューアを組み込むのは、ほとんどの開発者が予想するよりも簡単です。 サーバー側で PDF を生成し、正しい MIME タイプで返すことで、プラグインや Adob​​e Acrobat Reader を必要とせず、最新のブラウザーでドキュメントを直接表示できます。 IronPDF はChrome ベースのエンジンを通じてレンダリングを処理し、HTML、CSS、 JavaScript をブラウザの組み込みビューアにインラインで表示される高忠実度の PDF に変換します。

このチュートリアルでは、HTML 文字列から生成された PDF の表示、ライブ URL のレンダリング、 Razorビューの変換、大きなファイルのストリーミング、これらすべてをASP.NET Core MVC コントローラーに接続するなど、すべての主要なシナリオについて説明します。 コード例は、該当する場合はトップレベルのステートメントを使用して.NET 10 を対象としています。

ASP.NETでのブラウザベースの PDF 表示はどのように機能しますか?

最新のブラウザには PDF ビューアが組み込まれています。 サーバーがContent-Type: application/pdfヘッダーで応答するとき、ブラウザーはドキュメントをインラインでレンダリングし、ファイルのダウンロードをトリガーしません。 そのヘッダーをContent-Disposition: inlineと組み合わせることが鍵です。

サーバー側では、有効なPDFバイナリを生成し、それをFileResultを介して返すことがあなたの仕事です。 ブラウザは、追加の UI コードなしで、ページ区切り、ズーム、テキスト選択、検索、印刷、ダウンロードを処理します。

IronPDF はこのパターンに自然に適合します。 そのFile()ヘルパーに直接渡します。 その結果、Chrome、Firefox、Edge、Safari で動作するフル機能のドキュメント ビューアーが完成しました。

最新のブラウザは、ネイティブ ビューア エンジンを通じてW3C PDF レンダリング仕様を実装しています。つまり、サーバーから返される準拠 PDF は、追加の構成を行わなくても正しく表示されます。 IronPDF の出力は標準に完全に準拠しているため、ブラウザのバージョン間で一貫したレンダリングを実現できます。

コンテナ化されたデプロイメントの場合、 IronPDF はChromium の依存関係を事前構成した公式 Docker イメージを提供するため、各ノードに Chrome を手動でインストールする必要はありません。 Linux コンテナと Windows コンテナの両方がサポートされています。 PDF 生成を個別に拡張する必要がある場合は、 IronPDF Engine Docker イメージを使用すると、レンダリング プロセスを別のマイクロサービスとして実行できます。

ASP.NET CoreプロジェクトにIronPDFをインストールするにはどうすればよいでしょうか?

Visual Studio でASP.NET Coreプロジェクトを開き、 NuGetパッケージ マネージャー コンソールからIronPDFをインストールします。

PM > Install-Package IronPdf

または.NET CLIを使用します:

dotnet add package IronPdf

インストール後、あらゆるIronPDF APIを呼び出す前に、ライセンスキーProgram.csに追加してください。

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Azureにデプロイする場合は、ライセンス キーをハードコーディングするのではなく、Azure Key Vault または App Configuration に保存します。 AWS Lambda デプロイメントの場合、Lambda 関数設定で構成された環境変数を使用します。

これでセットアップは完了です。IronPDFはWindows 実行時に Chromium を自動的に検出して設定します。 Linux の場合、必要なシステム パッケージについてはLinux セットアップ ガイドを参照してください。

実稼働用のライセンス レベルを選択する前に、無料トライアルで完全な機能セットを評価することができます。

HTML 文字列から PDF を生成して表示するにはどうすればよいですか?

ユーザーの前にPDFを置く最速の方法は、HTML文字列をレンダリングし、それをインラインで返すことです。PdfControllerというコントローラーを作成し、このようなアクションを追加します。

using IronPdf;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();

var app = builder.Build();
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

public class PdfController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.WaitFor.RenderDelay(100);
        _renderer.RenderingOptions.Timeout = 30;
    }

    public IActionResult DisplayFromHtml()
    {
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1   { color: #2c3e50; }
                    p    { line-height: 1.7; color: #444; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
            </body>
            </html>";

        PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);

        Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }
}

レンダリングされた PDF はブラウザでどのように表示されますか?

サンプルPDFドキュメントとタイトルに表示されたブラウザのスクリーンショット。そして、IronPDFを使用してASP.NET Coreで生成されたPDFが表示され、localhost:7254/Pdf/DisplayFromHtmlで閲覧されました。

ChromePdfRendererは内部でChromiumを使用しているため、CSSグリッド、フレックスボックス、ウェブフォント、および最新のCSS機能がすべて正確にレンダリングされます。 inlineに設定することで、ブラウザーにファイルを保存せずに表示させるように指示します。 その値をattachmentに変更すると、ブラウザーはユーザーにダウンロードするように指示します。

複雑なレイアウトのドキュメントの場合は、カスタム用紙サイズ、余白、印刷 CSS メディア タイプなどのレンダリング オプションを使用して出力を微調整できます。 WaitFor API は、ネットワーク遅延により外部アセットの読み込みが遅れる可能性があるコンテナ化された環境で特に役立ちます。

HTML 変換オプションの詳細については、 HTML 文字列から PDF へのガイドを参照してください。

URL とRazorビューから PDF ファイルをレンダリングするにはどうすればよいですか?

IronPDF は、あらゆるライブ Web ページを PDF としてキャプチャできます。Web コンテンツをアーカイブしたり、既存のページからレポートを生成したりするのに最適です。 ASP.NET Core のドキュメントでは、コントローラー アクションが結果を返す方法について説明されており、ここで使用されているパターンです。

public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    renderer.RenderingOptions.WaitFor.NetworkIdle();

    PdfDocument pdf = renderer.RenderUrlAsPdf(url);

    Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
    Response.Headers.Append("Cache-Control", "public, max-age=3600");
    return File(pdf.BinaryData, "application/pdf");
}

URL ベースの PDF レンダリングはどのように表示されますか?

ASP.NET WebアプリケーションでIronPDFを使用してレンダリングされたWikipediaホームページを表示するPDFビューアのスクリーンショット。メインページの内容とナビゲーション要素が完全にCSSスタイリングされて保持されています。

請求書や明細書テンプレートなどのRazorビューを変換する必要がある場合は、まずビューを HTML 文字列にレンダリングし、その文字列をIronPDFに渡します。 これにより、Web と PDF 出力の両方でテンプレートを再利用できるようになります。

public async Task<IActionResult> ViewToPdf()
{
    var model = new InvoiceModel
    {
        InvoiceNumber = 1001,
        InvoiceDate   = DateTime.Now,
        CustomerName  = "Acme Corp.",
        Items = new List<ItemModel>
        {
            new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
            new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
        }
    };
    model.TotalAmount = model.Items.Sum(i => i.LineTotal);

    string htmlContent = await RenderViewToStringAsync("Invoice", model);

    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop    = 40;
    renderer.RenderingOptions.MarginBottom = 40;

    string baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl);

    return File(pdf.BinaryData, "application/pdf");
}

private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    var actionContext = new ActionContext(
        HttpContext, RouteData, ControllerContext.ActionDescriptor);

    var viewEngine      = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
    var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
    var tempData        = tempDataFactory.GetTempData(HttpContext);

    ViewData.Model = model;

    var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
    if (!viewResult.Success)
    {
        string searched = string.Join(
            Environment.NewLine,
            viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException(
            $"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}");
    }

    await using var writer      = new StringWriter();
    var             viewContext = new ViewContext(
        actionContext, viewResult.View, ViewData, tempData,
        writer, new HtmlHelperOptions());

    await viewResult.View.RenderAsync(viewContext);
    return writer.ToString();
}

Razor View PDF 生成の結果はどうなるでしょうか?

PDF invoice displayed in a web browser showing Invoice #1001 for Acme Corp with two line items totaling $250.00, demonstrating successful Razor view to PDF conversion

baseUrlパラメーターは、Razorビューが相対CSSまたは画像パスを参照している場合に重要です。 現在のホスト URL を渡すと、 IronPDF はそれらのパスを正しく解決できるようになります。 Blazorアプリケーション パターンを含む完全なチュートリアルについては、 Razorから PDF へのチュートリアルを参照してください。

ストリーミングで大きな PDF ファイルをどのように処理しますか?

ドキュメントのサイズが数メガバイトになる場合、ストリーミングによりピーク時のメモリ使用量が削減され、クライアントへのバイトの配信がより早く開始されます。 生のバイト配列にはFileStreamResultを使用してください。

public async Task<IActionResult> StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false;

    PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(
        "<h1>Large Document</h1><p>Full content here...</p>");

    pdf.CompressImages(80);

    var stream = new MemoryStream(pdf.BinaryData);

    Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString());
    Response.Headers.Append("Accept-Ranges",  "bytes");

    return new FileStreamResult(stream, "application/pdf");
}

CompressImages(80)はJPEGの品質を80%に低下させ、画像が多いドキュメントでもファイルサイズを大幅に削減しますが、目に見える品質の低下は最小限です。 Accept-Ranges: bytesを設定すると、ブラウザーがバイト範囲チャンクを要求できるようになり、大きなPDFをすべてダウンロードすることなく高速なシーキングが可能になります。

ISO のPDF/A 仕様は、アーカイブ品質の PDF 要件を定義します。 アプリケーションで長期アーカイブ ドキュメントを作成する必要がある場合、IronPDF の PDF/A 準拠モードを使用すると、出力がそれらの標準を満たすことが保証されます。これは、規制や法律のワークフローに特に関連します。

従来のASP.NET Web フォーム プロジェクトの場合、HTTP 応答に直接書き込むため、パターンが若干異なります。

protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    using var renderer = new ChromePdfRenderer();
    PdfDocument pdf    = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(pdf.BinaryData);
    Response.End();
}

多数の PDF を同時に生成するワークロードの場合、高スループットのシナリオでメモリのオーバーヘッドを削減する設定については、 IronPDF非同期 API ガイドパフォーマンス最適化リファレンスを確認してください。

ブラウザベースのビューアはユーザーにどのような機能を提供しますか?

ブラウザが PDF をインラインで表示すると、フル機能のビューアが自動的に表示されます。 ユーザーは、コンテンツをコピーするためのテキスト選択、特定の単語や数字を見つけるための組み込みの検索バー、印刷コントロール、ワンクリック ダウンロードを利用できます。これらはすべて、フロントエンド コードを記述することなく実行できます。

IronPDF は、基本的な表示機能以外にも、ビューアに表示される内容に影響する幅広いドキュメント機能をサポートしています。

次の表に、ライブラリで利用可能な主な変換メソッドと、それぞれを使用するタイミングを要約しています。

IronPDF変換方法と推奨される使用例
方法入力最適な用途
RenderHtmlAsPdfHTML文字列テンプレート化された文書、請求書、レポート
RenderUrlAsPdfURLウェブページのアーカイブ、ライブコンテンツのスナップショット
RenderHtmlAsPdf + RazorレンダリングされたビューのHTML既存の MVC テンプレートを PDF として再利用する
RenderHtmlFileAsPdfローカルHTMLファイルディスクに保存された静的テンプレート

コンテナ化されたデプロイメントでは、 IronPDF はリモートエンジンのサポートも提供しており、PDF 生成を専用のマイクロサービスとして実行できます。リソースが制限された環境に合わせた設定については、メモリ最適化ガイドをご覧ください。

機能の完全な概要については、 IronPDF の機能ページをご覧ください。

IronPDF はどのような書式設定と編集オプションをサポートしていますか?

IronPDF は基本的なレンダリングをはるかに超えています。 以下のオプションを使用して、すべてのドキュメントに構造とブランドを追加できます。

ページ レイアウト コントロールには、カスタム用紙サイズ、向きの設定、余白の構成が含まれます。 @font-face宣言を介して完全なウェブフォントレンダリングをカバーするタイポグラフィサポートにより、ドキュメントはブランドのフォントに完全に一致します。 また、PDF ページ内に画像を埋め込み、サイズを変更することで、視覚的な忠実度を完全に制御できます。

ドキュメント操作では、 IronPDF を使用すると、既存の PDF を結合または分割したり、個々のページを追加または削除したり、プログラムでテキストや画像を抽出したりできます。 キャプチャ前 for JavaScript実行は、動的なチャートやデータビジュアライゼーションをサポートしており、Chart.jsD3.jsのようなクライアントサイドレンダリングライブラリーに依存するレポート生成に役立ちます。

これらの機能により、別個のドキュメント処理レイヤーなしで、洗練された印刷可能なドキュメントをアプリケーションから直接作成できます。

ユーザーがアップロードした PDF を受け入れ、生成された PDF と一緒に表示する必要がある場合、 IronPDF は新しい PDF バイナリを作成するのと同じくらい簡単に既存の PDF バイナリを読み取ります。 ファイルをFile()ヘルパーで返します。

既存のドキュメントの編集、注釈付け、変更の詳細な手順については、 C# による PDF 編集チュートリアルを参照してください。

IronPDF は他のアプローチと比べてどうですか?

IronPDF のサーバー側アプローチに代わる最も一般的な 2 つの方法は、クライアント側の PDF ビューアー ライブラリ (Mozilla のオープン ソース ビューアーであるPDF.jsなど) を埋め込むことと、ユーザーを別のドキュメント管理システムにルーティングすることです。

PDF.js のようなクライアント側ビューアは、単純な表示の場合はうまく機能しますが、ビューア for JavaScriptバンドルの提供、外部 PDF の CORS の処理、およびブラウザの互換性の管理を自分で行う必要があります。 IronPDFを使用したサーバー側生成では、PDF パイプラインが完全に.NETスタック上に保持されるため、セキュリティ ポリシーが簡素化され、クロスオリジンの複雑さが回避されます。

専用のドキュメント管理システムは、ほとんどの Web アプリケーションでは必要のない運用上のオーバーヘッドを追加します。 すでにASP.NET Coreを実行しているチームにとって、コントローラーから直接 PDF を生成してストリーミングすることは、最も抵抗の少ない方法です。

次のステップは何ですか?

ASP.NET Core Web アプリケーションで PDF を表示するには、数行のコードだけが必要です。 PDFをFileResultを返します—ブラウザーの組み込みビューアがすべてを処理します。

実稼働環境での展開では、セットアップの準備として次の手順を検討してください。

  • PDF生成時間とエラー率を追跡するためのカスタムログを設定します
  • 頻繁に要求される PDF のキャッシュを実装して、Chromium の起動オーバーヘッドを削減します。
  • IronPDF Engine Dockerイメージを使用して、Webレイヤーとは別にレンダリングをスケーリングします。
  • 応答サイズを管理しやすいようにPDF 圧縮オプションを確認します

プロジェクトに PDF 表示機能を追加する準備はできましたか? 無料トライアルから始めて、上記の例を数分で実行してください。 展開の準備ができたら、チームの規模と使用状況に適したライセンス オプションを確認します。 関連する変換を調べるには、ハウツー ガイド ライブラリで、 IronPDF がDOCX から PDF画像から PDF 、およびその他の形式をどのように処理するかを参照してください。

最初のステップ:
arrow pointer
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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。