Przeglądarka PDF w ASP.NET Core: Wyświetlaj PDF-y w trybie inline z C#
Wbudowanie przeglądarki plików PDF w aplikację ASP.NET Core jest łatwiejsze, niż większość programistów się spodziewa. Generując pliki PDF po stronie serwera i zwracając je z prawidłowym typem MIME, można wyświetlać dokumenty bezpośrednio w każdej nowoczesnej przeglądarce — bez wtyczek i bez konieczności korzystania z programu Adobe Acrobat Reader. IronPDF obsługuje renderowanie za pomocą silnika opartego na przeglądarce Chrome, przekształcając HTML, CSS i JavaScript w pliki PDF o wysokiej jakości, które wyświetlają się bezpośrednio w wbudowanej przeglądarce.
Ten samouczek przeprowadzi Cię przez wszystkie główne scenariusze: wyświetlanie plików PDF wygenerowanych z ciągów znaków HTML, renderowanie aktywnych adresów URL, konwersję widoków Razor, strumieniowanie dużych plików oraz połączenie tego wszystkiego w kontrolerze ASP.NET Core MVC. Przykłady kodu są przeznaczone dla platformy .NET 10 i zawierają instrukcje najwyższego poziomu tam, gdzie ma to zastosowanie.
Jak działa przeglądanie plików PDF w przeglądarce w ASP.NET?
Nowoczesne przeglądarki są wyposażone we wbudowaną przeglądarkę plików PDF. Gdy serwer odpowiada nagłówkiem Content-Type: application/pdf, przeglądarka wyświetla dokument w trybie inline zamiast uruchamiać pobieranie pliku. Kluczem jest połączenie tego nagłówka z Content-Disposition: inline.
Po stronie serwera Twoim zadaniem jest wygenerowanie prawidłowego pliku binarnego PDF i zwrócenie go za pośrednictwem FileResult. Przeglądarka obsługuje paginację, Zoom, zaznaczanie tekstu, wyszukiwanie, drukowanie i pobieranie bez konieczności pisania dodatkowego kodu interfejsu użytkownika.
IronPDF naturalnie wpisuje się w ten schemat. Jej klasa ChromePdfRenderer konwertuje HTML (lub aktywny adres URL) na plik binarny PDF, a ten plik binarny przekazuje się bezpośrednio do pomocnika File() w ASP.NET. Wynikiem jest w pełni funkcjonalna przeglądarka dokumentów, która działa w przeglądarkach Chrome, Firefox, Edge i Safari.
Nowoczesne przeglądarki implementują specyfikację renderowania plików PDF W3C za pośrednictwem swoich natywnych silników przeglądarki, co oznacza, że każdy zgodny plik PDF zwrócony przez serwer będzie wyświetlany poprawnie bez dodatkowej konfiguracji. Wyniki działania IronPDF są w pełni zgodne ze standardami, dzięki czemu można liczyć na spójne wyświetlanie w różnych wersjach przeglądarek.
W przypadku wdrożeń kontenerowych IronPDF udostępnia oficjalne obrazy Docker, które zawierają wstępnie skonfigurowane zależności Chromium, dzięki czemu nie ma potrzeby ręcznej instalacji przeglądarki Chrome na każdym węźle. Obsługiwane są zarówno kontenery Linux, jak i Windows. Jeśli chcesz niezależnie skalować generowanie plików PDF, obraz Docker IronPDF Engine pozwala uruchamiać proces renderowania jako oddzielną mikrousługę.
Jak zainstalować IronPDF w projekcie ASP.NET Core?
Otwórz projekt ASP.NET Core w programie Visual Studio, a następnie zainstaluj IronPDF za pomocą konsoli NuGet Package Manager:
Install-Package IronPdf
Install-Package IronPdf
Lub użyj interfejsu CLI platformy .NET:
dotnet add package IronPdf
dotnet add package IronPdf
Po instalacji dodaj swój klucz licencyjny do Program.cs przed wywołaniem jakichkolwiek interfejsów API IronPDF:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Jeśli wdrażasz rozwiązanie w Azure, przechowuj klucz licencyjny w Azure Key Vault lub App Configuration zamiast kodować go na stałe. W przypadku wdrożeń AWS Lambda należy używać zmiennych środowiskowych skonfigurowanych w ustawieniach funkcji Lambda.
To wszystko. IronPDF automatycznie wykrywa i konfiguruje Chromium w czasie wykonywania w systemie Windows. W systemie Linux należy zapoznać się z instrukcją konfiguracji systemu Linux, aby uzyskać informacje na temat kilku wymaganych pakietów systemowych.
Możesz zacząć od bezpłatnej wersji próbnej, aby ocenić pełen zestaw funkcji przed wyborem poziomu licencji do produkcji.
Jak wygenerować i wyświetlić plik PDF na podstawie ciągu znaków HTML?
Najszybszym sposobem na wyświetlenie pliku PDF użytkownikowi jest wyrenderowanie ciągu HTML i zwrócenie go w linii. Utwórz kontroler o nazwie PdfController i dodaj akcję w następujący sposób:
using IronPdf;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
public class PdfController : Controller
{
private readonly ChromePdfRenderer _renderer;
public PdfController()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.WaitFor.RenderDelay(100);
_renderer.RenderingOptions.Timeout = 30;
}
public IActionResult DisplayFromHtml()
{
string html = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; padding: 40px; }
h1 { color: #2c3e50; }
p { line-height: 1.7; color: #444; }
</style>
</head>
<body>
<h1>Sample PDF Document</h1>
<p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
</body>
</html>";
PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);
Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf");
return File(pdf.BinaryData, "application/pdf");
}
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
public class PdfController : Controller
{
private readonly ChromePdfRenderer _renderer;
public PdfController()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.WaitFor.RenderDelay(100);
_renderer.RenderingOptions.Timeout = 30;
}
public IActionResult DisplayFromHtml()
{
string html = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; padding: 40px; }
h1 { color: #2c3e50; }
p { line-height: 1.7; color: #444; }
</style>
</head>
<body>
<h1>Sample PDF Document</h1>
<p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
</body>
</html>";
PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);
Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf");
return File(pdf.BinaryData, "application/pdf");
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()
Dim app = builder.Build()
app.MapControllerRoute(name:="default", pattern:="{controller=Home}/{action=Index}/{id?}")
app.Run()
Public Class PdfController
Inherits Controller
Private ReadOnly _renderer As ChromePdfRenderer
Public Sub New()
_renderer = New ChromePdfRenderer()
_renderer.RenderingOptions.WaitFor.RenderDelay(100)
_renderer.RenderingOptions.Timeout = 30
End Sub
Public Function DisplayFromHtml() As IActionResult
Dim html As String = "
<html>
<head>
<style>
body { font-family: Arial, sans-serif; padding: 40px; }
h1 { color: #2c3e50; }
p { line-height: 1.7; color: #444; }
</style>
</head>
<body>
<h1>Sample PDF Document</h1>
<p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
</body>
</html>"
Dim pdf As PdfDocument = _renderer.RenderHtmlAsPdf(html)
Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf")
Return File(pdf.BinaryData, "application/pdf")
End Function
End Class
Jak wygląda wygenerowany plik PDF w przeglądarce?

ChromePdfRenderer wykorzystuje silnik Chromium, dzięki czemu CSS Grid, Flexbox, czcionki internetowe i nowoczesne funkcje CSS są renderowane poprawnie. Ustawienie Content-Disposition na inline powoduje, że przeglądarka wyświetla plik zamiast go zapisywać. Jeśli zmienisz tę wartość na attachment, przeglądarka wyświetli monit o pobranie pliku.
W przypadku dokumentów o skomplikowanym układzie można dostosować wynik za pomocą opcji renderowania, takich jak niestandardowe rozmiary papieru, marginesy i typ mediów PRINT do drukowania. Interfejs API WaitFor jest szczególnie przydatny w środowiskach kontenerowych, gdzie opóźnienia sieciowe mogą spowalniać ładowanie zasobów zewnętrznych.
Aby uzyskać więcej informacji na temat opcji konwersji HTML, zapoznaj się z przewodnikiem dotyczącym konwersji ciągów HTML do formatu PDF.
Jak renderować pliki PDF z adresów URL i widoków Razor?
IronPDF może przechwycić dowolną aktywną stronę internetową jako plik PDF — idealne rozwiązanie do archiwizacji treści internetowych lub generowania raportów na podstawie istniejących stron. Dokumentacja .NET Core opisuje sposób zwracania wyników przez akcje kontrolerów, co jest wzorcem zastosowanym w tym przypadku.
public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.WaitFor.NetworkIdle();
PdfDocument pdf = renderer.RenderUrlAsPdf(url);
Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
Response.Headers.Append("Cache-Control", "public, max-age=3600");
return File(pdf.BinaryData, "application/pdf");
}
public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.WaitFor.NetworkIdle();
PdfDocument pdf = renderer.RenderUrlAsPdf(url);
Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
Response.Headers.Append("Cache-Control", "public, max-age=3600");
return File(pdf.BinaryData, "application/pdf");
}
Public Function RenderFromUrl(Optional url As String = "https://en.wikipedia.org/wiki/Main_Page") As IActionResult
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
renderer.RenderingOptions.WaitFor.NetworkIdle()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf(url)
Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf")
Response.Headers.Append("Cache-Control", "public, max-age=3600")
Return File(pdf.BinaryData, "application/pdf")
End Function
Jak wygląda renderowanie plików PDF na podstawie adresów URL?

Gdy chcesz przekonwertować widok Razor — na przykład szablon faktury lub wyciągu — najpierw renderujesz widok do ciągu znaków HTML, a następnie przekazujesz ten ciąg do IronPDF. Dzięki temu szablony będą mogły być ponownie wykorzystane zarówno w przypadku wyników w formacie HTML, jak i PDF:
public async Task<IActionResult> ViewToPdf()
{
var model = new InvoiceModel
{
InvoiceNumber = 1001,
InvoiceDate = DateTime.Now,
CustomerName = "Acme Corp.",
Items = new List<ItemModel>
{
new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
}
};
model.TotalAmount = model.Items.Sum(i => i.LineTotal);
string htmlContent = await RenderViewToStringAsync("Invoice", model);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
string baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl);
return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
var actionContext = new ActionContext(
HttpContext, RouteData, ControllerContext.ActionDescriptor);
var viewEngine = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
var tempData = tempDataFactory.GetTempData(HttpContext);
ViewData.Model = model;
var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
if (!viewResult.Success)
{
string searched = string.Join(
Environment.NewLine,
viewResult.SearchedLocations ?? Array.Empty<string>());
throw new InvalidOperationException(
$"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}");
}
await using var writer = new StringWriter();
var viewContext = new ViewContext(
actionContext, viewResult.View, ViewData, tempData,
writer, new HtmlHelperOptions());
await viewResult.View.RenderAsync(viewContext);
return writer.ToString();
}
public async Task<IActionResult> ViewToPdf()
{
var model = new InvoiceModel
{
InvoiceNumber = 1001,
InvoiceDate = DateTime.Now,
CustomerName = "Acme Corp.",
Items = new List<ItemModel>
{
new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
}
};
model.TotalAmount = model.Items.Sum(i => i.LineTotal);
string htmlContent = await RenderViewToStringAsync("Invoice", model);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
string baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl);
return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
var actionContext = new ActionContext(
HttpContext, RouteData, ControllerContext.ActionDescriptor);
var viewEngine = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
var tempData = tempDataFactory.GetTempData(HttpContext);
ViewData.Model = model;
var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
if (!viewResult.Success)
{
string searched = string.Join(
Environment.NewLine,
viewResult.SearchedLocations ?? Array.Empty<string>());
throw new InvalidOperationException(
$"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}");
}
await using var writer = new StringWriter();
var viewContext = new ViewContext(
actionContext, viewResult.View, ViewData, tempData,
writer, new HtmlHelperOptions());
await viewResult.View.RenderAsync(viewContext);
return writer.ToString();
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.ViewEngines
Imports Microsoft.AspNetCore.Mvc.Rendering
Imports Microsoft.AspNetCore.Mvc.ViewFeatures
Imports Microsoft.Extensions.DependencyInjection
Imports IronPdf
Public Class YourController
Inherits Controller
Public Async Function ViewToPdf() As Task(Of IActionResult)
Dim model As New InvoiceModel With {
.InvoiceNumber = 1001,
.InvoiceDate = DateTime.Now,
.CustomerName = "Acme Corp.",
.Items = New List(Of ItemModel) From {
New ItemModel With {.Description = "Product A", .Quantity = 2, .UnitPrice = 50.0D},
New ItemModel With {.Description = "Service B", .Quantity = 1, .UnitPrice = 150.0D}
}
}
model.TotalAmount = model.Items.Sum(Function(i) i.LineTotal)
Dim htmlContent As String = Await RenderViewToStringAsync("Invoice", model)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 40
renderer.RenderingOptions.MarginBottom = 40
Dim baseUrl As String = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent, baseUrl)
Return File(pdf.BinaryData, "application/pdf")
End Function
Private Async Function RenderViewToStringAsync(viewName As String, model As Object) As Task(Of String)
Dim actionContext As New ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor)
Dim viewEngine As IRazorViewEngine = HttpContext.RequestServices.GetRequiredService(Of IRazorViewEngine)()
Dim tempDataFactory As ITempDataDictionaryFactory = HttpContext.RequestServices.GetRequiredService(Of ITempDataDictionaryFactory)()
Dim tempData As ITempDataDictionary = tempDataFactory.GetTempData(HttpContext)
ViewData.Model = model
Dim viewResult As ViewEngineResult = viewEngine.FindView(actionContext, viewName, isMainPage:=False)
If Not viewResult.Success Then
Dim searched As String = String.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty(Of String)())
Throw New InvalidOperationException($"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}")
End If
Await Using writer As New StringWriter()
Dim viewContext As New ViewContext(actionContext, viewResult.View, ViewData, tempData, writer, New HtmlHelperOptions())
Await viewResult.View.RenderAsync(viewContext)
Return writer.ToString()
End Using
End Function
End Class
Public Class InvoiceModel
Public Property InvoiceNumber As Integer
Public Property InvoiceDate As DateTime
Public Property CustomerName As String
Public Property Items As List(Of ItemModel)
Public Property TotalAmount As Decimal
End Class
Public Class ItemModel
Public Property Description As String
Public Property Quantity As Integer
Public Property UnitPrice As Decimal
Public ReadOnly Property LineTotal As Decimal
Get
Return Quantity * UnitPrice
End Get
End Property
End Class
Jakie są efekty generowania plików PDF w Razor View?

