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

IronPDF を使ってASP.NET WebアプリケーションでPDFビューアを作成する方法

IronPDF は、プラグインや外部依存関係を必要とせず、ブラウザーの組み込みビューアーに直接表示されるサーバー側 PDF を生成することで、ASP.NET Core アプリケーションでのシームレスな PDF 表示を可能にします。応答ヘッダーを構成するだけで、IronPDF のChrome ベースのレンダリング エンジンがHTML から PDF への変換を処理します。

PDF ドキュメントを表示する Web アプリケーションの作成は簡単です。 請求書、レポート、インタラクティブ フォームなどを表示する場合でも、ユーザーはブラウザー内でのスムーズなドキュメント表示エクスペリエンスを期待しており、Adobe Acrobat Reader やその他のサードパーティ ツールは必要ありません。

IronPDF を使用すると、これが非常に簡単になります。 頻繁に更新されるこの.NET ライブラリを使用すると、わずか数行のコードで ASP.NET Core プロジェクト内で PDF ファイルを作成、レンダリング、表示できます。 シンプルなHTML 変換から複雑なRazor ビューまですべてを処理するプロフェッショナルなPDF ビューアー コントロールを実装する方法について詳しく見ていきましょう。

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

ここで朗報です。最近のブラウザにはすでにPDFビューアが組み込まれています。 サーバーが正しいMIMEタイプ( application/pdf )のPDFファイルを送信すると、ブラウザは自動的にそれをインラインで表示します。つまり、 PDFドキュメントを表示するために外部プラグインや複雑なクライアントサイドJavaScriptライブラリは必要ありません。

重要なのは、高品質のPDF ドキュメントを生成し、正しい応答ヘッダーを構成することです。 IronPDF は、 Chrome レンダリング エンジンを使用して HTML、CSS、 JavaScriptからピクセルパーフェクトなPDF ページを作成し、サーバー側の面倒な処理を処理します。 その結果は? ユーザーは、追加の UI 構成なしで、テキスト選択、検索、印刷、ダウンロードなどの機能を備えたネイティブ ドキュメント ビューアー エクスペリエンスを利用できます。 コンテンツを簡単に埋め込んで表示することができます。

このアプローチは、 ASP.NET Core MVCRazor ビュー、さらには従来の Web フォルダー プロジェクトを使用して構築する場合でも、すべての.NET アプリケーションでシームレスに機能します。 コンテナ化されたデプロイメントの場合、IronPDF は依存関係を最小限に抑えながら優れたDocker サポートを提供するため、マイクロサービス アーキテクチャに最適です。

PDFビューアコントロールのインストールと設定方法

Visual StudioでIronPDFを使い始めるにはいくつかのステップを踏むだけです。 ASP.NET Core プロジェクトを開き、 NuGet パッケージをインストールします。

Install-Package IronPdf

コンテナ化された環境の場合、IronPDF は公式の Docker イメージを提供し、 Linux コンテナWindows コンテナの両方をサポートします。 ライブラリはChrome の依存関係とフォントのインストールを自動的に処理し、展開の複雑さを最小限に抑えます。

次に、 Program.csライセンス キー構成を追加します。

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Azure デプロイの場合、ライセンス キーを Azure Key Vault または環境変数に保存できます。 IronPDF は、最適化されたパフォーマンス設定を備えたAWS Lambdaやその他のクラウド プラットフォームもサポートします。

IronPDF を.NET アプリケーションに完全に統合するために必要な設定はこれだけです。 Azure デプロイメントDocker コンテナーなどの高度なシナリオの追加構成オプションについては、 IronPDF のドキュメントを参照してください。 契約する前に、無料トライアルですべての機能を試すことができます。

HTMLからPDFドキュメントを生成して表示するには?

ASP.NET Core Web アプリケーションで PDF ビューアーを作成する最も簡単な方法は、 HTML 文字列を直接変換することです。 以下は、コンテナ オーケストレーションのヘルス チェック エンドポイントを備えた完全なコントローラーの例です。

