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

ASP.NET CoreでのPDFビューアー: C#でPDFをインライン表示

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 はこのパターンに自然に適合します。 その ChromePdfRenderer クラスは HTML (またはライブ URL) を PDF バイナリに変換し、そのバイナリを ASP.NET の 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をインストールします。

Install-Package IronPdf
Install-Package IronPdf
SHELL

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

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

インストール後、 IronPDF API を呼び出す前に、ライセンス キーを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 または 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");
    }
}
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");
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()

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

Public Class PdfController
    Inherits Controller

    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New()
        _renderer = New ChromePdfRenderer()
        _renderer.RenderingOptions.WaitFor.RenderDelay(100)
        _renderer.RenderingOptions.Timeout = 30
    End Sub

    Public Function DisplayFromHtml() As IActionResult
        Dim html As String = "
            <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>"

        Dim pdf As PdfDocument = _renderer.RenderHtmlAsPdf(html)

        Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf")
        Return File(pdf.BinaryData, "application/pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

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

ブラウザーに

ChromePdfRenderer は内部で Chromium を使用しているため、CSS グリッド、フレックスボックス、Web フォント、最新の CSS 機能はすべて正確にレンダリングされます。 Content-Dispositioninline に設定すると、ブラウザはファイルを保存するのではなく表示するように指示されます。 その値を 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");
}
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");
}
Public Function RenderFromUrl(Optional url As String = "https://en.wikipedia.org/wiki/Main_Page") As IActionResult
    Dim renderer As New ChromePdfRenderer()
    renderer.RenderingOptions.EnableJavaScript = True
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    renderer.RenderingOptions.WaitFor.NetworkIdle()

    Dim pdf As PdfDocument = 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")
End Function
$vbLabelText   $csharpLabel

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

 IronPDFを使用してASP.NET Web アプリケーションでレンダリングされた 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();
}
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();
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.ViewEngines
Imports Microsoft.AspNetCore.Mvc.Rendering
Imports Microsoft.AspNetCore.Mvc.ViewFeatures
Imports Microsoft.Extensions.DependencyInjection
Imports IronPdf

Public Class YourController
    Inherits Controller

    Public Async Function ViewToPdf() As Task(Of IActionResult)
        Dim model 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}
            }
        }
        model.TotalAmount = model.Items.Sum(Function(i) i.LineTotal)

        Dim htmlContent As String = Await RenderViewToStringAsync("Invoice", model)

        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.MarginTop = 40
        renderer.RenderingOptions.MarginBottom = 40

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

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

    Private Async Function RenderViewToStringAsync(viewName As String, model As Object) As Task(Of String)
        Dim actionContext As New ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor)

        Dim viewEngine As IRazorViewEngine = HttpContext.RequestServices.GetRequiredService(Of IRazorViewEngine)()
        Dim tempDataFactory As ITempDataDictionaryFactory = HttpContext.RequestServices.GetRequiredService(Of ITempDataDictionaryFactory)()
        Dim tempData As ITempDataDictionary = tempDataFactory.GetTempData(HttpContext)

        ViewData.Model = model

        Dim viewResult As ViewEngineResult = viewEngine.FindView(actionContext, viewName, isMainPage:=False)
        If Not viewResult.Success Then
            Dim searched As String = String.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty(Of String)())
            Throw New InvalidOperationException($"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}")
        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 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 ファイルをどのように処理しますか?

ドキュメントのサイズが数メガバイトになる場合、ストリーミングによりピーク時のメモリ使用量が削減され、クライアントへのバイトの配信がより早く開始されます。 生のバイト配列では、File() の代わりに 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");
}
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");
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc

Public Class YourController
    Inherits Controller

    Public Async Function StreamLargePdf() As Task(Of IActionResult)
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.CreatePdfFormsFromHtml = False

        Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Full content here...</p>")

        pdf.CompressImages(80)

        Dim stream As 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")
    End Function
End Class
$vbLabelText   $csharpLabel

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();
}
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();
}
Protected Sub btnGeneratePdf_Click(sender As Object, e As EventArgs)
    Using renderer As New ChromePdfRenderer()
        Dim pdf As PdfDocument = 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非同期 API ガイドパフォーマンス最適化リファレンスを確認してください。

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

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

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

次の表は、ライブラリで使用できる主な変換方法と、それぞれの使用タイミングをまとめたものです。

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

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

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

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

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

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

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

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

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

既存のドキュメントの編集、注釈付け、変更の詳細な手順については、 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 を表示するには、数行のコードだけが必要です。 ChromePdfRenderer を使用して PDF を生成し、Content-Disposition: inline を設定し、FileResult を返します。ブラウザの組み込みビューアが他のすべてを処理します。

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

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

プロジェクトに PDF 表示機能を追加する準備はできましたか? 無料トライアルから始めて、上記の例を数分で実行してください。 展開の準備ができたら、チームの規模と使用状況に適したライセンス オプションを確認します。 関連する変換を調べるには、ハウツー ガイド ライブラリで、 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ボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

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