IRONSOFTWAREHOME
IRONPDF NUTZEN

Wie man eine PDF-Datei in einem neuen Tab in Blazor öffnet

Curtis Chau
Curtis Chau
Updated: 23. April 2026

Um PDFs aus Blazor Server-Anwendungen in neuen Browser-Tabs zu öffnen, verwenden Sie IronPDF für die serverseitige PDF-Generierung in Kombination mit JavaScript Interop zur clientseitigen Fensterverwaltung. Dadurch wird die Herausforderung der grenzüberschreitenden Kommunikation gelöst.

Das Öffnen von PDF-Dokumenten in einem neuen Browser-Tab ist eine häufige Anforderung für Blazor-Webanwendungen. Dieses Tutorial zeigt, wie PDFs mit IronPDF generiert werden und mit Hilfe von JavaScript Interop in neuen Tabs angezeigt werden, um den Benutzern ein nahtloses Dokumentanzeigeerlebnis zu bieten. Dieses Beispiel konzentriert sich auf eine Blazor-Server-Version.

Welche Voraussetzungen benötige ich für mein Blazor -Projekt?

Beginnen Sie mit der Erstellung eines neuen Blazor-Serverprojekts in Visual Studio 2022. Installieren Sie IronPDF über die NuGet-Paket-Manager-Konsole:

PM > Install-Package IronPdf

Konfigurieren Sie Ihre IronPDF-Lizenz in Program.cs, um die volle Funktionalität zu aktivieren:

License.LicenseKey = "YOUR-LICENSE-KEY";

Sie benötigen einen Lizenzschlüssel , um alle Funktionen freizuschalten. IronPDF arbeitet nahtlos mit Blazor Server-Anwendungen zusammen und bietet robuste PDF-Generierungsfunktionen für moderne Webanwendungen. Wenn Sie IronPDF noch nicht kennen, werfen Sie einen Blick in die Kurzanleitung , um sich mit den Grundlagen vertraut zu machen.

Warum kann Blazor PDFs nicht direkt in neuen Tabs öffnen?

Blazor-Serveranwendungen können die Browser-Tabs nicht direkt über C#-Code auf dem Server manipulieren. Das Öffnen einer PDF-Datei in einem neuen Tab aus Blazor erfordert JavaScript Interop (JS-Interop), um die serverseitige PDF-Generierung mit der clientseitigen Fensterverwaltung zu verbinden.

IronPDF ermöglicht es Entwicklern, hochwertige PDF-Dokumente auf dem Server zu erzeugen, die dann mit der window.open()-Funktionalität von JavaScript angezeigt werden können. Dieser Ansatz löst ein häufig auftretendes Problem der Client-Server-Schnittstelle in .NET Anwendungen. Die Chrome-Rendering-Engine der Bibliothek gewährleistet eine pixelgenaue HTML-zu-PDF- Konvertierung und erhält so die visuelle Integrität Ihrer Dokumente.

Bei der Arbeit mit Blazor und IronPDF ist es wichtig zu verstehen, dass die JavaScript Ausführung clientseitig erfolgt, während die PDF-Generierung serverseitig stattfindet. Diese Trennung erfordert den Einsatz von JavaScript Interop für Fensterverwaltungsaufgaben.

Wie implementiere ich JavaScript Funktionen in meiner Blazor -Webanwendung?

Fügen Sie diesen JavaScript-Code in Ihre _Host.cshtml-Datei ein, um die PDF-Anzeige in neuen Browser-Tabs zu bearbeiten. Dieses Modul verwaltet clientseitige Fensteroperationen:

<script>
    window.openPdfInNewTab = function (pdfData, fileName) {
        // Convert base64 to blob
        const byteCharacters = atob(pdfData);
        const byteNumbers = new Array(byteCharacters.length);
        for (let i = 0; i < byteCharacters.length; i++) {
            byteNumbers[i] = byteCharacters.charCodeAt(i);
        }
        const byteArray = new Uint8Array(byteNumbers);
        // The type is 'application/pdf', not 'image/png' or 'image/jpg'
        const blob = new Blob([byteArray], { type: 'application/pdf' }); 
        // Create URL and open in new tab
        const blobUrl = URL.createObjectURL(blob);
        const newWindow = window.open(blobUrl, '_blank');
        if (newWindow) {
            newWindow.document.title = fileName || 'PDF Document';
        }
        // Clean up
        setTimeout(() => URL.revokeObjectURL(blobUrl), 100);
        return newWindow !== null;
    };
</script>
HTML

Die window.openPdfInNewTab-JavaScript-Funktion ist entscheidend zum Öffnen eines neuen Tabs vom Server. Es akzeptiert die PDF-Daten als Base64-String vom Blazor-Server, und der clientseitige Code wandelt es in ein binäres Blob-Objekt um. Dieses Vorgehen ähnelt der Konvertierung von PDF in Base64 , ist aber umgekehrt, wodurch der Browser den PDF-Inhalt anzeigen kann.