using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class PdfController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        // Configure for container environments
        _renderer.RenderingOptions.WaitFor.RenderDelay = 100; // ms
        _renderer.RenderingOptions.Timeout = 30000; // 30 seconds
    }

    public IActionResult DisplayFromHtml()
    {
        // Create PDF from HTML with CSS styling
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #2c3e50; }
                    .content { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = _renderer.RenderHtmlAsPdf(html);
        // Display PDF inline in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }

    // Health check endpoint for Kubernetes readiness probe
    [HttpGet("health")]
    public IActionResult Health()
    {
        try
        {
            var test = _renderer.RenderHtmlAsPdf("<p>Health check</p>");
            return Ok(new { status = "healthy", engine = "ready" });
        }
        catch
        {
            return StatusCode(503, new { status = "unhealthy" });
        }
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class PdfController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        // Configure for container environments
        _renderer.RenderingOptions.WaitFor.RenderDelay = 100; // ms
        _renderer.RenderingOptions.Timeout = 30000; // 30 seconds
    }

    public IActionResult DisplayFromHtml()
    {
        // Create PDF from HTML with CSS styling
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #2c3e50; }
                    .content { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = _renderer.RenderHtmlAsPdf(html);
        // Display PDF inline in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }

    // Health check endpoint for Kubernetes readiness probe
    [HttpGet("health")]
    public IActionResult Health()
    {
        try
        {
            var test = _renderer.RenderHtmlAsPdf("<p>Health check</p>");
            return Ok(new { status = "healthy", engine = "ready" });
        }
        catch
        {
            return StatusCode(503, new { status = "unhealthy" });
        }
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Public Class PdfController
    Inherits Controller

    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New()
        _renderer = New ChromePdfRenderer()
        ' Configure for container environments
        _renderer.RenderingOptions.WaitFor.RenderDelay = 100 ' ms
        _renderer.RenderingOptions.Timeout = 30000 ' 30 seconds
    End Sub

    Public Function DisplayFromHtml() As IActionResult
        ' Create PDF from HTML with CSS styling
        Dim html As String = "
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #2c3e50; }
                    .content { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>"
        Dim pdf = _renderer.RenderHtmlAsPdf(html)
        ' Display PDF inline in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf")
        Return File(pdf.BinaryData, "application/pdf")
    End Function

    ' Health check endpoint for Kubernetes readiness probe
    <HttpGet("health")>
    Public Function Health() As IActionResult
        Try
            Dim test = _renderer.RenderHtmlAsPdf("<p>Health check</p>")
            Return Ok(New With {Key .status = "healthy", Key .engine = "ready"})
        Catch
            Return StatusCode(503, New With {Key .status = "unhealthy"})
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

生成された PDF はブラウザでどのように表示されますか?

! ブラウザに"サンプルPDFドキュメント"というタイトルと"このPDFはASP.NET CoreのIronPDFを使用して生成されました"というテキストを含むPDFドキュメントが表示されている(localhost:7254/Pdf/DisplayFromHtmlで閲覧)

ChromePdfRendererクラスは、正確なレンダリングのために Chromium を使用し、 CSSJavaScript画像が意図したとおりに表示されるようにします。 Content-Dispositionをインラインに設定すると、PDFをダウンロードするのではなく、表示するようにブラウザに指示します。

これにより、ユーザーがWeb UI内で直接ドキュメントにアクセスできる、シームレスな閲覧体験が実現します。 レイアウトが複雑なドキュメントの場合は、HTML 内またはRenderingOptionsを使用して、幅や高さなどのレンダリング設定を指定できます。 WaitFor オプションは、ネットワーク遅延がアセットの読み込みに影響する可能性があるコンテナー化された環境での適切なレンダリングを保証します。

その他の HTML 変換オプションについては、 HTML 文字列から PDF へのガイドパフォーマンス最適化のヒントをご覧ください。

URLとRazorビューからPDFファイルをレンダリングするには?

IronPDF はライブ Web ページを PDF ドキュメントに変換することもできます。 これは、分散システムでレポートを生成したり、Web コンテンツをアーカイブしたりするのに最適です。

public IActionResult RenderFromUrl(string url = "___PROTECTED_URL_92___")
{
    var renderer = new ChromePdfRenderer();
    // Configure for production environments
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    renderer.RenderingOptions.WaitFor.NetworkIdle = 2000; // Wait for network idle
    renderer.RenderingOptions.PaperFit.UseChromeDefaultRendering = false; // Consistent across environments

    var pdf = renderer.RenderUrlAsPdf(url);
    Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf");
    // Add caching headers for CDN distribution
    Response.Headers.Add("Cache-Control", "public, max-age=3600");
    return File(pdf.BinaryData, "application/pdf");
}
public IActionResult RenderFromUrl(string url = "___PROTECTED_URL_92___")
{
    var renderer = new ChromePdfRenderer();
    // Configure for production environments
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    renderer.RenderingOptions.WaitFor.NetworkIdle = 2000; // Wait for network idle
    renderer.RenderingOptions.PaperFit.UseChromeDefaultRendering = false; // Consistent across environments

    var pdf = renderer.RenderUrlAsPdf(url);
    Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf");
    // Add caching headers for CDN distribution
    Response.Headers.Add("Cache-Control", "public, max-age=3600");
    return File(pdf.BinaryData, "application/pdf");
}
Public Function RenderFromUrl(Optional url As String = "___PROTECTED_URL_92___") As IActionResult
    Dim renderer = New ChromePdfRenderer()
    ' Configure for production environments
    renderer.RenderingOptions.EnableJavaScript = True
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    renderer.RenderingOptions.WaitFor.NetworkIdle = 2000 ' Wait for network idle
    renderer.RenderingOptions.PaperFit.UseChromeDefaultRendering = False ' Consistent across environments

    Dim pdf = renderer.RenderUrlAsPdf(url)
    Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf")
    ' Add caching headers for CDN distribution
    Response.Headers.Add("Cache-Control", "public, max-age=3600")
    Return File(pdf.BinaryData, "application/pdf")
End Function
$vbLabelText   $csharpLabel

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

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

RazorビューをPDFに変換するには、まずビューをHTMLとしてレンダリングするためのヘルパーメソッドが必要です。このアプローチにより、Web表示とPDF生成の両方で既存のテンプレートを再利用できるため、マイクロサービス間の一貫性を維持するために不可欠です。

public async Task<IActionResult> ViewToPdf()
{
    var invoiceModel = 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 }
        }
    };
    invoiceModel.TotalAmount = invoiceModel.Items.Sum(i => i.LineTotal);
    // NOTE: RenderViewToStringAsync uses the Request services and ActionContext
    var htmlContent = await RenderViewToStringAsync("Invoice", invoiceModel);

    var renderer = new IronPdf.ChromePdfRenderer();
    // Optimize for memory-constrained containers
    renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All;
    renderer.RenderingOptions.MarginTop = renderer.RenderingOptions.MarginBottom = 40;

    var pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl: HttpContext.Request.Scheme + "://" + HttpContext.Request.Host);

    // Add monitoring metrics
    _logger.LogInformation($"PDF generated: Size={pdf.BinaryData.Length} bytes, Pages={pdf.PageCount}");

    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    // Use the current HttpContext's service provider (guaranteed available during a request)
    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)
    {
        // Helpful error for debugging
        var searchedLocations = string.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}");
    }
    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();
}
public async Task<IActionResult> ViewToPdf()
{
    var invoiceModel = 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 }
        }
    };
    invoiceModel.TotalAmount = invoiceModel.Items.Sum(i => i.LineTotal);
    // NOTE: RenderViewToStringAsync uses the Request services and ActionContext
    var htmlContent = await RenderViewToStringAsync("Invoice", invoiceModel);

    var renderer = new IronPdf.ChromePdfRenderer();
    // Optimize for memory-constrained containers
    renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All;
    renderer.RenderingOptions.MarginTop = renderer.RenderingOptions.MarginBottom = 40;

    var pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl: HttpContext.Request.Scheme + "://" + HttpContext.Request.Host);

    // Add monitoring metrics
    _logger.LogInformation($"PDF generated: Size={pdf.BinaryData.Length} bytes, Pages={pdf.PageCount}");

    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    // Use the current HttpContext's service provider (guaranteed available during a request)
    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)
    {
        // Helpful error for debugging
        var searchedLocations = string.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}");
    }
    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();
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Logging
Imports IronPdf

