MemoryStream in PDF C#

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF ermöglicht die direkte Konvertierung von MemoryStream-Objekten in PDF-Dokumente in C# ohne Zugriff auf das Dateisystem. Übergeben Sie Ihren MemoryStream, FileStream oder ein Byte-Array an den PdfDocument-Konstruktor für die sofortige PDF-Erstellung und -Bearbeitung im Speicher.

Laden und Erstellen von MemoryStream zu PDF-Dateien in C# .NET ohne Berührung des Dateisystems. Dies funktioniert über das MemoryStream Objekt im System.IO Namensraum. Nutzen Sie diese Fähigkeit für Cloud-Umgebungen, Webanwendungen oder Szenarien, in denen der Zugriff auf das Dateisystem eingeschränkt ist.

Schnellstart: PDF aus MemoryStream in C# erstellen

Konvertieren Sie einen MemoryStream mit IronPDF in einer einzigen Codezeile in ein PDF-Dokument. Initialisieren Sie ein PdfDocument aus einem MemoryStream, um die PDF-Erstellung in C#-Anwendungen zu integrieren, ohne physische Dateien zu verarbeiten. Ideal für In-Memory-Datenverarbeitung, Netzwerkkommunikation oder Datentransformation in Echtzeit.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronPDF mit dem NuGet-Paketmanager.

    PM > Install-Package IronPdf

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var bytes = File.ReadAllBytes("sample.pdf");
    var pdfDoc = new IronPdf.PdfDocument(myMemoryStream);
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronPDF in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Wie lade ich eine PDF-Datei aus dem Speicher?

Initialisieren Sie IronPdf.PdfDocument aus diesen speicherinternen .NET-Objekten:

  • Ein MemoryStream
  • Ein FileStream
  • Binäre Daten als Byte[]

Hier ein Beispiel für das Lesen eines Streams direkt aus einer PDF-Datei und das Erstellen eines PdfDocument-Objekts:

:path=/static-assets/pdf/content-code-examples/how-to/pdf-memory-stream-from-stream.cs
using IronPdf;
using System.IO;

// Read PDF file as stream
var fileByte = File.ReadAllBytes("sample.pdf");

// Instantiate PDF object from stream
PdfDocument pdf = new PdfDocument(fileByte);
Imports IronPdf
Imports System.IO

' Read PDF file as stream
Private fileByte = File.ReadAllBytes("sample.pdf")

' Instantiate PDF object from stream
Private pdf As New PdfDocument(fileByte)
$vbLabelText   $csharpLabel

Welche Arten von Stream-Objekten kann ich verwenden?

Das Beispiel zeigt, wie man eine PDF-Datei aus dem Dateisystem liest und ein PdfDocument-Objekt erstellt. Sie können auch ein PdfDocument aus einem Byte[] initialisieren, das Sie über Netzwerkkommunikation oder andere Datenaustauschprotokolle erhalten haben. PDF-Daten in ein bearbeitbares Objekt umwandeln, um Änderungen vornehmen zu können.

Hier ist ein umfassendes Beispiel mit verschiedenen Stream-Quellen:

using IronPdf;
using System.IO;
using System.Net.Http;

// Example 1: From FileStream
using (FileStream fileStream = File.OpenRead("document.pdf"))
{
    var pdfFromFileStream = new PdfDocument(fileStream);
}

// Example 2: From MemoryStream
byte[] pdfBytes = GetPdfBytesFromDatabase(); // Your method to get PDF bytes
using (MemoryStream memoryStream = new MemoryStream(pdfBytes))
{
    var pdfFromMemoryStream = new PdfDocument(memoryStream);
}

// Example 3: From HTTP Response
using (HttpClient client = new HttpClient())
{
    byte[] pdfData = await client.GetByteArrayAsync("https://example.com/document.pdf");
    var pdfFromHttp = new PdfDocument(pdfData);
}
using IronPdf;
using System.IO;
using System.Net.Http;

// Example 1: From FileStream
using (FileStream fileStream = File.OpenRead("document.pdf"))
{
    var pdfFromFileStream = new PdfDocument(fileStream);
}

// Example 2: From MemoryStream
byte[] pdfBytes = GetPdfBytesFromDatabase(); // Your method to get PDF bytes
using (MemoryStream memoryStream = new MemoryStream(pdfBytes))
{
    var pdfFromMemoryStream = new PdfDocument(memoryStream);
}

