Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comment ouvrir un PDF dans une nouvelle fenêtre ASP .NET C# avec IronPDF for .NET

Introduction

L'ouverture de fichiers PDF dans une nouvelle fenêtre ou un nouvel onglet du navigateur est une demande courante dans les applications web ASP.NET. Les développeurs sont souvent confrontés à des documents PDF qui se téléchargent automatiquement au lieu de s'afficher dans le navigateur lorsque les utilisateurs cliquent sur un lien. Ce comportement frustrant perturbe l'expérience de l'utilisateur, en particulier lorsqu'il consulte des rapports, des factures ou de la documentation à laquelle il doit se référer tout en continuant à travailler sur la page en cours.

IronPDF apporte une solution élégante à ce défi, en offrant de puissantes fonctionnalités de génération et d'affichage de PDF qui s'intègrent de manière transparente aux applications ASP.NET. Plutôt que de se débattre avec les en-têtes Response et les paramètres Content-Disposition, les développeurs peuvent s'appuyer sur le ChromePdfRenderer d'IronPDF pour créer et servir des fichiers PDF qui s'ouvrent de manière fiable dans de nouveaux onglets du navigateur.

Dans cet article, nous allons voir comment IronPDF est la réponse à la génération et à l'affichage de fichiers PDF dans le navigateur de votre ordinateur.

Pourquoi les fichiers PDF se téléchargent-ils au lieu de s'ouvrir ?

Lors de la diffusion de fichiers PDF via ASP.NET, le comportement par défaut se traduit souvent par des téléchargements plutôt que par l'affichage dans le navigateur. Cela est dû à la manière dont le serveur envoie le fichier au navigateur par le biais des en-têtes de réponse HTTP. L'en-tête Content-Disposition détermine en particulier si un fichier PDF s'ouvre en ligne ou se télécharge.

Le code ASP.NET traditionnel utilisant Response.BinaryWrite avec un tableau d'octets définit souvent des en-têtes qui déclenchent des téléchargements. Même lorsque les développeurs définissent Response.ContentType = "application/pdf", les valeurs Content-Disposition manquantes ou incorrectes font que le navigateur télécharge le document PDF au lieu de l'afficher. En outre, les différents navigateurs traitent les fichiers PDF de manière incohérente - alors que les plugins Adobe PDF Reader peuvent afficher les fichiers en ligne, les navigateurs mobiles procèdent souvent par défaut au téléchargement.

La configuration côté serveur devient encore plus complexe lorsqu'il s'agit de documents PDF générés dynamiquement à partir de chaînes HTML ou de sources de données. Sans le chemin d'accès correct et les en-têtes adéquats, il est difficile d'obtenir un affichage cohérent entre les navigateurs. De nombreux développeurs se tournent vers Stack Overflow discussions à la recherche de solutions à ce problème persistant. Utilisez la fonction de recherche pour trouver des réponses rapides.

Comment IronPDF simplifie-t-il l'affichage des PDF?

IronPDF transforme la tâche complexe de la génération et de l'affichage de PDF en un code simple. Grâce à son moteur de rendu basé sur Chrome, IronPDF génère des documents PDF parfaits au pixel près à partir de contenu HTML, tout en gérant automatiquement les détails techniques qui font souvent trébucher les développeurs.

La classe ChromePdfRenderer de la bibliothèque fournit une approche moderne de la création de PDF. Au lieu de gérer manuellement des tableaux d'octets et des flux de réponses, les développeurs peuvent générer des PDF à partir de chaînes HTML, fichiers HTML, ou d'URL avec de simples appels de méthode. IronPDF gère le processus de rendu en interne, ce qui garantit une sortie cohérente dans différents environnements.

Au-delà de la génération de base, IronPDF offre des options de rendu étendues pour personnaliser la sortie, notamment la taille du papier, les marges et les délais d'exécution JavaScript. Cette flexibilité en fait un outil idéal pour la création de documents simples ou de rapports complexes avec des graphiques et du contenu dynamique. Nous vous invitons à nous faire part de vos commentaires sur les paramètres de rendu que vous préférez.

Comment générer et ouvrir des fichiers PDF avec IronPDF?

Commencez par installer IronPDF via le gestionnaire de paquets NuGet :

Install-Package IronPdf

Voici un exemple complet pour ASP.NET Core qui génère un fichier PDF et le sert pour qu'il s'ouvre dans l'onglet de notre navigateur :

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 affiché