Public Class YourController
    Inherits Controller

    Private ReadOnly _logger As ILogger(Of YourController)

    Public Sub New(logger As ILogger(Of YourController))
        _logger = logger
    End Sub

    Public Async Function ViewToPdf() As Task(Of IActionResult)
        Dim invoiceModel As New InvoiceModel With {
            .InvoiceNumber = 1001,
            .InvoiceDate = DateTime.Now,
            .CustomerName = "Acme Corp.",
            .Items = New List(Of ItemModel) From {
                New ItemModel With {.Description = "Product A", .Quantity = 2, .UnitPrice = 50.0D},
                New ItemModel With {.Description = "Service B", .Quantity = 1, .UnitPrice = 150.0D}
            }
        }
        invoiceModel.TotalAmount = invoiceModel.Items.Sum(Function(i) i.LineTotal)
        ' NOTE: RenderViewToStringAsync uses the Request services and ActionContext
        Dim htmlContent As String = Await RenderViewToStringAsync("Invoice", invoiceModel)

        Dim renderer As New ChromePdfRenderer()
        ' Optimize for memory-constrained containers
        renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All
        renderer.RenderingOptions.MarginTop = 40
        renderer.RenderingOptions.MarginBottom = 40

        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl:=HttpContext.Request.Scheme & "://" & HttpContext.Request.Host)

        ' Add monitoring metrics
        _logger.LogInformation($"PDF generated: Size={pdf.BinaryData.Length} bytes, Pages={pdf.PageCount}")

        Return File(pdf.BinaryData, "application/pdf")
    End Function

    Private Async Function RenderViewToStringAsync(viewName As String, model As Object) As Task(Of String)
        ' Use the current HttpContext's service provider (guaranteed available during a request)
        Dim actionContext As New ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor)
        Dim viewEngine = HttpContext.RequestServices.GetRequiredService(Of IRazorViewEngine)()
        Dim tempDataFactory = HttpContext.RequestServices.GetRequiredService(Of ITempDataDictionaryFactory)()
        Dim tempData = tempDataFactory.GetTempData(HttpContext)
        ViewData.Model = model
        Dim viewResult = viewEngine.FindView(actionContext, viewName, isMainPage:=False)
        If Not viewResult.Success Then
            ' Helpful error for debugging
            Dim searchedLocations = String.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty(Of String)())
            Throw New InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}")
        End If
        Await Using writer As New StringWriter()
            Dim viewContext As New ViewContext(
                actionContext,
                viewResult.View,
                ViewData,
                tempData,
                writer,
                New HtmlHelperOptions()
            )
            Await viewResult.View.RenderAsync(viewContext)
            Return writer.ToString()
        End Using
    End Function