Dieses Blob wird dann verwendet, um eine temporäre URL zu erstellen, die schließlich an window.open(blobUrl, '_blank') übergeben wird, um den Browser zu zwingen, das PDF in einem neuen Tab zu öffnen. Die Blob-URL-Technik wird häufig verwendet, wenn PDFs aus dem Speicher geladen werden sollen, ohne dass serverseitiger Dateispeicher benötigt wird.

Bei Anwendungen, die erhöhte Sicherheitsanforderungen stellen, sollten Sie die Implementierung von PDF-Berechtigungen und Passwörtern in Betracht ziehen, bevor Sie das Dokument an den Client übermitteln. Sie können auch digitale Signaturen verwenden, um die Echtheit von Dokumenten sicherzustellen.

Wie erstelle ich die Blazor Komponente?

Erstellen Sie eine neue Razor-Komponente, die PDFs erzeugt und in neuen Tabs öffnet. Dies dient als Hauptvorlage für die Lösung:

@page "/pdf-viewer"
@using IronPdf
@inject IJSRuntime JS
<h3>Open PDF in New Tab</h3>
<div class="mb-3">
    <label>Enter URL:</label>
    <input @bind="targetUrl" class="form-control" />
</div>
<button class="btn btn-primary" @onclick="GenerateAndOpenPdf" 
        disabled="@isProcessing">
    @if (isProcessing)
    {
        <span>Generating PDF...</span>
    }
    else
    {
        <span>Generate and Open PDF</span>
    }
</button>
@if (!string.IsNullOrEmpty(errorMessage))
{
    <div class="alert alert-danger mt-3">@errorMessage</div>
}
@code {
    private string targetUrl = "___PROTECTED_URL_69___";
    private bool isProcessing = false;
    private string errorMessage = "";
    private async Task GenerateAndOpenPdf()
    {
        isProcessing = true;
        errorMessage = "";
        try
        {
            // Configure Chrome PDF renderer. Note the rendering details
            var renderer = new ChromePdfRenderer
            {
                RenderingOptions = new ChromePdfRenderOptions
                {
                    MarginTop = 10,
                    MarginBottom = 10,
                    MarginLeft = 10,
                    MarginRight = 10,
                    EnableJavaScript = true,
                    RenderDelay = 500
                }
            };
            // Generate PDF from URL
            var pdfDocument = await Task.Run(() => 
                renderer.RenderUrlAsPdf(targetUrl));
            // Convert to base64
            byte[] pdfBytes = pdfDocument.BinaryData;
            string base64Pdf = Convert.ToBase64String(pdfBytes);
            // Open in new tab via JS interop
            bool success = await JS.InvokeAsync<bool>("openPdfInNewTab", 
                base64Pdf, $"Document_{DateTime.Now:yyyyMMdd_HHmmss}.pdf");
            if (!success)
            {
                // Giving the user an understandable error is key
                errorMessage = "Pop-up blocked. Please allow pop-ups for this site."; 
            }
        }
        catch (Exception ex)
        {
            errorMessage = $"Error: {ex.Message}";
        }
        finally
        {
            isProcessing = false;
        }
    }
}
Text

Dieser Codeblock definiert die hauptsächliche interaktive Seite. Das Razor-Markup erstellt eine einfache Benutzeroberfläche mit einem URL-Eingabefeld und einem Button. Der C#-@code-Block verarbeitet die Logik: Wenn der Button geklickt wird, verwendet er eine ChromePdfRenderer-Instanz, um das PDF von der vom Benutzer bereitgestellten URL zu erstellen. Die Rendering-Optionen ermöglichen es Ihnen, Ränder anzupassen, JavaScript Rendering zu aktivieren und Rendering-Verzögerungen für dynamische Inhalte festzulegen.

Anschließend wandelt er das resultierende PDF-Byte-Array in einen Base64-String um und nutzt @inject IJSRuntime JS, um die JavaScript-Funktion aufzurufen, die das Dokument für den Benutzer öffnet. Dieses Muster ist besonders nützlich beim Konvertieren von URLs in PDF in Webanwendungen. Für komplexere Szenarien empfiehlt sich die Implementierung einer asynchronen PDF-Generierung, um eine bessere Performance zu erzielen.

Erwägen Sie die Implementierung einer benutzerdefinierten Protokollierung , um die Aktivitäten der PDF-Generierung zu verfolgen und Probleme zu beheben. Sie können Ihre PDFs auch mit Wasserzeichen oder Kopf- und Fußzeilen aufwerten.

Wie sieht die Benutzeroberfläche aus?

Einfaches Webformular mit vorausgefülltem URL-Eingabefeld mit 'https://ironpdf.com' und einem 'PDF generieren und öffnen'-Button zum Öffnen von PDFs in neuen Tabs

Wie wird die PDF-Datei in einem neuen Tab angezeigt?

PDF-Viewer zeigt eine Präsentation einer C# PDF-Bibliothek mit mehreren Seiten, die in einem Browser-Tab angezeigt werden, einschließlich der IronPDF for .NET-Dokumentation mit sichtbaren Navigationselementen und Zoom-Optionen

Wie arbeite ich mit dynamischen HTML-Inhalten?

Um PDFs aus dynamischem Inhalt statt aus URLs zu generieren, ändern Sie Ihren Ansatz, um RenderHtmlAsPdf zu verwenden:

private async Task GenerateFromHtml()
{
    // Define CSS styles inside the HTML string for structure and appearance.
    string htmlContent = $@"
        <!DOCTYPE html>
        <html>
        <head>
            <style>
                body {{font-family: Arial; padding: 20px;}}
                h1 {{color: #2c3e50;}}
                table {{border-collapse: collapse; width: 100%;}}
                th, td {{border: 1px solid #ddd; padding: 8px;}}
            </style>
        </head>
        <body>
            <h1>{documentTitle}</h1>
            <p>{documentContent}</p>
            <table>
                <tr>
                    <th>Item</th>
                    <th>Value</th>
                </tr>
                <tr>
                    <td>Generated</td>
                    <td>{DateTime.Now}</td>
                </tr>
            </table>
        </body>
        </html>";
    var renderer = new ChromePdfRenderer();
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    byte[] pdfBytes = pdfDocument.BinaryData;
    await JS.InvokeVoidAsync("openPdfInNewTab", 
        Convert.ToBase64String(pdfBytes), "dynamic.pdf");
}
C#

Die GenerateFromHtml-Methode demonstriert, wie IronPDF ein PDF aus dynamisch generiertem HTML-Markup anstelle einer bestehenden URL erstellen kann. Es erstellt einen vollständigen HTML-String mit einer Überschrift, Inhalt und dynamischen Daten. Die Methode RenderHtmlAsPdf übernimmt die Konvertierung nahtlos. Dieser Ansatz eignet sich perfekt für die Erstellung von PDF-Berichten mit dynamischen Daten aus Datenbanken oder APIs.

Sie können Ihren HTML-Inhalt mit benutzerdefinierten Schriftarten , responsivem CSS und sogar eingebetteten Bildern mithilfe von DataURIs aufwerten. Bei komplexen Layouts empfiehlt sich die Verwendung von Bootstrap und Flexbox , um eine konsistente Darstellung zu gewährleisten.

Bei der Arbeit mit internationalen Sprachen bietet IronPDF hervorragende Unicode-Unterstützung , um die korrekte Darstellung von Zeichen in verschiedenen Sprachen und Schriftsystemen zu gewährleisten. Sie können außerdem Seitenumbrüche steuern und benutzerdefinierte Papierformate für spezielle Dokumentanforderungen implementieren.

Wie sieht die aktualisierte Benutzeroberfläche aus?

Zwei Formularbereiche mit Optionen zum Öffnen von PDFs aus URL und zum Generieren von PDFs aus dynamischem HTML-Inhalt mit gestalteten Eingabefeldern, Platzhaltertexten und Aktionsbuttons zur verbesserten Benutzerführung

Wie wird das dynamische PDF angezeigt?

Browser zeigt ein PDF-Dokument in einem neuen Tab mit einem formatierten Bericht mit dem Titel 'Dynamic PDF Report' und Tabellendaten sowie einem Erstellungszeitstempel, der das erfolgreiche Rendering dynamischer Inhalte demonstriert

Welche häufigen Probleme sollte ich behandeln?

Warum ist Browserkompatibilität wichtig?

Verschiedene Browser handhaben Blob-URLs unterschiedlich. Testen Sie Ihre Implementierung in Chrome, Firefox, Edge und Safari, um ein konsistentes Verhalten sicherzustellen. Manche Browser haben möglicherweise spezielle Anforderungen an die Popup-Verarbeitung oder Sicherheitsbeschränkungen. Erwägen Sie die Implementierung von Ausweichmechanismen für Browser, die Popups standardmäßig blockieren.

Bei der Arbeit mit Azure-Bereitstellungen können 502 Bad Gateway-Fehler oder andere hostingspezifische Probleme auftreten. Testen Sie Ihre PDF-Generierung stets in der Zielumgebung und implementieren Sie eine angemessene Fehlerbehandlung .

Wie gehe ich am besten mit großen PDF-Dateien um?

Für große PDF-Dokumente ziehen Sie in Betracht, serverseitiges Caching zu implementieren, um die Leistung zu verbessern:

services.AddMemoryCache();
// Cache generated PDFs to avoid regeneration
private readonly IMemoryCache _cache;

public async Task<byte[]> GetCachedPdf(string cacheKey)
{
    if (!_cache.TryGetValue(cacheKey, out byte[] pdfBytes))
    {
        // Generate PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_70___");
        pdfBytes = pdf.BinaryData;
        
        // Cache for 10 minutes
        _cache.Set(cacheKey, pdfBytes, TimeSpan.FromMinutes(10));
    }
    return pdfBytes;
}

Für eine optimale Performance bei großen Dateien sollten Sie PDF-Komprimierungstechniken und Linearisierung für eine schnelle Webanzeige in Betracht ziehen. Sie können auch die parallele PDF-Generierung für Stapelverarbeitungsszenarien untersuchen.

Welche Navigationsalternativen kann ich nutzen?

Neben der JavaScript Interoperabilität können Sie PDFs über Middleware für statische Dateien bereitstellen und Standard-HTML-Anker-Tags für alternative Navigation verwenden:

<a href="/pdfs/document.pdf" target="_blank">Open PDF</a>
HTML

Dieser Ansatz funktioniert gut für vorab generierte PDFs, aber es fehlen die dynamischen Erstellungsfähigkeiten der JS-Interop-Methode. Für komplexere Szenarien empfiehlt sich die Implementierung einer dedizierten PDF-Anzeigekomponente oder die Verwendung von MemoryStream zum Bereitstellen von PDFs, ohne diese auf der Festplatte zu speichern.

Alternativ könnten Sie PDFs auch in einem Cloud-Speicher wie Azure Blob Storage speichern, um eine bessere Skalierbarkeit zu erzielen. Bei Anwendungen, die einen Offline-Zugriff erfordern, sollten Sie die Implementierung einer PDF-Download-Funktion zusammen mit der Funktion "Neuer Tab" in Betracht ziehen.

Welche Best Practices sollte ich befolgen?

  1. Fehlerbehandlung: Die PDF-Generierung sollte in try-catch-Blöcke mit aussagekräftigen Fehlermeldungen eingebettet werden. Probleme mithilfe benutzerdefinierter Fehlerprotokollierung verfolgen.

  2. Leistung: Verwenden Sie async/await, um ein Blockieren der Benutzeroberfläche zu verhindern. Implementieren Sie Renderverzögerungen for JavaScript-intensive Seiten. Um schnellere erste Renderings zu ermöglichen, sollte die Engine vorgewärmt werden.

  3. Benutzererfahrung: Ladeanzeigen anzeigen und Pop-up-Blocker elegant handhaben. Fortschrittsverfolgung für mehrseitige PDFs . Geben Sie klares Feedback zu Netzwerkproblemen .

  4. DOM-Manipulation: Beachten Sie, dass serverseitiges C# das clientseitige DOM nicht direkt manipulieren kann. Verwenden Sie JavaScript Nachrichten-Listener für komplexe Interaktionen.

  5. Sicherheit: Alle Benutzereingaben müssen vor der PDF-Generierung überprüft werden. Wenden Sie bei Bedarf PDF-Bereinigung , digitale Signaturen und Verschlüsselung an. Verwenden Sie HTTPS für eine sichere Übertragung .

  6. Ressourcenmanagement: PDF-Dokumente ordnungsgemäß entsorgen und Speicherlecks vermeiden. Überwachen Sie die Paketgröße für optimierte containerisierte Bereitstellungen .

Abschluss

Die Kombination der leistungsstarken PDF-Generierungsfunktionen von IronPDF mit der JavaScript Interoperabilität von Blazor bietet eine robuste Lösung zum Öffnen von PDFs in neuen Browser-Tabs. Dieser Ansatz ermöglicht es Entwicklern, dynamische, Professional PDF-Dokumente zu erstellen, die sich nahtlos in moderne Blazor Anwendungen integrieren lassen. Egal ob Sie HTML in PDF konvertieren , Formulare erstellen oder komplexe Dokumente organisieren , IronPDF bietet die Werkzeuge, die für die professionelle PDF-Bearbeitung erforderlich sind.

Bereit, um PDF-Funktionalität in Ihrem Blazor-Projekt zu implementieren? Starten Sie noch heute Ihre kostenlose IronPDF-Testversion. Die Testversion umfasst alle Funktionen ohne Wasserzeichen und umfassenden Support, um Ihren Erfolg sicherzustellen. Für den Einsatz in Produktionsumgebungen informieren Sie sich über unsere Lizenzierungsoptionen und Bereitstellungsleitfäden für verschiedene Plattformen, darunter Windows , Linux und Azure .

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.