Comment ouvrir un PDF dans une nouvelle fenêtre ASP .NET C# avec IronPDF : Image 1 - Image 1 de 4 liées à Comment ouvrir un PDF dans une nouvelle fenêtre ASP .NET C# avec IronPDF

Le code ci-dessus utilise [HttpGet]. Si vous créiez ce PDF après qu'un utilisateur a soumis un formulaire, vous utiliseriez probablement l'attribut [HttpPost]. Ainsi, vos lecteurs sauront faire la différence entre une simple demande et la soumission d'une demande de poste contenant des données.

La clé de l'ouverture des fichiers PDF dans le navigateur consiste à définir l'en-tête Content-Disposition sur "inline" plutôt que sur "attachment". Cela indique au navigateur d'afficher le fichier plutôt que de le sauvegarder en le téléchargeant. Les paramètres object sender et EventArgs e dans les événements traditionnels de clic de bouton ASP.NET peuvent déclencher l'action de ce contrôleur.

Pour les applications WebForms utilisant un contrôle ou une balise Literal, vous pouvez intégrer la visionneuse PDF directement sur la page en cours :

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

Pour les utilisateurs qui cherchent à créer des formulaires PDF ou à ajouter des signatures numériques, IronPDF offre une prise en charge complète de ces fonctionnalités avancées.

Qu'en est-il du contrôle des onglets du navigateur ?

Alors que le code côté serveur détermine si un PDF s'affiche en ligne, le contrôle de son ouverture dans le même onglet ou dans un nouvel onglet nécessite du JavaScript côté client. L'attribut target dans les liens HTML offre la solution la plus simple pour ouvrir le PDF dans une nouvelle fenêtre :

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

PDF affiché dans un nouvel onglet du navigateur

Comment ouvrir un PDF dans une nouvelle fenêtre ASP .NET C# avec IronPDF : Image 2 - PDF ouvert dans un nouvel onglet

Pour plus de contrôle, la fonction window.open de JavaScript fonctionne bien avec les URL générées dynamiquement pour ouvrir les fichiers PDF dans un nouvel onglet du navigateur :

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

Dans les applications web ASP.NET, combinez ceci avec un contrôle de bouton :

<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

Note:Lorsque vous utilisez la fonction JavaScript window.open(), le deuxième argument '_blank' permet d'ouvrir le document dans une nouvelle fenêtre ou un nouvel onglet séparé. Le nom de la nouvelle fenêtre peut être laissé en blanc si vous n'avez pas besoin d'en spécifier un.

La balise objet HTML offre une autre possibilité d'intégrer des documents PDF directement dans la page, ce qui est particulièrement utile lorsque les utilisateurs ont installé 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

Fichier PDF intégré

Comment ouvrir un PDF dans une nouvelle fenêtre ASP .NET C# avec IronPDF : Image 3 - Fichier PDF intégré

Cette approche fonctionne bien lorsque Adobe PDF Reader ou des plugins similaires sont disponibles, bien que les navigateurs modernes prennent de plus en plus en charge l'affichage natif des PDF sans logiciel supplémentaire. Selon la documentation de Microsoft, des en-têtes HTTP appropriés combinés à un code côté client constituent la solution inter-navigateurs la plus fiable. Veuillez noter l'importance de l'attribut target="_blank".

Comment gérer différentes sources de fichiers ?

IronPDF excelle dans la gestion de diverses sources d'entrée au-delà des chaînes HTML. Lorsque l'on travaille avec des fichiers PDF existants ou que l'on génère des documents à partir de différents formats de données, la bibliothèque offre des options flexibles pour servir les documents PDF aux utilisateurs.

Pour le chargement de documents PDF existants à partir du bon chemin :

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 ouvert

Comment ouvrir un PDF dans une nouvelle fenêtre ASP .NET C# avec IronPDF : Image 4 - Visualisation d'un document PDF existant

L'utilisation de tableaux d'octets provenant d'une base de données ou d'une source externe nécessite une manipulation minutieuse afin de garantir que le PDF s'ouvre correctement :

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

Pour les scénarios nécessitant l'intégration de balises d'objet HTML avec des contrôles Literal, IronPDF prend en charge la conversion avancée de HTML en PDF, y compris le style CSS, les images et même les polices web. La bibliothèque propose également des guides de dépannage complets pour obtenir des résultats au pixel près. Cela vous permet d'accéder facilement aux données du fichier.