End Class

Public Class InvoiceModel
    Public Property InvoiceNumber As Integer
    Public Property InvoiceDate As DateTime
    Public Property CustomerName As String
    Public Property Items As List(Of ItemModel)
    Public Property TotalAmount As Decimal
End Class

Public Class ItemModel
    Public Property Description As String
    Public Property Quantity As Integer
    Public Property UnitPrice As Decimal
    Public ReadOnly Property LineTotal As Decimal
        Get
            Return Quantity * UnitPrice
        End Get
    End Property
End Class
$vbLabelText   $csharpLabel

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

! PDF 請求書が Web ブラウザに表示され、Acme Corp の請求書番号 1001 と 2 つの項目の合計が 250.00 ドルであることが示されています。これは、Razor ビューから PDF への変換が成功したことを示しています。

このヘルパー メソッドにより、Razor ビューのコンテンツを HTML 文字列にレンダリングするためのクリーンなパスが確保され、その後 IronPDF がそれを変換できるようになります。 Razor to PDF チュートリアルでは、このワークフローについて詳しく説明します。 Blazor アプリケーションの場合、コンポーネント レンダリングでも同様のアプローチが機能します。

ストリーミングで大きな PDF ファイルを扱うには?

コンテナ化された環境で大きな PDF ドキュメントを処理する場合、ストリーミングによってパフォーマンスが向上し、メモリ使用量が削減されます。 MemoryStreamを使用すると、メモリ使用量を低く抑えながらファイルを効率的に提供できます。

public IActionResult StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    // Configure for memory efficiency
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false; // Reduce memory if forms not needed

    var pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>");

    // Optional: Compress for reduced bandwidth
    pdf.CompressImages(80); // 80% quality

    var stream = new MemoryStream(pdf.BinaryData);

    // Set response headers for optimal streaming
    Response.Headers.Add("Content-Length", pdf.BinaryData.Length.ToString());
    Response.Headers.Add("Accept-Ranges", "bytes");

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

// Async version for better container performance
public async Task<IActionResult> StreamLargePdfAsync()
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Content here...</p>");

    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
public IActionResult StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    // Configure for memory efficiency
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false; // Reduce memory if forms not needed

    var pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>");

    // Optional: Compress for reduced bandwidth
    pdf.CompressImages(80); // 80% quality

    var stream = new MemoryStream(pdf.BinaryData);

    // Set response headers for optimal streaming
    Response.Headers.Add("Content-Length", pdf.BinaryData.Length.ToString());
    Response.Headers.Add("Accept-Ranges", "bytes");

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

// Async version for better container performance
public async Task<IActionResult> StreamLargePdfAsync()
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Content here...</p>");

    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc

Public Class PdfController
    Inherits Controller

    Public Function StreamLargePdf() As IActionResult
        Dim renderer As New ChromePdfRenderer()
        ' Configure for memory efficiency
        renderer.RenderingOptions.CreatePdfFormsFromHtml = False ' Reduce memory if forms not needed

        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>")

        ' Optional: Compress for reduced bandwidth
        pdf.CompressImages(80) ' 80% quality

        Dim stream As New MemoryStream(pdf.BinaryData)

        ' Set response headers for optimal streaming
        Response.Headers.Add("Content-Length", pdf.BinaryData.Length.ToString())
        Response.Headers.Add("Accept-Ranges", "bytes")

        Return New FileStreamResult(stream, "application/pdf")
    End Function

    ' Async version for better container performance
    Public Async Function StreamLargePdfAsync() As Task(Of IActionResult)
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Content here...</p>")

        Dim stream As New MemoryStream(pdf.BinaryData)
        Return New FileStreamResult(stream, "application/pdf")
    End Function

End Class
$vbLabelText   $csharpLabel

従来のASP.NET Web フォームプロジェクトでは、適切なリソース クリーンアップを備えたイベント ハンドラーを使用して同様の機能を実装できます。

protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    using (var renderer = new ChromePdfRenderer())
    {
        var pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(pdf.BinaryData);
        Response.End();
    }
}
protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    using (var renderer = new ChromePdfRenderer())
    {
        var pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(pdf.BinaryData);
        Response.End();
    }
}
Protected Sub btnGeneratePdf_Click(sender As Object, e As EventArgs)
    Using renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>")
        Response.ContentType = "application/pdf"
        Response.BinaryWrite(pdf.BinaryData)
        Response.End()
    End Using
End Sub
$vbLabelText   $csharpLabel

