PDF to MemoryStream C
Konwertuj PDF-y do MemoryStream w C# .NET używając własności Stream lub BinaryData IronPDF, umożliwiając manipulację PDF-em w pamięci bez dostępu do systemu plików dla aplikacji webowych i przetwarzania danych.
Możemy eksportować PDF do MemoryStream w C# .NET bez dotykania systemu plików. Jest to możliwe dzięki obiektowi MemoryStream obecnemu w przestrzeni nazw System.IO .NET. To podejście jest szczególnie przydatne przy tworzeniu aplikacji w chmurze, pracy z Azure Blob Storage lub gdy trzeba przetwarzać PDF-y w pamięci w celu optymalizacji wydajności.
Możliwość pracy z PDF-ami w strumieniach pamięci jest kluczowa dla nowoczesnych aplikacji webowych, szczególnie przy wdrażaniu do Azure lub innych platform chmurowych, gdzie dostęp do systemu plików może być ograniczony lub gdy chcemy unikać obciążenia operacjami I/O dysku. IronPDF upraszcza ten proces dzięki wbudowanym metodom manipulacji strumieniami.
Szybki start: Konwersja PDF do MemoryStream
Konwertuj swoje pliki PDF do MemoryStream używając API IronPDF. Ten przewodnik pomaga deweloperom rozpocząć pracę z ładowaniem PDF i eksportowaniem go do MemoryStream dla integracji z aplikacjami .NET. Postępuj według tego przykładu, aby zaimplementować funkcjonalności obsługi PDF w C#.
-
Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf -
Skopiuj i uruchom ten fragment kodu.
using var stream = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello Stream!</h1>").Stream; -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę IronPDF C#, aby konwertować MemoryStream do PDF
- Załaduj istniejący PDF jako obiekt
PdfDocument - Wygeneruj nowy plik PDF z adresu URL lub ciągu znaków/pliku HTML
- Konwertuj PDF do strumienia za pomocą metody
Streami właściwościBinaryData - Udostępnianie strumienia pamięci (MemoryStream) w sieci, w tym w MVC i ASP.NET
Jak zapisać PDF do pamięci?
IronPdf.PdfDocument można zapisać bezpośrednio do pamięci na jeden z dwóch sposobów:
IronPdf.PdfDocument.Streameksportuje PDF jakoSystem.IO.MemoryStreamIronPdf.PdfDocument.BinaryDataeksportuje PDF jako tablicę bajtów (byte[])
Wybór pomiędzy użyciem Stream lub BinaryData zależy od konkretnego przypadku użycia. MemoryStream jest idealny, gdy trzeba pracować z API opartymi na strumieniach lub gdy chcesz zachować kompatybilność z innymi operacjami strumieniowymi .NET. BinaryData jako tablica bajtów jest doskonałe dla scenariuszy, gdzie trzeba przechowywać dane PDF w bazie danych, pamięci podręcznej lub przesyłać przez sieć.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-to-memory-stream-to-stream.cs
using IronPdf;
using System.IO;
var renderer = new ChromePdfRenderer();
// Convert the URL into PDF
PdfDocument pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Export PDF as Stream
MemoryStream pdfAsStream = pdf.Stream;
// Export PDF as Byte Array
byte[] pdfAsByte = pdf.BinaryData;
Imports IronPdf
Imports System.IO
Private renderer = New ChromePdfRenderer()
' Convert the URL into PDF
Private pdf As PdfDocument = renderer.RenderUrlAsPdf("https://ironpdf.com/")
' Export PDF as Stream
Private pdfAsStream As MemoryStream = pdf.Stream
' Export PDF as Byte Array
Private pdfAsByte() As Byte = pdf.BinaryData
Praca z istniejącymi PDF-ami
Kiedy potrzebujesz załadować PDF-y z pamięci, IronPDF zapewnia wygodne metody do pracy z PDF-ami już znajdującymi się w pamięci:
using IronPdf;
using System.IO;
// Load PDF from byte array
byte[] pdfBytes = File.ReadAllBytes("existing.pdf");
PdfDocument pdfFromBytes = PdfDocument.FromFile(new MemoryStream(pdfBytes));
// Or directly from a MemoryStream
MemoryStream memoryStream = new MemoryStream(pdfBytes);
PdfDocument pdfFromStream = PdfDocument.FromFile(memoryStream);
// Modify the PDF (add watermark, headers, etc.)
// Then export back to memory
byte[] modifiedPdfBytes = pdfFromStream.BinaryData;
using IronPdf;
using System.IO;
// Load PDF from byte array
byte[] pdfBytes = File.ReadAllBytes("existing.pdf");
PdfDocument pdfFromBytes = PdfDocument.FromFile(new MemoryStream(pdfBytes));
// Or directly from a MemoryStream
MemoryStream memoryStream = new MemoryStream(pdfBytes);
PdfDocument pdfFromStream = PdfDocument.FromFile(memoryStream);
// Modify the PDF (add watermark, headers, etc.)
// Then export back to memory
byte[] modifiedPdfBytes = pdfFromStream.BinaryData;
Imports IronPdf
Imports System.IO
' Load PDF from byte array
Dim pdfBytes As Byte() = File.ReadAllBytes("existing.pdf")
Dim pdfFromBytes As PdfDocument = PdfDocument.FromFile(New MemoryStream(pdfBytes))
' Or directly from a MemoryStream
Dim memoryStream As New MemoryStream(pdfBytes)
Dim pdfFromStream As PdfDocument = PdfDocument.FromFile(memoryStream)
' Modify the PDF (add watermark, headers, etc.)
' Then export back to memory
Dim modifiedPdfBytes As Byte() = pdfFromStream.BinaryData
Zaawansowane operacje na strumieniach pamięci
Dla bardziej złożonych scenariuszy, takich jak tworzenie PDF-ów z ciągów HTML lub konwersja wielu obrazów do PDF, można łączyć wiele operacji, trzymając wszystko w pamięci:
using IronPdf;
using System.IO;
using System.Collections.Generic;
// Create multiple PDFs in memory
var renderer = new ChromePdfRenderer();
List<MemoryStream> pdfStreams = new List<MemoryStream>();
// Generate multiple PDFs from HTML
string[] htmlTemplates = {
"<h1>Report 1</h1><p>Content...</p>",
"<h1>Report 2</h1><p>Content...</p>"
};
foreach (var html in htmlTemplates)
{
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdfStreams.Add(pdf.Stream);
}
// Merge all PDFs in memory
PdfDocument mergedPdf = PdfDocument.Merge(pdfStreams.Select(s =>
PdfDocument.FromFile(s)).ToList());
// Get the final merged PDF as a stream
MemoryStream finalStream = mergedPdf.Stream;
using IronPdf;
using System.IO;
using System.Collections.Generic;
// Create multiple PDFs in memory
var renderer = new ChromePdfRenderer();
List<MemoryStream> pdfStreams = new List<MemoryStream>();
// Generate multiple PDFs from HTML
string[] htmlTemplates = {
"<h1>Report 1</h1><p>Content...</p>",
"<h1>Report 2</h1><p>Content...</p>"
};
foreach (var html in htmlTemplates)
{
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdfStreams.Add(pdf.Stream);
}
// Merge all PDFs in memory
PdfDocument mergedPdf = PdfDocument.Merge(pdfStreams.Select(s =>
PdfDocument.FromFile(s)).ToList());
// Get the final merged PDF as a stream
MemoryStream finalStream = mergedPdf.Stream;
Imports IronPdf
Imports System.IO
Imports System.Collections.Generic
Imports System.Linq
' Create multiple PDFs in memory
Dim renderer As New ChromePdfRenderer()
Dim pdfStreams As New List(Of MemoryStream)()
' Generate multiple PDFs from HTML
Dim htmlTemplates As String() = {
"<h1>Report 1</h1><p>Content...</p>",
"<h1>Report 2</h1><p>Content...</p>"
}
For Each html As String In htmlTemplates
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdfStreams.Add(pdf.Stream)
Next
' Merge all PDFs in memory
Dim mergedPdf As PdfDocument = PdfDocument.Merge(pdfStreams.Select(Function(s) PdfDocument.FromFile(s)).ToList())
' Get the final merged PDF as a stream
Dim finalStream As MemoryStream = mergedPdf.Stream
Jak obsłużyć PDF dla sieci z pamięci?
Aby obsłużyć lub eksportować PDF na sieci, trzeba wysłać plik PDF jako dane binarne zamiast HTML. Więcej informacji można znaleźć w przewodniku po eksportowaniu i zapisywaniu dokumentów PDF w C#. Przy pracy z aplikacjami webowymi, szczególnie w środowisku ASP.NET MVC, obsługa PDF-ów z pamięci ma wiele zalet, w tym lepszą wydajność i mniejsze zużycie dysku serwera.
Oto szybki przykład dla MVC i ASP.NET:
Jak eksportować PDF za pomocą MVC?
Strumień w poniższym fragmencie kodu to dane binarne pobrane z IronPDF. Typ MIME odpowiedzi to 'application/pdf', określając nazwę pliku jako 'download.pdf'. To podejście działa bezproblemowo z nowoczesnymi aplikacjami MVC i można je zintegrować z istniejącymi kontrolerami.
using System.Web.Mvc;
using System.IO;
public ActionResult ExportPdf()
{
// Assume pdfAsStream is a MemoryStream containing PDF data
MemoryStream pdfAsStream = new MemoryStream();
return new FileStreamResult(pdfAsStream, "application/pdf")
{
FileDownloadName = "download.pdf"
};
}
using System.Web.Mvc;
using System.IO;
public ActionResult ExportPdf()
{
// Assume pdfAsStream is a MemoryStream containing PDF data
MemoryStream pdfAsStream = new MemoryStream();
return new FileStreamResult(pdfAsStream, "application/pdf")
{
FileDownloadName = "download.pdf"
};
}
Imports System.Web.Mvc
Imports System.IO
Public Function ExportPdf() As ActionResult
' Assume pdfAsStream is a MemoryStream containing PDF data
Dim pdfAsStream As New MemoryStream()
Return New FileStreamResult(pdfAsStream, "application/pdf") With {.FileDownloadName = "download.pdf"}
End Function
Dla bardziej zaawansowanych scenariuszy, takich jak praca z Razor Pages lub potrzeba implementacji niestandardowych nagłówków:
using System.Web.Mvc;
using IronPdf;
public ActionResult GenerateReport(string reportType)
{
var renderer = new ChromePdfRenderer();
// Configure rendering options for better output
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Generate PDF based on report type
string htmlContent = GetReportHtml(reportType);
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Add metadata
pdf.MetaData.Author = "Your Application";
pdf.MetaData.Title = $"{reportType} Report";
// Return as downloadable file
return File(pdf.Stream, "application/pdf",
$"{reportType}_Report_{DateTime.Now:yyyyMMdd}.pdf");
}
using System.Web.Mvc;
using IronPdf;
public ActionResult GenerateReport(string reportType)
{
var renderer = new ChromePdfRenderer();
// Configure rendering options for better output
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Generate PDF based on report type
string htmlContent = GetReportHtml(reportType);
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Add metadata
pdf.MetaData.Author = "Your Application";
pdf.MetaData.Title = $"{reportType} Report";
// Return as downloadable file
return File(pdf.Stream, "application/pdf",
$"{reportType}_Report_{DateTime.Now:yyyyMMdd}.pdf");
}
Imports System.Web.Mvc
Imports IronPdf
Public Function GenerateReport(reportType As String) As ActionResult
Dim renderer As New ChromePdfRenderer()
' Configure rendering options for better output
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
' Generate PDF based on report type
Dim htmlContent As String = GetReportHtml(reportType)
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Add metadata
pdf.MetaData.Author = "Your Application"
pdf.MetaData.Title = $"{reportType} Report"
' Return as downloadable file
Return File(pdf.Stream, "application/pdf", $"{reportType}_Report_{DateTime.Now:yyyyMMdd}.pdf")
End Function
Jak eksportować PDF za pomocą ASP.NET?
Podobnie jak w powyższym przykładzie, strumień to dane binarne pobrane z IronPDF. Odpowiedź jest następnie konfigurowana i spłukiwana, aby upewnić się, że jest wysłana do klienta. Metoda ta jest szczególnie przydatna dla aplikacji ASP.NET Web Forms lub gdy potrzebujesz większej kontroli nad odpowiedzią HTTP.
using System.IO;
using System.Web;
public class PdfHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// Assume pdfAsStream is a MemoryStream containing PDF data
MemoryStream pdfAsStream = new MemoryStream();
context.Response.Clear();
context.Response.ContentType = "application/octet-stream";
context.Response.OutputStream.Write(pdfAsStream.ToArray(), 0, (int)pdfAsStream.Length);
context.Response.Flush();
}
public bool IsReusable => false;
}
using System.IO;
using System.Web;
public class PdfHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// Assume pdfAsStream is a MemoryStream containing PDF data
MemoryStream pdfAsStream = new MemoryStream();
context.Response.Clear();
context.Response.ContentType = "application/octet-stream";
context.Response.OutputStream.Write(pdfAsStream.ToArray(), 0, (int)pdfAsStream.Length);
context.Response.Flush();
}
public bool IsReusable => false;
}
Imports System.IO
Imports System.Web
Public Class PdfHandler
Implements IHttpHandler
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
' Assume pdfAsStream is a MemoryStream containing PDF data
Dim pdfAsStream As New MemoryStream()
context.Response.Clear()
context.Response.ContentType = "application/octet-stream"
context.Response.OutputStream.Write(pdfAsStream.ToArray(), 0, CInt(pdfAsStream.Length))
context.Response.Flush()
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
Dla nowoczesnych aplikacji ASP.NET Core proces jest jeszcze bardziej usprawniony:
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.Threading.Tasks;
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public async Task<IActionResult> GeneratePdf()
{
var renderer = new ChromePdfRenderer();
// Render HTML to PDF asynchronously for better performance
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Dynamic PDF</h1>");
// Return PDF as file stream
return File(pdf.Stream, "application/pdf", "generated.pdf");
}
[HttpPost("convert")]
public async Task<IActionResult> ConvertHtmlToPdf([FromBody] string htmlContent)
{
var renderer = new ChromePdfRenderer();
// Apply custom styling and rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(htmlContent);
// Stream directly to response without saving to disk
return File(pdf.Stream, "application/pdf");
}
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.Threading.Tasks;
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public async Task<IActionResult> GeneratePdf()
{
var renderer = new ChromePdfRenderer();
// Render HTML to PDF asynchronously for better performance
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Dynamic PDF</h1>");
// Return PDF as file stream
return File(pdf.Stream, "application/pdf", "generated.pdf");
}
[HttpPost("convert")]
public async Task<IActionResult> ConvertHtmlToPdf([FromBody] string htmlContent)
{
var renderer = new ChromePdfRenderer();
// Apply custom styling and rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(htmlContent);
// Stream directly to response without saving to disk
return File(pdf.Stream, "application/pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
Imports System.Threading.Tasks
<ApiController>
<Route("api/[controller]")>
Public Class PdfController
Inherits ControllerBase
<HttpGet("generate")>
Public Async Function GeneratePdf() As Task(Of IActionResult)
Dim renderer As New ChromePdfRenderer()
' Render HTML to PDF asynchronously for better performance
Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync("<h1>Dynamic PDF</h1>")
' Return PDF as file stream
Return File(pdf.Stream, "application/pdf", "generated.pdf")
End Function
<HttpPost("convert")>
Public Async Function ConvertHtmlToPdf(<FromBody> htmlContent As String) As Task(Of IActionResult)
Dim renderer As New ChromePdfRenderer()
' Apply custom styling and rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync(htmlContent)
' Stream directly to response without saving to disk
Return File(pdf.Stream, "application/pdf")
End Function
End Class
Najlepsze praktyki zarządzania strumieniami pamięci
Pracując ze strumieniami pamięci PDF w aplikacjach webowych, rozważ te najlepsze praktyki:
-
Prawidłowe zwalnianie zasobów: Zawsze używaj instrukcji
usinglub wyraźnie zwalniaj obiektyMemoryStream, aby zapobiec wyciekom pamięci. -
Operacje asynchroniczne: Dla lepszej skalowalności, zwłaszcza przy pracy z operacjami asynchronicznymi, używaj metod asynchronicznych, gdy są dostępne.
-
Kwestie rozmiaru strumienia: Dla dużych PDF-ów rozważ wdrożenie strumieniowanych odpowiedzi, aby uniknąć ładowania całego PDF-a do pamięci na raz.
- Cache'owanie: Dla często dostępowych PDF-ów, rozważ cache'owanie tablicy bajtów w pamięci lub użycie cache'a rozproszonego, aby poprawić wydajność.
// Example of proper resource management with caching
public class PdfService
{
private readonly IMemoryCache _cache;
private readonly ChromePdfRenderer _renderer;
public PdfService(IMemoryCache cache)
{
_cache = cache;
_renderer = new ChromePdfRenderer();
}
public async Task<byte[]> GetCachedPdfAsync(string cacheKey, string htmlContent)
{
// Try to get from cache first
if (_cache.TryGetValue(cacheKey, out byte[] cachedPdf))
{
return cachedPdf;
}
// Generate PDF if not in cache
using (var pdf = await _renderer.RenderHtmlAsPdfAsync(htmlContent))
{
byte[] pdfBytes = pdf.BinaryData;
// Cache for 10 minutes
_cache.Set(cacheKey, pdfBytes, TimeSpan.FromMinutes(10));
return pdfBytes;
}
}
}
// Example of proper resource management with caching
public class PdfService
{
private readonly IMemoryCache _cache;
private readonly ChromePdfRenderer _renderer;
public PdfService(IMemoryCache cache)
{
_cache = cache;
_renderer = new ChromePdfRenderer();
}
public async Task<byte[]> GetCachedPdfAsync(string cacheKey, string htmlContent)
{
// Try to get from cache first
if (_cache.TryGetValue(cacheKey, out byte[] cachedPdf))
{
return cachedPdf;
}
// Generate PDF if not in cache
using (var pdf = await _renderer.RenderHtmlAsPdfAsync(htmlContent))
{
byte[] pdfBytes = pdf.BinaryData;
// Cache for 10 minutes
_cache.Set(cacheKey, pdfBytes, TimeSpan.FromMinutes(10));
return pdfBytes;
}
}
}
Imports System
Imports System.Threading.Tasks
' Example of proper resource management with caching
Public Class PdfService
Private ReadOnly _cache As IMemoryCache
Private ReadOnly _renderer As ChromePdfRenderer
Public Sub New(cache As IMemoryCache)
_cache = cache
_renderer = New ChromePdfRenderer()
End Sub
Public Async Function GetCachedPdfAsync(cacheKey As String, htmlContent As String) As Task(Of Byte())
' Try to get from cache first
Dim cachedPdf As Byte() = Nothing
If _cache.TryGetValue(cacheKey, cachedPdf) Then
Return cachedPdf
End If
' Generate PDF if not in cache
Using pdf = Await _renderer.RenderHtmlAsPdfAsync(htmlContent)
Dim pdfBytes As Byte() = pdf.BinaryData
' Cache for 10 minutes
_cache.Set(cacheKey, pdfBytes, TimeSpan.FromMinutes(10))
Return pdfBytes
End Using
End Function
End Class
Przestrzegając tych wzorców i wykorzystując możliwości strumieni pamięci IronPDF, można tworzyć wydajne, skalowalne aplikacje webowe, które obsługują generowanie i dostarczanie PDF-ów bez polegania na operacjach systemu plików. To podejście jest szczególnie korzystne przy wdrażaniu na platformy chmurowe jak AWS lub przy pracy w środowiskach konteneryzowanych.
Często Zadawane Pytania
Jak przekonwertować plik PDF na MemoryStream w języku C#?
IronPDF oferuje dwa główne sposoby konwersji plików PDF do pamięci: za pomocą właściwości Stream do eksportu jako System.IO.MemoryStream lub za pomocą właściwości BinaryData do eksportu jako tablica bajtów. Wystarczy utworzyć lub załadować obiekt PdfDocument i uzyskać dostęp do tych właściwości, aby pracować z plikami PDF w pamięci bez ingerencji w system plików.
Jakie są zalety pracy z plikami PDF w pamięci zamiast z plikami?
Praca z plikami PDF w pamięci przy użyciu IronPDF oferuje kilka zalet: lepszą wydajność dzięki uniknięciu operacji wejścia/wyjścia na dysku, lepszą kompatybilność z platformami chmurowymi, takimi jak Azure, gdzie dostęp do systemu plików może być ograniczony, zwiększone bezpieczeństwo dzięki nieprzechowywaniu wrażliwych plików PDF na dysku oraz płynną integrację z aplikacjami internetowymi i interfejsami API.
Czy mogę załadować istniejący plik PDF ze strumienia pamięci?
Tak, IronPDF umożliwia ładowanie plików PDF z pamięci przy użyciu metody PdfDocument.FromStream() dla danych wejściowych typu MemoryStream lub PdfDocument.FromBytes() dla danych wejściowych typu tablica bajtów. Umożliwia to pracę z plikami PDF otrzymanymi z żądań internetowych, baz danych lub innych źródeł opartych na pamięci bez zapisywania ich na dysku.
Jak udostępnić plik PDF z pamięci w aplikacjach ASP.NET lub MVC?
IronPDF ułatwia udostępnianie plików PDF bezpośrednio z pamięci w aplikacjach internetowych. Możesz użyć właściwości Stream lub BinaryData, aby pobrać zawartość pliku PDF i zwrócić ją jako FileResult lub FileContentResult w akcjach kontrolera, co idealnie nadaje się do generowania i udostępniania plików PDF w locie w aplikacjach ASP.NET Core lub MVC.
Czy możliwe jest renderowanie HTML do formatu PDF bezpośrednio w pamięci?
Tak, ChromePdfRenderer firmy IronPDF może renderować zawartość HTML bezpośrednio do MemoryStream bez tworzenia plików tymczasowych. Można użyć metody RenderHtmlAsPdf() i natychmiast uzyskać dostęp do właściwości Stream, aby pobrać plik PDF jako MemoryStream, co sprawia, że jest to idealne rozwiązanie dla aplikacji opartych na chmurze i scenariuszy wymagających wysokiej wydajności.