Parametr baseUrl ma znaczenie, gdy widok Razor odwołuje się do względnych ścieżek CSS lub obrazów. Przekazanie aktualnego adresu URL hosta pozwala IronPDF poprawnie rozpoznać te ścieżki. Zapoznaj się z samouczkiem Razor to PDF, aby uzyskać kompletny przewodnik obejmujący wzorce aplikacji Blazor.
Jak radzisz sobie z dużymi plikami PDF przy strumieniowaniu?
W przypadku dokumentów, których rozmiar może wynosić kilka megabajtów, strumieniowanie zmniejsza szczytowe zużycie pamięci i pozwala szybciej dostarczać bajty do klienta. Użyj FileStreamResult zamiast File() z surową tablicą bajtów:
public async Task<IActionResult> StreamLargePdf()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = false;
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(
"<h1>Large Document</h1><p>Full content here...</p>");
pdf.CompressImages(80);
var stream = new MemoryStream(pdf.BinaryData);
Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString());
Response.Headers.Append("Accept-Ranges", "bytes");
return new FileStreamResult(stream, "application/pdf");
}
public async Task<IActionResult> StreamLargePdf()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = false;
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(
"<h1>Large Document</h1><p>Full content here...</p>");
pdf.CompressImages(80);
var stream = new MemoryStream(pdf.BinaryData);
Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString());
Response.Headers.Append("Accept-Ranges", "bytes");
return new FileStreamResult(stream, "application/pdf");
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Public Class YourController
Inherits Controller
Public Async Function StreamLargePdf() As Task(Of IActionResult)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = False
Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Full content here...</p>")
pdf.CompressImages(80)
Dim stream As New MemoryStream(pdf.BinaryData)
Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString())
Response.Headers.Append("Accept-Ranges", "bytes")
Return New FileStreamResult(stream, "application/pdf")
End Function
End Class
CompressImages(80) zmniejsza jakość plików JPEG do 80%, co znacznie zmniejsza rozmiar plików w dokumentach zawierających dużo obrazów przy minimalnej widocznej utracie jakości. Ustawienie Accept-Ranges: bytes sygnalizuje przeglądarce, że może żądać fragmentów o określonym zakresie bajtów, co umożliwia szybsze wyszukiwanie w dużych plikach PDF bez konieczności pobierania całego pliku.
Specyfikacja PDF/A opracowana przez ISO określa wymagania dotyczące plików PDF o jakości archiwalnej. Jeśli Twoja aplikacja wymaga tworzenia dokumentów do długoterminowej archiwizacji, tryb zgodności z PDF/A w IronPDF gwarantuje, że pliki wyjściowe spełniają te standardy, co ma szczególne znaczenie w przypadku procesów regulacyjnych lub prawnych.
W przypadku starszych projektów ASP.NET Web Forms schemat jest nieco inny, ponieważ piszesz bezpośrednio do odpowiedzi HTTP:
protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
using var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
Response.ContentType = "application/pdf";
Response.BinaryWrite(pdf.BinaryData);
Response.End();
}
protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
using var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
Response.ContentType = "application/pdf";
Response.BinaryWrite(pdf.BinaryData);
Response.End();
}
Protected Sub btnGeneratePdf_Click(sender As Object, e As EventArgs)
Using renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>")
Response.ContentType = "application/pdf"
Response.BinaryWrite(pdf.BinaryData)
Response.End()
End Using
End Sub
W przypadku obciążeń generujących wiele plików PDF jednocześnie, zapoznaj się z przewodnikiem po asynchronicznym API IronPDF oraz Dokumentacją API dotyczącą optymalizacji wydajności, aby znaleźć ustawienia zmniejszające obciążenie pamięci w scenariuszach o dużej przepustowości.
Jakie funkcje oferuje użytkownikom przeglądarka internetowa?
Gdy przeglądarka wyświetla plik PDF w trybie inline, automatycznie udostępnia w pełni funkcjonalną przeglądarkę. Użytkownicy mają do dyspozycji funkcję zaznaczania tekstu w celu skopiowania treści, wbudowaną pasek wyszukiwania do lokalizowania określonych słów lub liczb, kontrolki drukowania oraz pobieranie jednym kliknięciem — wszystko to bez konieczności pisania kodu front-endowego.
Oprócz podstawowego przeglądania, IronPDF obsługuje szeroki zakres funkcji dokumentów, które wpływają na to, co użytkownicy widzą w przeglądarce:
- Nagłówki i stopki z dynamicznym tekstem, numerami stron i datami
- Niestandardowe znaki wodne do oznaczania wersji roboczych lub poufnych dokumentów
- Interaktywne pola formularzy, które użytkownicy mogą wypełniać bezpośrednio w przeglądarce
- Podpisy cyfrowe do uwierzytelniania dokumentów
- Zgodność z formatem PDF/A w celu spełnienia wymagań dotyczących długoterminowej archiwizacji
- Szyfrowanie i ochrona hasłem w celu ograniczenia dostępu
Poniższa tabela zawiera podsumowanie głównych metod konwersji dostępnych w bibliotece oraz wskazówki dotyczące ich zastosowania:
| Metoda | Dane wejściowe | Najlepsze dla |
|---|---|---|
RenderHtmlAsPdf |
Ciąg znaków HTML | Szablony dokumentów, faktur, raportów |
RenderUrlAsPdf |
URL | Archiwizacja stron internetowych, migawki treści na żywo |
RenderHtmlAsPdf + Razor |
Renderowany widok HTML | Ponowne wykorzystanie istniejących szablonów MVC jako plików PDF |
RenderHtmlFileAsPdf |
Lokalny plik HTML | Szablony statyczne przechowywane na dysku |
W przypadku wdrożeń kontenerowych IronPDF zapewnia również obsługę silnika zdalnego, dzięki czemu można uruchamiać generowanie plików PDF jako dedykowaną mikrousługę. Zapoznaj się z przewodnikiem po optymalizacji pamięci, aby uzyskać ustawienia dostosowane do środowisk o ograniczonych zasobach.
Aby uzyskać pełny przegląd możliwości, odwiedź stronę funkcji IronPDF.
Jakie opcje formatowania i edycji obsługuje IronPDF?
IronPDF wykracza daleko poza podstawowe renderowanie. Możesz nadać strukturę i branding każdemu dokumentowi, korzystając z poniższych opcji.
Elementy sterujące układem strony obejmują niestandardowe rozmiary papieru, ustawienia orientacji oraz konfigurację marginesów. Obsługa typografii obejmuje pełne renderowanie czcionek internetowych za pomocą deklaracji CSS @font-face, co oznacza, że dokumenty są dokładnie dopasowane do czcionek Twojej marki. Można również osadzać i zmieniać rozmiar obrazów na stronach PDF, co zapewnia pełną kontrolę nad wiernością wizualną.
W zakresie obróbki dokumentów IronPDF umożliwia programowe łączenie lub dzielenie istniejących plików PDF, dodawanie lub usuwanie poszczególnych stron oraz wyodrębnianie tekstu i obrazów. Wykonanie kodu JavaScript przed przechwyceniem danych umożliwia tworzenie dynamicznych wykresów i wizualizacji danych — jest to przydatne podczas generowania raportów opartych na bibliotekach renderowania po stronie klienta, takich jak Chart.js lub D3.js.
Dzięki tym możliwościom można tworzyć dopracowane, gotowe do druku dokumenty bezpośrednio z poziomu aplikacji, bez konieczności stosowania oddzielnej warstwy przetwarzania dokumentów.
Jeśli chcesz akceptować pliki PDF przesłane przez użytkowników i wyświetlać je obok plików wygenerowanych, IronPDF odczytuje istniejące pliki PDF równie łatwo, jak tworzy nowe. Załaduj plik za pomocą PdfDocument.FromFile() i zwróć jego BinaryData za pomocą tego samego pomocnika File().
Zobacz samouczek dotyczący edycji plików PDF w języku C#, aby uzyskać szczegółowy przewodnik po edycji, dodawaniu adnotacji i modyfikowaniu istniejących dokumentów.
Jak IronPDF wypada na tle alternatywnych rozwiązań?
Dwie najczęstsze alternatywy dla podejścia po stronie serwera IronPDF to osadzenie biblioteki przeglądarki PDF po stronie klienta (takiej jak PDF.js, przeglądarka open source firmy Mozilla) oraz przekierowywanie użytkowników do oddzielnego systemu zarządzania dokumentami.
Przeglądarki po stronie klienta, takie jak PDF.js, sprawdzają się dobrze w prostych przypadkach wyświetlania, ale wymagają dostarczenia pakietu JavaScript przeglądarki, obsługi CORS dla zewnętrznych plików PDF oraz samodzielnego zarządzania kompatybilnością z przeglądarkami. Generowanie po stronie serwera za pomocą IronPDF pozwala utrzymać cały proces tworzenia plików PDF w środowisku .NET, co upraszcza politykę bezpieczeństwa i pozwala uniknąć złożoności związanej z różnicami między źródłami.
Dedykowany system zarządzania dokumentami powoduje dodatkowe obciążenie operacyjne, którego większość aplikacji internetowych nie potrzebuje. Dla zespołów już korzystających z .NET Core generowanie i strumieniowe przesyłanie plików PDF bezpośrednio z kontrolera jest najłatwiejszym rozwiązaniem.
Jakie są Twoje kolejne kroki?
Wyświetlanie plików PDF w aplikacji internetowej ASP.NET Core wymaga zaledwie kilku wierszy kodu. Wygeneruj plik PDF za pomocą ChromePdfRenderer, ustaw Content-Disposition: inline i zwróć FileResult — wbudowana przeglądarka przeglądarki zajmie się resztą.
W przypadku wdrożeń produkcyjnych należy rozważyć następujące kroki w celu przygotowania konfiguracji:
- Skonfiguruj niestandardowe logowanie, aby śledzić czasy generowania plików PDF i wskaźniki błędów
- Wprowadź buforowanie często wyświetlanych plików PDF, aby zmniejszyć obciążenie związane z uruchamianiem Chromium
- Użyj obrazu Docker silnika IronPDF, aby skalować renderowanie niezależnie od warstwy internetowej
- Sprawdź opcje kompresji plików PDF, aby rozmiar odpowiedzi był łatwiejszy do opanowania
Chcesz dodać przeglądanie plików PDF do swojego projektu? Zacznij od bezpłatnej wersji próbnej i uruchom powyższe przykłady w ciągu kilku minut. Gdy wszystko będzie gotowe do wdrożenia, zapoznaj się z opcjami licencyjnymi dostosowanymi do wielkości Twojego zespołu i sposobu użytkowania. Aby zapoznać się z powiązanymi konwersjami, przejrzyj bibliotekę poradników, w której opisano, jak IronPDF obsługuje konwersję plików DOCX do PDF, obrazów do PDF oraz innych formatów.
!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101000101111101010011010101000100000101010010010101000100010101000100010111110101011101001001010100010010000101111101010000010100100100111101000100010101010100001101010100010111110101010001010010010010010100000101001100010111110100001001001100010011110100001101001011--}
Często Zadawane Pytania
Jak mogę stworzyć przeglądarkę plików PDF w aplikacji internetowej ASP.NET?
Za pomocą IronPDF można stworzyć przeglądarkę plików PDF w aplikacji internetowej ASP.NET. Umożliwia ona wyświetlanie dokumentów PDF bezpośrednio w aplikacji, zapewniając płynne przeglądanie bez konieczności korzystania z zewnętrznych narzędzi, takich jak Adobe Acrobat Reader.
Jakie są zalety korzystania z IronPDF do przeglądania plików PDF w ASP.NET?
IronPDF zapewnia płynne i zintegrowane przeglądanie plików PDF w aplikacjach ASP.NET. Umożliwia wyświetlanie dokumentów w trybie inline, obsługuje różne typy plików i eliminuje potrzebę korzystania z zewnętrznych przeglądarek PDF, poprawiając komfort użytkowania.
Czy mogę wyświetlać interaktywne formularze PDF w mojej aplikacji internetowej ASP.NET?
Tak, dzięki IronPDF możesz wyświetlać interaktywne formularze PDF w swojej aplikacji internetowej ASP.NET. Obsługuje on renderowanie pól formularzy i elementów interaktywnych, umożliwiając użytkownikom interakcję z dokumentami bezpośrednio w przeglądarce.
Czy można wyświetlać faktury i raporty przy użyciu IronPDF w ASP.NET?
Oczywiście, IronPDF doskonale nadaje się do wyświetlania faktur, raportów i innych typów dokumentów w aplikacjach ASP.NET. Zapewnia on dokładne i wydajne renderowanie dokumentów w aplikacji internetowej.
Czy potrzebuję programu Adobe Acrobat Reader, aby wyświetlać pliki PDF w aplikacjach ASP.NET korzystających z IronPDF?
Nie, nie potrzebujesz programu Adobe Acrobat Reader do przeglądania plików PDF w aplikacjach ASP.NET, jeśli korzystasz z IronPDF. Pozwala on na renderowanie i przeglądanie plików PDF bezpośrednio w przeglądarce bez konieczności korzystania z oprogramowania innych firm.