Conclusion

Apprendre à ouvrir un PDF dans une nouvelle fenêtre ASP .NET C# devient simple avec IronPDF. En gérant les complexités de la génération de PDF et en définissant correctement les en-têtes HTTP, les développeurs peuvent garantir un affichage cohérent sur tous les navigateurs tout en conservant un code propre et facile à maintenir dans leurs programmes. Que vous travailliez avec des chaînes HTML, des documents PDF existants ou des tableaux d'octets provenant de bases de données, IronPDF fournit les outils nécessaires pour fournir du contenu PDF exactement comme les utilisateurs l'attendent.

Démarrez votre essai gratuit d'IronPDF dès aujourd'hui pour mettre en œuvre une fonctionnalité PDF professionnelle dans vos applications ASP.NET. Pour un déploiement en production, découvrez nos options de licence qui comprennent une assistance complète et des fonctionnalités supplémentaires pour les applications web d'entreprise.

Questions Fréquemment Posées

Comment puis-je ouvrir des PDF dans de nouveaux onglets du navigateur en utilisant ASP.NET et C# ?

Pour ouvrir des PDF dans de nouveaux onglets de navigateur à l'aide d'ASP.NET et de C#, vous pouvez utiliser IronPDF pour générer et diffuser vos documents PDF. En définissant les bons en-têtes HTTP dans votre réponse, vous vous assurez que le PDF s'ouvre dans un nouvel onglet au lieu d'être téléchargé.

Quel est l'avantage d'afficher les PDF dans les onglets du navigateur ?

L'affichage des PDF dans les onglets du navigateur améliore l'expérience de l'utilisateur en lui permettant de consulter les documents directement dans son navigateur sans avoir à les télécharger au préalable. Cette approche permet également aux utilisateurs de rester plus longtemps sur votre site et de conserver le contexte de leur session de navigation.

Comment définir les en-têtes HTTP pour ouvrir les PDF dans un nouvel onglet ?

Pour définir les en-têtes HTTP permettant d'ouvrir les PDF dans un nouvel onglet, veillez à utiliser "Content-Disposition : inline ; filename="yourfile.pdf"". Cet en-tête indique au navigateur qu'il doit essayer d'afficher le PDF en ligne, dans la fenêtre du navigateur.

JavaScript peut-il être utilisé pour ouvrir des PDF dans de nouvelles fenêtres ?

Oui, JavaScript peut être utilisé pour ouvrir des PDF dans de nouvelles fenêtres. En créant un élément hyperlien dont l'attribut target est "_blank", vous pouvez vous assurer que le PDF s'ouvre dans un nouvel onglet ou une nouvelle fenêtre du navigateur.

IronPDF prend-il en charge diverses fonctionnalités PDF en ASP.NET ?

Oui, IronPDF prend en charge un large éventail de fonctionnalités PDF en ASP.NET, notamment la création, l'édition et le rendu de PDF, ainsi que leur ouverture dans des onglets de navigateur.

Est-il possible de personnaliser l'apparence des PDF affichés dans les onglets du navigateur ?

Alors que la personnalisation de l'apparence des PDF eux-mêmes se fait par le biais du processus de génération des PDF, la façon dont ils sont affichés dans les onglets du navigateur dépend des capacités de visualisation des PDF du navigateur. IronPDF aide à générer des PDF de haute qualité qui s'affichent bien dans les navigateurs.

Quel rôle joue IronPDF dans l'amélioration de l'affichage des PDF dans les applications web ?

IronPDF améliore l'affichage des PDF dans les applications web en fournissant aux développeurs des outils pour générer et manipuler les PDF de manière programmatique, en veillant à ce qu'ils soient optimisés pour l'affichage dans les navigateurs et qu'ils répondent aux besoins spécifiques des utilisateurs.

IronPDF peut-il traiter efficacement des fichiers PDF volumineux ?

Oui, IronPDF est conçu pour traiter efficacement les fichiers PDF volumineux, offrant des optimisations de performance qui garantissent un rendu rapide et des temps de chargement minimaux lors de l'ouverture des PDF dans de nouveaux onglets du navigateur.

Comment IronPDF assure-t-il la compatibilité entre les différents navigateurs ?

IronPDF génère des fichiers PDF conformes aux normes et compatibles avec les différents navigateurs, ce qui garantit aux utilisateurs une expérience de visualisation cohérente, quel que soit le navigateur qu'ils choisissent.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite