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

IronPDFでPDFを新しいウィンドウで開く方法 ASP.NET C# with IronPDF

IronPDF を使用すると、ASP.NET 開発者は、Content-Disposition ヘッダーを"添付ファイル"ではなく"インライン"に適切に設定することで、ブラウザー タブに直接 PDF ファイルを生成して表示でき、不要なダウンロードを排除しながらシームレスなPDF 表示エクスペリエンスを提供できます。

このチュートリアルはどのような問題を解決しますか?

PDF ファイルを新しいウィンドウまたはブラウザ タブで開くことは、 ASP.NET Web アプリケーションでよく要求されることです。 開発者は、ユーザーがリンクをクリックしてもブラウザに表示されるのではなく、自動的にダウンロードされるPDF ドキュメントに苦労することがよくあります。 特に、現在のページで作業を続けながら参照する必要があるレポート、請求書、ドキュメントを表示する場合、このイライラする動作はユーザーエクスペリエンスを中断させます。

IronPDF はASP.NET アプリケーションとシームレスに統合される強力なPDF 生成および表示機能を提供することで、この課題に対する優れたソリューションを提供します。 開発者は、レスポンス ヘッダーや Content-Disposition 設定に悩まされることなく、IronPDF のChromePdfRenderer を活用して、新しいブラウザ タブで確実に開く PDF ファイルを作成し、提供することができます。

この記事では、IronPDF がブラウザーで PDF ファイルを生成して表示するためのソリューションとなる理由について説明します。

PDF 表示の問題をなぜ気にする必要があるのでしょうか?

ASP.NETでPDFファイルを提供する場合、デフォルトの動作では、ブラウザの表示ではなく、ダウンロードになることがよくあります。 これは、サーバーがHTTP 応答ヘッダーを介してファイルをブラウザに送信する方法が原因で発生します。 Content-Dispositionヘッダーは特に、PDFファイルをインラインで開くかダウンロードするかを制御します。

Response を使用する従来の ASP.NET コード。バイト配列を使用したBinaryWrite 、ダウンロードをトリガーするヘッダーを設定することがよくあります。 開発者がResponse.ContentType = "application/pdf"を設定した場合でも、 Content-Disposition値が欠落しているか正しくない場合は、ブラウザはPDF ドキュメントを表示せずにダウンロードします。 さらに、ブラウザによってPDFファイルの扱いがまちまちで、Adobe PDF Readerのプラグインはファイルをインラインで表示するかもしれませんが、モバイルブラウザではダウンロードがデフォルトになることがよくあります。

これらの問題はいつ最も頻繁に発生しますか?

HTML 文字列またはデータ ソースから動的に生成された PDF ドキュメントを処理する場合、サーバー側の構成はさらに複雑になります。 正しいパスと適切なヘッダーがなければ、一貫性のあるクロスブラウザ表示を実現することは困難になります。 多くの開発者は、Stack Overflow ディスカッションに、この根強い問題の解決策を求めています。

IronPDFはどのようにPDF表示を簡素化しますか?

IronPDF は、PDF の生成と表示という複雑なタスクを簡単なコードに変換します。 IronPDF はChrome ベースのレンダリング エンジンを使用して、開発者がしばしばつまずく技術的な詳細を自動的に処理しながら、HTML コンテンツからピクセルパーフェクトな PDF ドキュメントを生成します。

IronPDF のアプローチが他と異なる点は何ですか?

ライブラリのChromePdfRendererクラスは、PDF 作成のための最新のアプローチを提供します。 開発者は、バイト配列と応答ストリームを手動で管理する代わりに、単純なメソッド呼び出しを使用してHTML 文字列HTML ファイル、またはURLから PDF を生成できます。 IronPDF はレンダリング プロセスを内部で処理し、さまざまな環境間で一貫した出力を保証します。

どの機能が最も役立ちますか?