高パフォーマンスのシナリオでは、複数の PDF を生成するときに、非同期メソッド並列処理の使用を検討してください。 IronPDF パフォーマンス ガイドでは、詳細な最適化戦略が提供されています。

この PDF ビューア コントロールはどのような機能をサポートしていますか?

ブラウザのネイティブ PDF ビューアを活用することで、ユーザーは、コンテンツをコピーするためのテキスト選択、特定のデータを見つけるための検索機能、物理コピーの印刷オプション、オフライン アクセス用のダウンロード機能など、豊富な機能を自動的に利用できるようになります。

このアプローチは、ユーザーが既存のドキュメントをアップロードして表示、編集、またはマージする必要があるシナリオにも対応します。 IronPDF のサーバー側処理は、 JavaScript の実行CSS のレンダリング、およびフォーム (ユーザーが入力できるインタラクティブな要素を含む) を処理します。

このフレームワークは、タグ ヘルパーの統合、カスタム ページ サイズヘッダーとフッター透かし、さらには編集機能もサポートしています。 セキュリティ機能としては、IronPDF は長期アーカイブのための暗号化デジタル署名PDF/A 準拠を提供します。

コンテナ化されたデプロイメントの場合、IronPDF は以下を提供します。

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

実装に向けた次のステップは何ですか?

ASP.NETウェブアプリケーションでPDFビューアを作成するのはIronPDFを使えば非常に簡単です。 強力なレンダリング エンジンとブラウザーの組み込み PDF ビューアーを組み合わせることで、Web アプリケーションで PDF ファイルを表示、処理、操作するためのプロフェッショナルなソリューションが得られます。 HTMLURL 、またはRazor ビューを変換する場合でも、実装には最小限のコードで最大限の機能を実現できます。

実稼働環境での展開では、次の点を考慮してください。

プロジェクトにPDFビューを実装する準備はできていますか? IronPDFの無料トライアルから始めて、あなたの.NET Coreウェブアプリケーションがドキュメントをどのように扱うかを変えてください。 本番環境への導入については、チームのニーズに合ったライセンスオプションを確認してください。 もっと多くの変換例を見たいですか? 役に立つハウツー ガイドで、IronPDF がDOCX から PDF への変換画像から PDF への変換などをどのように処理するかをご覧ください。

今IronPDFを始めましょう。
green arrow pointer

よくある質問

ASP.NETウェブアプリケーションでPDFビューアを作成するには?

IronPDFを使ってASP.NETウェブアプリケーションにPDFビューアを作成することができます。これはアプリケーション内でPDFドキュメントを直接表示することを可能にし、Adobe Acrobat Readerのような外部ツールを必要としないシームレスな表示体験を提供します。

ASP.NETでPDFを見るためにIronPDFを使う利点は何ですか?

IronPDFはASP.NETアプリケーションでスムーズで統合されたPDF表示体験を提供します。ドキュメントをインラインで表示でき、様々なファイルタイプをサポートし、サードパーティのPDFビューアを必要としないため、ユーザーエクスペリエンスが向上します。

ASP.NETウェブアプリケーションでインタラクティブなPDFフォームを表示できますか?

IronPDFを使えば、ASP.NETウェブアプリケーション内にインタラクティブなPDFフォームを表示することができます。フォームフィールドとインタラクティブ要素のレンダリングをサポートし、ユーザーがブラウザで直接ドキュメントと対話できるようにします。

ASP.NETでIronPDFを使って請求書やレポートを表示することはできますか?

IronPDFはASP.NETアプリケーションで請求書やレポート、その他のドキュメントを表示するのに適しています。IronPDFはWebアプリケーション内でドキュメントが正確かつ効率的にレンダリングされることを保証します。

IronPDFを使ったASP.NETアプリケーションでPDFを見るにはAdobe Acrobat Readerが必要ですか?

IronPDFを使えば、ASP.NETアプリケーションでPDFを見るためにAdobe Acrobat Readerは必要ありません。サードパーティに依存することなく、ブラウザで直接PDFをレンダリングして表示することができます。

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

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

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