// Example 3: From HTTP Response
using (HttpClient client = new HttpClient())
{
    byte[] pdfData = await client.GetByteArrayAsync("https://example.com/document.pdf");
    var pdfFromHttp = new PdfDocument(pdfData);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wann sollte ich MemoryStream gegenüber dateibasierten Operationen verwenden?

die MemoryStream-Operationen eignen sich hervorragend für diese Szenarien:

  1. Webanwendungen: PDFs dynamisch in ASP.NET-Anwendungen bereitstellen, ohne temporäre Serverdateien zu erstellen.

  2. Cloud-Umgebungen: Verwendung in Azure Functions oder AWS Lambda, wo der Zugriff auf das Dateisystem begrenzt ist oder temporärer Speicher kostspielig ist.

  3. Sicherheit: Verarbeiten Sie sensible Dokumente im Speicher, um temporäre Dateien auf der Festplatte zu vermeiden.

  4. Leistung: Speicheroperationen sind bei kleinen bis mittelgroßen PDF-Dateien schneller als Festplatten-E/A, insbesondere bei Solid-State- oder Netzwerkspeichern.

Wie exportiere ich PDF in MemoryStream?

Exportieren Sie geladene oder erstellte PDF-Dokumente zurück in einen MemoryStream zur Verarbeitung oder Übertragung. Dies ist nützlich, wenn PDFs in Webanwendungen verwendet oder in Datenbanken gespeichert werden.

So exportieren Sie eine PDF-Datei in MemoryStream:

using IronPdf;
using System.IO;

// Create or load a PDF document
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");

// Export to MemoryStream
using (MemoryStream memoryStream = new MemoryStream())
{
    pdf.SaveAs(memoryStream);

    // Example: Convert to byte array for database storage
    byte[] pdfBytes = memoryStream.ToArray();

    // Example: Reset position to read from beginning
    memoryStream.Position = 0;

    // Use the stream as needed (e.g., return in web response)
}
using IronPdf;
using System.IO;

// Create or load a PDF document
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");

// Export to MemoryStream
using (MemoryStream memoryStream = new MemoryStream())
{
    pdf.SaveAs(memoryStream);

    // Example: Convert to byte array for database storage
    byte[] pdfBytes = memoryStream.ToArray();

    // Example: Reset position to read from beginning
    memoryStream.Position = 0;

    // Use the stream as needed (e.g., return in web response)
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erweiterte MemoryStream-Operationen

PDFs aus mehreren MemoryStreams zusammenführen

Zusammenführen mehrerer PDF-Dokumente im Speicher ohne Zugriff auf das Dateisystem:

using IronPdf;
using System.Collections.Generic;
using System.IO;

public static byte[] MergePdfsFromMemory(List<byte[]> pdfBytesList)
{
    List<PdfDocument> pdfs = new List<PdfDocument>();

    // Load all PDFs from byte arrays
    foreach (var pdfBytes in pdfBytesList)
    {
        pdfs.Add(new PdfDocument(pdfBytes));
    }

    // Merge PDFs
    PdfDocument merged = PdfDocument.Merge(pdfs);

    // Export merged PDF to byte array
    using (MemoryStream ms = new MemoryStream())
    {
        merged.SaveAs(ms);
        return ms.ToArray();
    }
}
using IronPdf;
using System.Collections.Generic;
using System.IO;

public static byte[] MergePdfsFromMemory(List<byte[]> pdfBytesList)
{
    List<PdfDocument> pdfs = new List<PdfDocument>();

    // Load all PDFs from byte arrays
    foreach (var pdfBytes in pdfBytesList)
    {
        pdfs.Add(new PdfDocument(pdfBytes));
    }

    // Merge PDFs
    PdfDocument merged = PdfDocument.Merge(pdfs);

    // Export merged PDF to byte array
    using (MemoryStream ms = new MemoryStream())
    {
        merged.SaveAs(ms);
        return ms.ToArray();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Anwendung von Sicherheitseinstellungen im Speicher

Passwörter und Berechtigungen für PDFs festlegen und dabei alles im Speicher behalten:

using IronPdf;
using System.IO;

// Load PDF from memory
byte[] unsecuredPdfBytes = GetPdfFromDatabase();
PdfDocument pdf = new PdfDocument(unsecuredPdfBytes);

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

// Export secured PDF to memory
using (MemoryStream securedStream = new MemoryStream())
{
    pdf.SaveAs(securedStream);
    byte[] securedPdfBytes = securedStream.ToArray();
    // Store or transmit secured PDF bytes
}
using IronPdf;
using System.IO;

// Load PDF from memory
byte[] unsecuredPdfBytes = GetPdfFromDatabase();
PdfDocument pdf = new PdfDocument(unsecuredPdfBytes);

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

// Export secured PDF to memory
using (MemoryStream securedStream = new MemoryStream())
{
    pdf.SaveAs(securedStream);
    byte[] securedPdfBytes = securedStream.ToArray();
    // Store or transmit secured PDF bytes
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Best Practices für MemoryStream PDF-Operationen

  1. Anständig entsorgen: Verwenden Sie using-Anweisungen oder entsorgen Sie MemoryStream- und PdfDocument-Objekte explizit, um Speicherlecks zu vermeiden.

  2. Berücksichtigen Sie Speicherbegrenzungen: Überwachen Sie die Speichernutzung bei großen PDF-Dateien oder bei der Verarbeitung großer Datenmengen. Erwägen Sie die Implementierung von Kompression oder die Verarbeitung von PDFs in Stücken.

  3. Fehlerbehandlung: Implementieren Sie try-catch-Blöcke, um Ausnahmen bei der Arbeit mit Streams zu behandeln, insbesondere bei beschädigten oder missgebildeten PDF-Daten.

  4. Async Operations: Verwenden Sie async-Methoden bei der Verarbeitung von PDFs in Webanwendungen, um die Reaktionsfähigkeit zu erhalten.

Integration mit anderen IronPDF-Funktionen

MemoryStreams bieten zahlreiche Möglichkeiten zur PDF-Bearbeitung:

Bereit zu sehen, was Sie sonst noch tun können? Besuchen Sie unsere Tutorialseite hier: PDFs bearbeiten

Häufig gestellte Fragen

Wie kann ich in C# einen MemoryStream in PDF konvertieren, ohne auf das Dateisystem zuzugreifen?

IronPDF ermöglicht die direkte Konvertierung von MemoryStream-Objekten in PDF-Dokumente ohne Zugriff auf das Dateisystem. Übergeben Sie einfach Ihren MemoryStream an den PdfDocument-Konstruktor: var pdfDoc = new IronPdf.PdfDocument(myMemoryStream). Dieser Ansatz ist ideal für Cloud-Umgebungen, Webanwendungen oder Szenarien mit eingeschränktem Zugriff auf das Dateisystem.

Welche Arten von Stream-Objekten kann ich verwenden, um PDFs im Speicher zu erstellen?

Der PdfDocument-Konstruktor von IronPDF akzeptiert drei Typen von In-Memory-Objekten: MemoryStream, FileStream und Byte-Arrays (byte[]). Sie können ein PdfDocument aus jeder dieser Quellen initialisieren, was es flexibel für verschiedene Datenquellen wie Netzwerkkommunikation, Datenbank-Blobs oder API-Antworten macht.

Kann ich eine PDF-Datei aus einem Byte-Array anstelle eines Dateipfads laden?

Ja, IronPDF ermöglicht das Laden von PDFs direkt aus Byte-Arrays. Sie können ein PdfDocument-Objekt aus binären Daten wie folgt erstellen: var pdfDoc = new IronPdf.PdfDocument(pdfBytes). Dies ist besonders nützlich, wenn Sie PDF-Daten über das Netzwerk empfangen oder aus einer Datenbank abrufen.

Wie kann ich eine PDF-Datei aus einem HTTP-Antwortstrom erstellen?

Mit IronPDF können Sie PDFs aus HTTP-Antworten erstellen, indem Sie die Antwort zunächst in ein Byte-Array umwandeln: byte[] pdfData = await client.GetByteArrayAsync(url); dann initialisieren Sie ein PdfDocument: var pdfFromHttp = new IronPdf.PdfDocument(pdfData). Dies ermöglicht eine nahtlose PDF-Verarbeitung von Web-APIs oder Remote-Quellen.

Was sind die Vorteile der Verwendung von MemoryStream für PDF-Operationen?

Die Verwendung von MemoryStream mit IronPDF bietet mehrere Vorteile: keine Abhängigkeiten vom Dateisystem, schnellere In-Memory-Verarbeitung, bessere Sicherheit (keine temporären Dateien) und ideal für Cloud-Umgebungen oder containerisierte Anwendungen, bei denen der Zugriff auf das Dateisystem begrenzt oder eingeschränkt sein kann.

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 ...

Weiterlesen
Rezensiert von
Jeff Fritz
Jeffrey T. Fritz
Principal Program Manager - .NET Community Team
Jeff ist außerdem Principal Program Manager für das .NET- und Visual Studio-Team. Er ist der ausführende Produzent der .NET Conf Virtual Conference Series und moderiert ‚Fritz and Friends‘, einen Livestream für Entwickler, der zweimal wöchentlich ausgestrahlt wird. Dort spricht er über Technik und schreibt gemeinsam mit den Zuschauern Code. Jeff schreibt Workshops, Präsentationen und plant Inhalte für die größten Microsoft-Entwicklerveranstaltungen, einschließlich Microsoft Build, Microsoft Ignite, .NET Conf und dem Microsoft MVP Summit.
Bereit anzufangen?
Nuget Downloads 16,685,821 | Version: 2025.12 gerade veröffentlicht