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

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

はじめに

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

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

この記事では、IronPDFがどのようにPDFファイルを生成し、ブラウザで表示するかを紹介します。

PDFファイルが開かずにダウンロードされるのはなぜですか

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

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

HTML文字列やデータソースから動的に生成されるPDF文書を扱う場合、サーバー側の設定はさらに複雑になります。 正しいパスと適切なヘッダーがなければ、一貫性のあるクロスブラウザ表示を実現することは困難になります。 多くの開発者は、Stack Overflow ディスカッションに、この根強い問題の解決策を求めています。 検索機能を使用すると、迅速な回答を見つけることができます。

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

IronPdfはPDFの生成と表示という複雑なタスクを簡単なコードに変換します。 IronPdfはChromeベースのレンダリングエンジンを使って、HTMLコンテンツからピクセルパーフェクトなPDFドキュメントを生成します。

このライブラリのChromePdfRendererクラスは、PDF作成へのモダンなアプローチを提供します。 開発者は、バイト配列やレスポンスストリームを手動で管理する代わりに、HTML文字列HTMLファイル、またはURLから、簡単なメソッド呼び出しでPDFを生成できます。 IronPDFはレンダリングプロセスを内部で処理し、異なる環境でも一貫した出力を保証します。

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

IronPDFでPDFファイルを生成して開くには?

まず、NuGetパッケージマネージャを通してIronPDFをインストールしてください:

Install-Package IronPdf

以下は、PDFファイルを生成し、ブラウザのタブで開くように提供する.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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

表示される PDF

How to Open PDF in New Window ASP .NET C# with IronPDF:画像1 - IronPDFで新しいウィンドウでPDFを開く方法ASP .NET C#に関連する4つの画像中の画像1

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

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

LiteralコントロールまたはLiteralタグを使用する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();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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を表示する

How to Open PDF in New Window ASP .NET C# with IronPDF:画像2 - 新しいタブでPDFを開いた

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

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" />
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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 ファイル

How to Open PDF in New Window ASP .NET C# with IronPDF:イメージ3 - 埋め込まれたPDFファイル

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

さまざまなファイル ソースを扱うには?

IronPdfはHTML文字列以外の様々な入力ソースの扱いに優れています。 既存の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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFを開く

How to Open PDF in New Window ASP .NET C# with IronPDF:画像4 - 既存の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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

結論

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

あなたのASP.NETアプリケーションにIronPDFのプロフェッショナルな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ボットを作成したりして、技術に対する愛情と創造性を組み合わせています。