基本的な生成の他に、IronPDF は、用紙サイズ余白JavaScript 実行遅延など、出力をカスタマイズするための広範なレンダリング オプションを提供します。 この柔軟性により、シンプルなドキュメントから複雑なチャートのあるレポートや動的コンテンツまで、あらゆるものの作成に最適です。

IronPDF で PDF ファイルを生成して開くにはどうすればよいでしょうか?

まず、NuGet パッケージ マネージャーを使用してIronPDF をインストールします

Install-Package IronPdf

PDF ファイルを生成し、ブラウザ タブで開くASP.NET Coreの完全な例を次に示します。

using IronPdf;
using Microsoft.AspNetCore.Mvc;
public class PdfController : Controller
{
    [HttpGet]
    public IActionResult GeneratePdf()
    {
        // Create a new ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();
        // Generate PDF from HTML string with support for CSS and JavaScript
        string htmlString = @"
            <html>
                <body>
                    <h1>Sample PDF Document</h1>
                    <p>This PDF will open in a new browser tab.</p>
                    <p>Generated on: " + DateTime.Now.ToString() + @"</p>
                </body>
            </html>";
        // Create PDF document with proper format
        var PDF = renderer.RenderHtmlAsPdf(htmlString);
        // Convert to byte array for streaming
        byte[] pdfBytes = pdf.BinaryData;
        // Return file with inline display - key for opening in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
        Response.Headers.Add("Content-Length", pdfBytes.Length.ToString());
        return File(pdfBytes, "application/pdf");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
public class PdfController : Controller
{
    [HttpGet]
    public IActionResult GeneratePdf()
    {
        // Create a new ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();
        // Generate PDF from HTML string with support for CSS and JavaScript
        string htmlString = @"
            <html>
                <body>
                    <h1>Sample PDF Document</h1>
                    <p>This PDF will open in a new browser tab.</p>
                    <p>Generated on: " + DateTime.Now.ToString() + @"</p>
                </body>
            </html>";
        // Create PDF document with proper format
        var PDF = renderer.RenderHtmlAsPdf(htmlString);
        // Convert to byte array for streaming
        byte[] pdfBytes = pdf.BinaryData;
        // Return file with inline display - key for opening in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
        Response.Headers.Add("Content-Length", pdfBytes.Length.ToString());
        return File(pdfBytes, "application/pdf");
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Public Class PdfController
    Inherits Controller

    <HttpGet>
    Public Function GeneratePdf() As IActionResult
        ' Create a new ChromePdfRenderer instance
        Dim renderer As New ChromePdfRenderer()
        ' Generate PDF from HTML string with support for CSS and JavaScript
        Dim htmlString As String = "
            <html>
                <body>
                    <h1>Sample PDF Document</h1>
                    <p>This PDF will open in a new browser tab.</p>
                    <p>Generated on: " & DateTime.Now.ToString() & "</p>
                </body>
            </html>"
        ' Create PDF document with proper format
        Dim PDF = renderer.RenderHtmlAsPdf(htmlString)
        ' Convert to byte array for streaming
        Dim pdfBytes As Byte() = PDF.BinaryData
        ' Return file with inline display - key for opening in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf")
        Response.Headers.Add("Content-Length", pdfBytes.Length.ToString())
        Return File(pdfBytes, "application/pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

生成されたPDFはどのように見えますか?

! PDFビューアは、"サンプルPDFドキュメント"というタイトルと2025年11月20日午後3時37分54秒の生成タイムスタンプを持つサンプルPDFドキュメントを表示しています。PDFの生成とブラウザ表示が成功したことを示しています。

上記のコードでは[ HttpGet ]を使用しています。 ユーザーがフォームを送信した後にこの PDF を作成する場合は、[ HttpPost ] 属性を使用する可能性があります。 これにより、単純なリクエストと、データを含む POST リクエストの送信の違いを認識できるようになります。

Content-Disposition ヘッダーが重要なのはなぜですか?

ブラウザでPDFファイルを開くための鍵は、Content-Dispositionヘッダーを"添付ファイル"ではなく"インライン"に設定することです。 これにより、ブラウザはファイルをダウンロードするのではなく、表示するように指示されます。 従来のASP.NETボタン クリック イベントのオブジェクト センダーとEventArgsパラメータは、このコントローラ アクションをトリガーできます。

これをWebFormsで実装するにはどうすればいいでしょうか?

リテラル コントロールまたはリテラル タグを使用するWebFormsアプリケーションでは、PDF ビューアを現在のページに直接埋め込むことができます。

protected void OpenPdf_Click(object sender, EventArgs e)
{
    var renderer = new ChromePdfRenderer();
    // Generate PDF document from HTML
    var PDF = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Your order details</p>");
    // Get byte array from PDF
    byte[] data = pdf.BinaryData;
    // Clear response and write PDF to browser
    Response.Clear();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Length", data.Length.ToString());
    Response.AddHeader("Content-Disposition", "inline; filename=invoice.pdf");
    Response.BinaryWrite(data);
    Response.End();
}
protected void OpenPdf_Click(object sender, EventArgs e)
{
    var renderer = new ChromePdfRenderer();
    // Generate PDF document from HTML
    var PDF = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Your order details</p>");
    // Get byte array from PDF
    byte[] data = pdf.BinaryData;
    // Clear response and write PDF to browser
    Response.Clear();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Length", data.Length.ToString());
    Response.AddHeader("Content-Disposition", "inline; filename=invoice.pdf");
    Response.BinaryWrite(data);
    Response.End();
}
Protected Sub OpenPdf_Click(sender As Object, e As EventArgs)
    Dim renderer As New ChromePdfRenderer()
    ' Generate PDF document from HTML
    Dim PDF = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Your order details</p>")
    ' Get byte array from PDF
    Dim data As Byte() = PDF.BinaryData
    ' Clear response and write PDF to browser
    Response.Clear()
    Response.ContentType = "application/pdf"
    Response.AddHeader("Content-Length", data.Length.ToString())
    Response.AddHeader("Content-Disposition", "inline; filename=invoice.pdf")
    Response.BinaryWrite(data)
    Response.End()
End Sub
$vbLabelText   $csharpLabel

PDF フォームを作成したり、デジタル署名を追加したりする場合、IronPDF はこれらの高度な機能に対する包括的なサポートを提供します。

ブラウザ タブ コントロールはどうですか?

PDFがインラインで表示されるかどうかはサーバーサイドのコードで決まりますが、同じタブで開くか新しいタブで開くかを制御するにはクライアントサイドのJavaScriptが必要です。 HTMLリンクのtarget属性は、PDFを新しいウィンドウで開くための最も簡単なソリューションを提供します:

<a href="/Pdf/GeneratePdf" target="_blank">View File</a>
<a href="/Pdf/GeneratePdf" target="_blank">View File</a>
HTML

PDF は新しいタブにどのように表示されますか?

! ウェブブラウザが、localhost:7068/Pdf/GeneratePdf の新しいブラウザタブに、"サンプル PDF ドキュメント"というタイトルとタイムスタンプが付いた生成された PDF ドキュメントを表示しています。

より詳細な制御のために JavaScript を使用する必要があるのはいつですか?

JavaScriptのwindow.open関数は、動的に生成されたURLとうまく連携し、PDFファイルを新しいブラウザのタブで開くことができます:

function openPdfInNewTab() {
    // Open PDF in new window using JavaScript
    window.open('/Pdf/GeneratePdf', '_blank');
    return false; // Prevent default form submission
}
function openPdfInNewTab() {
    // Open PDF in new window using JavaScript
    window.open('/Pdf/GeneratePdf', '_blank');
    return false; // Prevent default form submission
}
JAVASCRIPT

JavaScript と ASP.NET コントロールを組み合わせるにはどうすればよいでしょうか?

ASP.NETウェブアプリケーションでは、これをボタンコントロールと組み合わせます:

<asp:Button ID="btnViewPdf" runat="server"
            OnClientClick="window.open('/Pdf/GeneratePdf', '_blank'); return false;"
            Text="Open PDF in New Tab" />
<asp:Button ID="btnViewPdf" runat="server"
            OnClientClick="window.open('/Pdf/GeneratePdf', '_blank'); return false;"
            Text="Open PDF in New Tab" />
<asp:Button ID="btnViewPdf" runat="server"
            OnClientClick="window.open('/Pdf/GeneratePdf', '_blank'); return false;"
            Text="Open PDF in New Tab" />
$vbLabelText   $csharpLabel

注意: JavaScriptのwindow.open()を使用する場合、第2引数の'_blank'は、新しい別のウィンドウまたはタブでドキュメントを開くものです。 新しいウィンドウの名前は、指定する必要がなければ空白のままでもかまいません。

PDF をページに直接埋め込むとどうなるでしょうか?

HTML オブジェクト タグには、 PDF ドキュメントをページに直接埋め込む別のオプションが用意されており、ユーザーが Adobe PDF Reader をインストールしている場合に特に便利です。

<object data="/Pdf/GeneratePdf" type="application/pdf" width="100%" height="600px">
    <embed src="/Pdf/GeneratePdf" type="application/pdf" />
    <p>Your browser doesn't support embedded PDF documents.
       <a href="/Pdf/GeneratePdf" target="_blank">View PDF File</a>
    </p>
</object>
<object data="/Pdf/GeneratePdf" type="application/pdf" width="100%" height="600px">
    <embed src="/Pdf/GeneratePdf" type="application/pdf" />
    <p>Your browser doesn't support embedded PDF documents.
       <a href="/Pdf/GeneratePdf" target="_blank">View PDF File</a>
    </p>
</object>
HTML

埋め込まれた PDF はどのように見えるでしょうか?

! ウェブページ内にサンプルPDF文書を表示する埋め込みPDFビューア。標準のPDFビューアコントロールとともに、文書のタイトル、説明、生成タイムスタンプが表示されます。

この方法は、Adobe PDF Reader または同様のプラグインが利用できる場合に適していますが、最近のブラウザでは追加のソフトウェアなしでネイティブの PDF 表示をサポートすることが増えています。 Microsoft のドキュメントによると、適切なHTTP ヘッダーとクライアント側コードを組み合わせることで、最も信頼性の高いクロスブラウザー ソリューションが実現します。 target="_blank "属性の重要性にご注意ください。

さまざまなファイル ソースをどのように処理しますか?

IronPdfはHTML文字列以外の様々な入力ソースの扱いに優れています。 既存のPDF ファイルで作業する場合や、さまざまなデータ形式から生成する場合、ライブラリはユーザーに PDF ドキュメントを提供するための柔軟なオプションを提供します。

既存の PDF ファイルを読み込むにはどうすればいいですか?

正しいパスから既存のPDF ドキュメントを読み込むには:

public IActionResult ViewFile(string fileName)
{
    // Ensure correct path to PDF file
    string path = Path.Combine(_webHostEnvironment.WebRootPath, "pdfs", fileName);
    // Load existing PDF document
    var PDF = PdfDocument.FromFile(path);
    // Optionally add additional information to the PDF
    pdf.AddPage(renderer.RenderHtmlAsPdf("<h2>Additional Information</h2>"));
    // Convert to stream for browser display
    var stream = pdf.Stream;
    byte[] bytes = stream.ToArray();
    // Set headers for inline display in new browser tab
    Response.Headers.Add("Content-Disposition", "inline; filename=" + fileName);
    Response.Headers.Add("Content-Length", bytes.Length.ToString());
    return File(bytes, "application/pdf");
}
public IActionResult ViewFile(string fileName)
{
    // Ensure correct path to PDF file
    string path = Path.Combine(_webHostEnvironment.WebRootPath, "pdfs", fileName);
    // Load existing PDF document
    var PDF = PdfDocument.FromFile(path);
    // Optionally add additional information to the PDF
    pdf.AddPage(renderer.RenderHtmlAsPdf("<h2>Additional Information</h2>"));
    // Convert to stream for browser display
    var stream = pdf.Stream;
    byte[] bytes = stream.ToArray();
    // Set headers for inline display in new browser tab
    Response.Headers.Add("Content-Disposition", "inline; filename=" + fileName);
    Response.Headers.Add("Content-Length", bytes.Length.ToString());
    return File(bytes, "application/pdf");
}
Public Function ViewFile(fileName As String) As IActionResult
    ' Ensure correct path to PDF file
    Dim path As String = Path.Combine(_webHostEnvironment.WebRootPath, "pdfs", fileName)
    ' Load existing PDF document
    Dim pdf = PdfDocument.FromFile(path)
    ' Optionally add additional information to the PDF
    pdf.AddPage(renderer.RenderHtmlAsPdf("<h2>Additional Information</h2>"))
    ' Convert to stream for browser display
    Dim stream = pdf.Stream
    Dim bytes As Byte() = stream.ToArray()
    ' Set headers for inline display in new browser tab
    Response.Headers.Add("Content-Disposition", "inline; filename=" & fileName)
    Response.Headers.Add("Content-Length", bytes.Length.ToString())
    Return File(bytes, "application/pdf")
End Function
$vbLabelText   $csharpLabel

既存の PDF を開くとどのようになりますか?

! PDF ビューアがブラウザ ウィンドウに"PDF とは何か?"というタイトルの文書と、PDF 形式の歴史と機能に関する説明文を表示しています

データベースから PDF を操作するにはどうすればいいですか?

データベースまたは外部ソースからのバイト配列を操作する場合は、PDF が正しく開くように慎重に処理する必要があります。

public IActionResult DisplayFromDatabase(int documentId)
{
    // Retrieve byte array from database or system
    byte[] pdfData = GetPdfFromDatabase(documentId);
    // Load PDF document from bytes
    var PDF = PdfDocument.FromBytes(pdfData);
    // Optionally sign or modify the PDF
    // pdf.SignWithDigitalCertificate(...);
    // Set response headers for inline display
    Response.Headers.Add("Content-Disposition",
                        $"inline; filename=document_{documentId}.pdf");
    Response.Headers.Add("Content-Length", pdfData.Length.ToString());
    // Return file to open in browser
    return File(pdfData, "application/pdf");
}
public IActionResult DisplayFromDatabase(int documentId)
{
    // Retrieve byte array from database or system
    byte[] pdfData = GetPdfFromDatabase(documentId);
    // Load PDF document from bytes
    var PDF = PdfDocument.FromBytes(pdfData);
    // Optionally sign or modify the PDF
    // pdf.SignWithDigitalCertificate(...);
    // Set response headers for inline display
    Response.Headers.Add("Content-Disposition",
                        $"inline; filename=document_{documentId}.pdf");
    Response.Headers.Add("Content-Length", pdfData.Length.ToString());
    // Return file to open in browser
    return File(pdfData, "application/pdf");
}
Public Function DisplayFromDatabase(documentId As Integer) As IActionResult
    ' Retrieve byte array from database or system
    Dim pdfData As Byte() = GetPdfFromDatabase(documentId)
    ' Load PDF document from bytes
    Dim PDF = PdfDocument.FromBytes(pdfData)
    ' Optionally sign or modify the PDF
    ' pdf.SignWithDigitalCertificate(...)
    ' Set response headers for inline display
    Response.Headers.Add("Content-Disposition", $"inline; filename=document_{documentId}.pdf")
    Response.Headers.Add("Content-Length", pdfData.Length.ToString())
    ' Return file to open in browser
    Return File(pdfData, "application/pdf")
End Function
$vbLabelText   $csharpLabel

どのような高度な機能が使用できますか?

HTML オブジェクト タグとリテラル コントロールの統合が必要なシナリオでは、IronPDF はCSS スタイル画像、さらにはWeb フォントを含む高度な HTML から PDF への変換をサポートします。 ライブラリには、ピクセルパーフェクトな結果を実現するための包括的なトラブルシューティング ガイドも用意されています。 これにより、ファイルデータに簡単にアクセスできるようになります。

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

IronPDF を使用すると、ASP.NET C# で PDF を新しいウィンドウで開く方法を簡単に学習できます。 PDF 生成の複雑さを処理し、HTTP ヘッダーを適切に設定することで、開発者はプログラム内でクリーンで保守しやすいコードを維持しながら、ブラウザー間で一貫した表示を保証できます。 HTML 文字列、既存のPDF ドキュメントデータベースのバイト配列のいずれを扱う場合でも、IronPDF はユーザーが期待するとおりに PDF コンテンツを配信するために必要なツールを提供します。

今すぐ IronPDF の無料トライアルを開始してASP.NET アプリケーションにプロフェッショナルなPDF 機能を実装してください。 実稼働環境での展開には、エンタープライズ Web アプリケーション向けの包括的なサポート追加機能を含むライセンス オプションをご確認ください。

よくある質問

ASP.NETとC#を使ってPDFを新しいブラウザのタブで開くには?

ASP.NETとC#を使ってPDFを新しいブラウザータブで開くには、IronPDFを使ってPDFドキュメントを生成し、ストリーミングすることができます。レスポンスに正しいHTTPヘッダーを設定することで、PDFをダウンロードする代わりに新しいタブで開くことができます。

PDFをブラウザのタブで表示する利点は何ですか?

ブラウザのタブにPDFを表示することで、ユーザーは最初にダウンロードすることなく、ブラウザで直接ドキュメントを見ることができ、ユーザーエクスペリエンスが向上します。また、このアプローチは、ユーザーをサイトに長くとどめ、ブラウジングセッションのコンテキストを維持します。

PDFを新しいタブで開くためのHTTPヘッダの設定方法を教えてください。

PDFを新しいタブで開くためのHTTPヘッダを設定するには、'Content-Disposition: inline; filename="yourfile.pdf"'を使うようにしてください。このヘッダは、ブラウザにPDFをブラウザウィンドウ内にインラインで表示しようとすることを示唆します。

JavaScriptを使ってPDFを新しいウィンドウで開くことはできますか?

はい、JavaScriptを使ってPDFを新しいウィンドウで開くことができます。target属性を'_blank'に設定したhyperlink要素を作成することで、PDFを新しいブラウザのタブまたはウィンドウで確実に開くことができます。

IronPDFはASP.NETの様々なPDF機能をサポートしていますか?

はい、IronPDFはASP.NETでPDFの作成、編集、レンダリング、ブラウザのタブで開くなど、幅広いPDF機能をサポートしています。

ブラウザのタブに表示されるPDFの外観をカスタマイズすることは可能ですか?

PDF自体の外観のカスタマイズはPDF生成プロセスで行われますが、ブラウザのタブでの表示方法はブラウザのPDFビューア機能に依存します。IronPdfはブラウザでうまく表示される高品質のPDFを生成するのに役立ちます。

IronPDFはウェブアプリケーションでのPDF表示を改善する上でどのような役割を果たしますか?

IronPdfは開発者にプログラムでPDFを生成・操作するツールを提供することで、ウェブアプリケーションでのPDF表示を強化し、ブラウザでの表示に最適化され、特定のユーザーニーズを満たすことを保証します。

IronPDFは大きなPDFファイルを効率的に処理できますか?

IronPDFは大容量のPDFファイルを効率的に処理するように設計されており、新しいブラウザのタブでPDFを開く際に、迅速なレンダリングと最小のロード時間を保証するパフォーマンスの最適化を提供します。

IronPdfはどのようにして異なるブラウザ間の互換性を確保しているのですか?

IronPdfは異なるブラウザ間で互換性のある標準準拠のPDFファイルを生成し、ユーザーがどのブラウザを選んでも一貫した閲覧体験を保証します。

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

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

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