Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

ASP.NET HTML do konwersji PDF z IronPDF

IronPDF konwertuje kod HTML ASP.NET do formatu PDF przy użyciu silnika renderującego opartego na przeglądarce Chrome, który zachowuje stylizację CSS i funkcjonalność JavaScript. Ten samouczek pokazuje skuteczne metody konwersji ciągów znaków HTML, widoków i adresów URL na profesjonalne dokumenty PDF w aplikacjach ASP.NET Core.

Konwersja dynamicznego kodu HTML ASP.NET do dokumentów PDF jest podstawowym wymogiem w nowoczesnych aplikacjach internetowych. Niezależnie od tego, czy generujesz faktury, tworzysz raporty, czy przygotowujesz pliki PDF do pobrania, przekształcanie treści HTML w profesjonalne dokumenty PDF jest niezbędne do zapewnienia doskonałego doświadczenia użytkownika.

IronPDF upraszcza proces konwersji ASP HTML do PDF, zapewniając niezawodny silnik renderujący oparty na przeglądarce Chrome, który zachowuje formatowanie HTML, stylizację CSS i funkcjonalność JavaScript w wynikowych dokumentach PDF. Ten samouczek przedstawia skuteczne metody konwersji HTML do PDF w aplikacjach ASP.NET Core przy użyciu biblioteki IronPDF, w tym jej silnika renderującego Chrome, zapewniającego wyniki o idealnej rozdzielczości.

Baner na stronie głównej biblioteki IronPDF C# PDF przedstawiający kluczowe funkcje, w tym konwersję HTML do PDF, możliwości edycji plików PDF oraz opcje wdrażania wraz z przyciskami pobierania i licencjonowania

Dlaczego programiści potrzebują konwersji HTML do PDF?

Aplikacje ASP.NET Core często generują dynamiczną zawartość HTML, którą użytkownicy muszą pobrać, udostępnić lub zarchiwizować jako pliki PDF. Konwersja HTML do PDF zapewnia kilka kluczowych korzyści w porównaniu z prostym zapisywaniem stron internetowych lub robieniem zrzutów ekranu.

Dokumenty PDF zachowują spójne formatowanie na wszystkich urządzeniach i platformach, dzięki czemu faktury wyglądają identycznie niezależnie od tego, czy są wyświetlane w systemie Windows, na komputerach Mac czy na urządzeniach mobilnych. Są one idealne do dokumentów wymagających podpisów cyfrowych, ograniczeń bezpieczeństwa lub profesjonalnego drukowania. Konwersja plików PDF po stronie serwera eliminuje konieczność instalowania przez użytkowników specjalnego oprogramowania i zapewnia lepszą kontrolę nad końcowym wynikiem.

Typowe zastosowania obejmują generowanie raportów finansowych na podstawie danych z pulpitu nawigacyjnego, tworzenie faktur do pobrania na podstawie informacji o zamówieniach, generowanie biletów i karnetów z kodami QR oraz przekształcanie przesłanych formularzy w trwałe zapisy. Obsługując konwersję ASP HTML do PDF na serwerze, zapewniasz spójne wyniki niezależnie od przeglądarki użytkownika lub możliwości urządzenia. IronPDF doskonale radzi sobie z renderowaniem złożonych układów i płynnie obsługuje treści zawierające duże ilości kodu JavaScript. Specyfikacja formatu PDF, na której opiera się ten proces, jest utrzymywana przez organizację normalizacyjną ISO, co sprawia, że PDF jest najbardziej przenośnym formatem dokumentów dostępnym do dystrybucji międzyplatformowej.

Przegląd funkcji IronPDF przedstawiający cztery główne kategorie: Tworzenie plików PDF, Konwersja plików PDF, Edycja plików PDF oraz Podpisywanie i zabezpieczanie plików PDF, wraz ze szczegółowymi listami funkcji w każdej sekcji.

Jak zainstalować IronPDF w projekcie ASP.NET?

Rozpoczęcie pracy z IronPDF w projekcie ASP.NET Core jest bardzo proste. Biblioteka obsługuje platformy .NET 6, 8 i 10, dzięki czemu jest kompatybilna ze wszystkimi nowoczesnymi aplikacjami ASP.NET Core. Aby zapoznać się ze szczegółowymi wymaganiami platformy, sprawdź przewodnik zgodności z systemem Windows lub instrukcje konfiguracji dla systemu Linux.

Najszybszym sposobem na dodanie IronPDF do projektu jest skorzystanie z menedżera pakietów NuGet. Kliknij prawym przyciskiem myszy swój projekt w Eksploratorze rozwiązań, wybierz "Zarządzaj pakietami NuGet" i wyszukaj IronPdf. Kliknij "Zainstaluj" przy najnowszej wersji. Szczegółowe instrukcje można znaleźć w przewodniku instalacji IronPDF.

Zainstaluj za pomocą konsoli menedżera pakietów:

Install-Package IronPdf
Install-Package IronPdf
SHELL

Lub przy użyciu interfejsu CLI platformy .NET:

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

Konsola menedżera pakietów pokazująca proces instalacji pakietu IronPDF NuGet wraz z pobieraniem wielu zależności

Jak skonfigurować IronPDF po instalacji?

Po zainstalowaniu dodaj dyrektywę using IronPdf; do dowolnego pliku C#, w którym będziesz pracować nad generowaniem plików PDF. Ten import zapewnia dostęp do klasy ChromePdfRenderer oraz wszystkich opcji konfiguracji renderowania.

W przypadku większości aplikacji ASP.NET Core IronPDF działa natychmiast po instalacji. Możesz jednak ustawić opcje globalne w pliku Program.cs, aby dostosować działanie do konkretnego środowiska hostingowego — Windows, Linux, Docker lub chmura:

using IronPdf;

// Optional global configuration (place in Program.cs)
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;

// Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";

// Required for Azure App Service deployments
Installation.AzureQuickDeployment = true;
using IronPdf;

// Optional global configuration (place in Program.cs)
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;

// Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";

// Required for Azure App Service deployments
Installation.AzureQuickDeployment = true;
Imports IronPdf

' Optional global configuration
Installation.TempFolderPath = "C:\Temp\IronPdf\"
Installation.LinuxAndDockerDependenciesAutoConfig = True

' Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All
Installation.LogFilePath = "IronPdfLog.log"

' Required for Azure App Service deployments
Installation.AzureQuickDeployment = True
$vbLabelText   $csharpLabel

W przypadku wdrożeń w Azure włącz AzureQuickDeployment, aby uzyskać optymalną wydajność. W środowiskach produkcyjnych należy wdrożyć niestandardowe logowanie w celu monitorowania operacji generowania plików PDF i wczesnego wykrywania błędów renderowania.

Schemat obsługi wieloplatformowej IronPDF pokazujący kompatybilność z wersjami .NET, systemami operacyjnymi, platformami chmurowymi i środowiskami programistycznymi

Jak przekonwertować ciągi znaków HTML na PDF?

Najbardziej podstawową operacją w IronPDF jest konwersja ciągów znaków HTML bezpośrednio do dokumentów PDF. To podejście jest idealne, gdy tworzysz treści HTML dynamicznie w aplikacji ASP.NET lub pracujesz z szablonami HTML. Metoda RenderHtmlAsPdf zapewnia elastyczność w konwersji HTML z zmiennych, Builderów ciągów znaków lub silników szablonów.

// Create a PDF renderer instance
var renderer = new ChromePdfRenderer();

// Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // milliseconds to wait before capture

// Convert an HTML string to a PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");

// Save the PDF to disk
pdf.SaveAs("report.pdf");

// Or get binary data to return as a file download
var pdfBytes = pdf.BinaryData;
// Create a PDF renderer instance
var renderer = new ChromePdfRenderer();

// Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // milliseconds to wait before capture

// Convert an HTML string to a PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");

// Save the PDF to disk
pdf.SaveAs("report.pdf");

// Or get binary data to return as a file download
var pdfBytes = pdf.BinaryData;
' Create a PDF renderer instance
Dim renderer = New ChromePdfRenderer()

' Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.RenderDelay = 500 ' milliseconds to wait before capture

' Convert an HTML string to a PDF document
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " & DateTime.Now & "</p>")

' Save the PDF to disk
pdf.SaveAs("report.pdf")

' Or get binary data to return as a file download
Dim pdfBytes = pdf.BinaryData
$vbLabelText   $csharpLabel

Ten fragment kodu tworzy instancję ChromePdfRenderer, która wykorzystuje silnik Chromium do renderowania kodu HTML. Metoda RenderHtmlAsPdf akceptuje dowolny prawidłowy ciąg znaków HTML i zwraca obiekt PdfDocument, który można zapisać na dysku lub przesłać strumieniowo do przeglądarki. W przypadku asynchronicznego generowania plików PDF należy otoczyć wywołanie tagami Task.Run, aby uniknąć blokowania wątków żądań.

Jak wygląda plik PDF?

Zrzut ekranu z przeglądarki plików PDF przedstawiający podstawowy raport sprzedaży z tytułem i sygnaturą czasową wygenerowany 11 stycznia 2025 r. o godz. 23:51:30

Jak uwzględnić style CSS i obrazy?

IronPDF w pełni obsługuje stylizację CSS i osadza obrazy z różnych źródeł podczas konwersji HTML do PDF. Renderer obsługuje style wbudowane, zewnętrzne arkusze stylów, czcionki internetowe, grafikę SVG oraz obrazy zakodowane w formacie base64:

var html = @"
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
        .highlight { background-color: #f1c40f; padding: 5px; }
        .data-table { width: 100%; border-collapse: collapse; }
        .data-table td { border: 1px solid #ddd; padding: 8px; }
    </style>
    <h1>Monthly Report</h1>
    <p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
    <table class='data-table'>
        <tr><td>Product</td><td>Sales</td></tr>
        <tr><td>Widget A</td><td>$1,234</td></tr>
    </table>";

var renderer = new ChromePdfRenderer();

// Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/");
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
var html = @"
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
        .highlight { background-color: #f1c40f; padding: 5px; }
        .data-table { width: 100%; border-collapse: collapse; }
        .data-table td { border: 1px solid #ddd; padding: 8px; }
    </style>
    <h1>Monthly Report</h1>
    <p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
    <table class='data-table'>
        <tr><td>Product</td><td>Sales</td></tr>
        <tr><td>Widget A</td><td>$1,234</td></tr>
    </table>";

var renderer = new ChromePdfRenderer();

// Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/");
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
Dim html As String = "
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
        .highlight { background-color: #f1c40f; padding: 5px; }
        .data-table { width: 100%; border-collapse: collapse; }
        .data-table td { border: 1px solid #ddd; padding: 8px; }
    </style>
    <h1>Monthly Report</h1>
    <p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
    <table class='data-table'>
        <tr><td>Product</td><td>Sales</td></tr>
        <tr><td>Widget A</td><td>$1,234</td></tr>
    </table>"

Dim renderer As New ChromePdfRenderer()

' Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = New Uri("https://yourdomain.com/")
renderer.RenderingOptions.EnableJavaScript = True

Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("styled-report.pdf")
$vbLabelText   $csharpLabel

Renderer przetwarza funkcje CSS3, w tym układy flexbox i grid, z pełną wiernością. W przypadku złożonych układów należy skorzystać z wytycznych dotyczących zgodności z Bootstrapem lub zaimplementować niestandardowe podziały stron przy użyciu reguł CSS page-break-before.

Jak przekonwertować widoki ASP.NET Core do formatu PDF?

Konwersja całych widoków ASP.NET Core do formatu PDF jest częstym wymaganiem przy generowaniu raportów na podstawie istniejących szablonów. IronPDF obsługuje widoki Razor, strony ASPX, a nawet komponenty Blazor.

Jak konwertować widoki kontrolera?

Renderuj widok do ciągu znaków HTML w kontrolerze, a następnie przekaż go do IronPDF. To podejście sprawdza się zarówno w przypadku aplikacji MVC Core, jak i MVC Framework:

[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
    var invoiceModel = new InvoiceModel
    {
        InvoiceNumber = 12345,
        Date = DateTime.Now,
        CustomerName = "Acme Corporation",
        Items = new List<InvoiceItem>
        {
            new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 },
            new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
        },
        Total = 200.0
    };

    // Render the Razor view to an HTML string first
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);

    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
    renderer.RenderingOptions.PrintHtmlBackgrounds = true;

    // Add a text header with the invoice number
    renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
    renderer.RenderingOptions.TextHeader.DrawDividerLine = true;

    var pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Restrict copying while allowing printing
    pdf.SecuritySettings.AllowUserPrinting = true;
    pdf.SecuritySettings.AllowUserCopyPasteContent = false;

    var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf";
    return File(pdf.BinaryData, "application/pdf", fileName);
}
[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
    var invoiceModel = new InvoiceModel
    {
        InvoiceNumber = 12345,
        Date = DateTime.Now,
        CustomerName = "Acme Corporation",
        Items = new List<InvoiceItem>
        {
            new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 },
            new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
        },
        Total = 200.0
    };

    // Render the Razor view to an HTML string first
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);

    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
    renderer.RenderingOptions.PrintHtmlBackgrounds = true;

    // Add a text header with the invoice number
    renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
    renderer.RenderingOptions.TextHeader.DrawDividerLine = true;

    var pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Restrict copying while allowing printing
    pdf.SecuritySettings.AllowUserPrinting = true;
    pdf.SecuritySettings.AllowUserCopyPasteContent = false;

    var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf";
    return File(pdf.BinaryData, "application/pdf", fileName);
}
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc

<HttpGet>
Public Async Function DownloadPdf() As Task(Of IActionResult)
    Dim invoiceModel = New InvoiceModel With {
        .InvoiceNumber = 12345,
        .Date = DateTime.Now,
        .CustomerName = "Acme Corporation",
        .Items = New List(Of InvoiceItem) From {
            New InvoiceItem With {.Description = "Service", .Quantity = 1, .Price = 100.0},
            New InvoiceItem With {.Description = "Support", .Quantity = 2, .Price = 50.0}
        },
        .Total = 200.0
    }

    ' Render the Razor view to an HTML string first
    Dim htmlContent = Await RenderViewToString("Invoice", invoiceModel)

    Dim renderer = New ChromePdfRenderer()
    renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
    renderer.RenderingOptions.PrintHtmlBackgrounds = True

    ' Add a text header with the invoice number
    renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" & invoiceModel.InvoiceNumber
    renderer.RenderingOptions.TextHeader.DrawDividerLine = True

    Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

    ' Restrict copying while allowing printing
    pdf.SecuritySettings.AllowUserPrinting = True
    pdf.SecuritySettings.AllowUserCopyPasteContent = False

    Dim fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf"
    Return File(pdf.BinaryData, "application/pdf", fileName)
End Function
$vbLabelText   $csharpLabel

To podejście najpierw renderuje widok Razor do HTML, a następnie konwertuje go do formatu PDF i zwraca plik do przeglądarki. W przypadku scenariuszy konwersji bez interfejsu użytkownika, bez pełnego potoku ASP.NET, warto rozważyć użycie Razor.Templating.Core.

Jak wygląda wygenerowany plik PDF?

PDF viewer showing a rendered invoice #12345 dated 2/11/2025 for Acme Corporation with a single service item totaling $100.00

Jak przekonwertować adres URL na plik PDF?

W przypadku istniejących stron internetowych IronPDF może przekształcić dowolny adres URL bezpośrednio w plik PDF. Ta metoda obsługuje pliki cookie i niestandardowe nagłówki HTTP dla uwierzytelnionych żądań:

[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
    var renderer = new ChromePdfRenderer();

    // Allow time for dynamic content to load before capture
    renderer.RenderingOptions.WaitFor.RenderDelay = 2000;
    renderer.RenderingOptions.ViewportWidth = 1920;

    // Pass authorization headers if the page requires authentication
    renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");

    var pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report");

    // Compress embedded images to reduce file size
    pdf.CompressImages(90);

    return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
    var renderer = new ChromePdfRenderer();

    // Allow time for dynamic content to load before capture
    renderer.RenderingOptions.WaitFor.RenderDelay = 2000;
    renderer.RenderingOptions.ViewportWidth = 1920;

    // Pass authorization headers if the page requires authentication
    renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");

    var pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report");

    // Compress embedded images to reduce file size
    pdf.CompressImages(90);

    return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
Imports Microsoft.AspNetCore.Mvc

<HttpGet>
Public Function GeneratePdfFromUrl() As IActionResult
    Dim renderer = New ChromePdfRenderer()

    ' Allow time for dynamic content to load before capture
    renderer.RenderingOptions.WaitFor.RenderDelay = 2000
    renderer.RenderingOptions.ViewportWidth = 1920

    ' Pass authorization headers if the page requires authentication
    renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token")

    Dim pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report")

    ' Compress embedded images to reduce file size
    pdf.CompressImages(90)

    Return File(pdf.BinaryData, "application/pdf", "webpage.pdf")
End Function
$vbLabelText   $csharpLabel

Ta metoda obsługuje wszystkie zasoby zewnętrzne, w tym arkusze stylów, skrypty i obrazy. W przypadku stron intensywnie wykorzystujących JavaScript należy dostosować opóźnienie renderowania lub użyć warunków WaitFor, aby uruchomić przechwytywanie dopiero po wystąpieniu określonych zdarzeń DOM.

Jaki jest wynik konwersji adresu URL?

Strona główna biblioteki IronPDF przedstawiająca funkcje konwersji plików PDF w języku C#, w tym możliwości konwersji HTML do PDF, opcje cenowe oraz przykłady kodu dla programistów .NET.

Jak dostosować plik PDF?

IronPDF oferuje szerokie możliwości dostosowywania, pozwalające kontrolować sposób generowania dokumentów PDF z HTML. Te ustawienia pomogą Ci stworzyć profesjonalne pliki, które spełniają konkretne wymagania dotyczące układu strony i formatowania. Zapoznaj się z pełną gamą dostępnych opcji renderowania.

Jak ustawić rozmiar strony i marginesy?

Precyzyjna kontrola rozmiaru papieru i marginesów w celu uzyskania profesjonalnego układu dokumentu:

var renderer = new ChromePdfRenderer();

// Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;

// Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

// Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);

// Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var renderer = new ChromePdfRenderer();

// Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;

// Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

// Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);

// Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
Dim renderer = New ChromePdfRenderer()

' Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait

' Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20

' Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)

' Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
$vbLabelText   $csharpLabel

Możesz wybierać spośród standardowych rozmiarów papieru lub zdefiniować własne wymiary, ustawić orientację pionową lub poziomą oraz dostosować marginesy zgodnie z wymaganiami projektowymi. W celu lepszej orientacji warto zapoznać się z opcjami obracania stron.

Jak dodać nagłówki i stopki?

Dodanie spójnych nagłówków i stopek poprawia profesjonalny wygląd dokumentów PDF. IronPDF obsługuje zarówno nagłówki w postaci zwykłego tekstu, jak i pełne nagłówki HTML z osadzonymi obrazami i CSS:

// Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Company Report",
    LeftText = "{date}",
    RightText = "Confidential",
    FontSize = 12,
    FontFamily = "Arial",
    DrawDividerLine = true
};

renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
    CenterText = "Page {page} of {total-pages}",
    LeftText = "© 2025 Company Name",
    DrawDividerLine = true
};

// For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; align-items: center;'>
            <img src='logo.png' height='30' />
            <h2>Monthly Report</h2>
            <span>{date}</span>
        </div>",
    MaxHeight = 50,
    DrawDividerLine = true
};
// Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Company Report",
    LeftText = "{date}",
    RightText = "Confidential",
    FontSize = 12,
    FontFamily = "Arial",
    DrawDividerLine = true
};

renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
    CenterText = "Page {page} of {total-pages}",
    LeftText = "© 2025 Company Name",
    DrawDividerLine = true
};

// For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; align-items: center;'>
            <img src='logo.png' height='30' />
            <h2>Monthly Report</h2>
            <span>{date}</span>
        </div>",
    MaxHeight = 50,
    DrawDividerLine = true
};
' Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
    .CenterText = "Company Report",
    .LeftText = "{date}",
    .RightText = "Confidential",
    .FontSize = 12,
    .FontFamily = "Arial",
    .DrawDividerLine = True
}

renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
    .CenterText = "Page {page} of {total-pages}",
    .LeftText = "© 2025 Company Name",
    .DrawDividerLine = True
}

' For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "
        <div style='display: flex; justify-content: space-between; align-items: center;'>
            <img src='logo.png' height='30' />
            <h2>Monthly Report</h2>
            <span>{date}</span>
        </div>",
    .MaxHeight = 50,
    .DrawDividerLine = True
}
$vbLabelText   $csharpLabel

Nagłówki i stopki obsługują specjalne symbole zastępcze dla numerów stron, dat i treści dynamicznych. Można również zastosować różne nagłówki do poszczególnych stron, aby uzyskać bardziej szczegółową kontrolę.

Jakie są najlepsze praktyki dotyczące konwersji plików PDF w ASP.NET?

Aby zapewnić optymalną wydajność i jakość podczas konwersji HTML do PDF, postępuj zgodnie z tymi sprawdzonymi praktykami. Wdrożenie strategii optymalizacji wydajności dla wdrożeń na dużą skalę.

Zawsze najpierw przetestuj renderowanie HTML w przeglądarce, aby sprawdzić styl i układ przed wygenerowaniem plików PDF. Należy używać adresów URL bazowych dla zasobów zewnętrznych, ponieważ ścieżki względne mogą powodować błędy rozpoznawania podczas konwersji. W przypadku stron zawierających dużo kodu JavaScript należy dodać opóźnienia renderowania, aby zapewnić całkowite załadowanie strony przed przechwyceniem.

Poniższy przykład przedstawia usługę wielokrotnego użytku w formacie PDF, która centralizuje konfigurację i obsługuje generowanie asynchroniczne:

public class PdfService
{
    private readonly ChromePdfRenderer _renderer;

    public PdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.RenderDelay = 100;
        _renderer.RenderingOptions.Timeout = 60000;
        _renderer.RenderingOptions.EnableJavaScript = true;
        _renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
    }

    public async Task<byte[]> GeneratePdfAsync(string html, bool compressImages = false)
    {
        var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));

        if (compressImages)
        {
            pdf.CompressImages(90);
        }

        return pdf.BinaryData;
    }
}
public class PdfService
{
    private readonly ChromePdfRenderer _renderer;

    public PdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.RenderDelay = 100;
        _renderer.RenderingOptions.Timeout = 60000;
        _renderer.RenderingOptions.EnableJavaScript = true;
        _renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
    }

    public async Task<byte[]> GeneratePdfAsync(string html, bool compressImages = false)
    {
        var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));

        if (compressImages)
        {
            pdf.CompressImages(90);
        }

        return pdf.BinaryData;
    }
}
Public Class PdfService
    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New()
        _renderer = New ChromePdfRenderer()
        _renderer.RenderingOptions.RenderDelay = 100
        _renderer.RenderingOptions.Timeout = 60000
        _renderer.RenderingOptions.EnableJavaScript = True
        _renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
    End Sub

    Public Async Function GeneratePdfAsync(html As String, Optional compressImages As Boolean = False) As Task(Of Byte())
        Dim pdf = Await Task.Run(Function() _renderer.RenderHtmlAsPdf(html))

        If compressImages Then
            pdf.CompressImages(90)
        End If

        Return pdf.BinaryData
    End Function
End Class
$vbLabelText   $csharpLabel

Rozważ wdrożenie buforowania często generowanych dokumentów w celu zmniejszenia obciążenia serwera. Używaj metod asynchronicznych, aby uzyskać lepszą skalowalność w aplikacjach internetowych. W przypadku scenariuszy wymagających przetwarzania dużych ilości danych warto rozważyć przetwarzanie równoległe lub wdrożenie IronPDF jako mikrousługi.

Podczas wdrażania do środowiska produkcyjnego skonfiguruj odpowiednie ścieżki do folderów tymczasowych i upewnij się, że w środowisku hostingowym zainstalowano niezbędne zależności, zwłaszcza w przypadku wdrożeń w systemie Linux. Monitoruj wykorzystanie pamięci i wdrażaj odpowiednie wzorce usuwania obiektów, korzystając ze wzorca IDisposable z wytycznych Microsoftu dotyczących platformy .NET. Podczas pracy z dużymi dokumentami HTML należy stosować podejście strumieniowe, aby zminimalizować obciążenie pamięci.

Poniższa tabela zawiera podsumowanie trzech głównych metod konwersji oraz wskazówki dotyczące tego, kiedy należy z nich korzystać:

Porównanie metod konwersji IronPDF ASP.NET
Metoda Najlepsze dla Kluczowe API Obsługa uwierzytelniania
Ciąg znaków HTML Dynamiczna treść wbudowana w kod RenderHtmlAsPdf() Nie dotyczy
Razor View Istniejące widoki i szablony MVC RenderHtmlAsPdf() Kontekst sesji
URL Strony internetowe publiczne lub wymagające uwierzytelnienia RenderUrlAsPdf() Pliki cookie, nagłówki, poświadczenia

Co dalej z procesem generowania plików PDF?

Konwersja kodu HTML ASP do formatu PDF w aplikacjach ASP.NET Core staje się prosta dzięki IronPDF. Renderowanie biblioteki oparte na przeglądarce Chrome zapewnia dokładną konwersję, oferując jednocześnie szerokie możliwości dostosowywania do potrzeb profesjonalnego tworzenia dokumentów. Poznaj zaawansowane funkcje, takie jak zgodność z PDF/A, podpisy cyfrowe i tworzenie formularzy.

Niezależnie od tego, czy pracujesz z ciągami HTML, adresami URL czy pełnymi widokami Razor, IronPDF zachowuje dokładne formatowanie, stylizację CSS i zachowanie JavaScript. Warto rozważyć kompresję plików PDF, stosowanie znaków wodnych oraz zarządzanie metadanymi w celu uzyskania pełnej kontroli nad dokumentami.

Rozpocznij bezpłatny 30-dniowy okres próbny już dziś, aby wdrożyć profesjonalne generowanie plików PDF w swoich aplikacjach ASP.NET Core. Potrzebujesz pomocy przy wyborze? Zapoznaj się z opcjami licencyjnymi lub umów się na prezentację z zespołem.

Strona licencyjna IronPDF przedstawiająca cztery poziomy cenowe (Lite, Plus, Professional i Unlimited) z różnymi limitami dotyczącymi programistów, lokalizacji i projektów

Często Zadawane Pytania

Jaki jest najlepszy sposób konwersji HTML do PDF w ASP.NET Core?

Najlepszym sposobem na konwersję HTML do PDF w ASP.NET Core jest użycie IronPDF. Zapewnia ono płynne rozwiązanie do przekształcania treści HTML, gwarantując generowanie plików PDF o wysokiej jakości.

Dlaczego warto używać IronPDF do konwersji HTML na PDF?

IronPDF oferuje solidne funkcje, takie jak dokładne renderowanie, obsługa CSS i JavaScript oraz możliwość obsługi złożonych dokumentów HTML. Dzięki temu idealnie nadaje się do generowania profesjonalnych plików PDF z aplikacji ASP.NET.

Czy IronPDF obsługuje treści dynamiczne w aplikacjach ASP.NET?

Tak, IronPDF może skutecznie obsługiwać treści dynamiczne w aplikacjach ASP.NET. Przetwarza i konwertuje dynamiczną zawartość HTML na pliki PDF, dzięki czemu idealnie nadaje się do tworzenia faktur, raportów i innych dokumentów.

Czy za pomocą IronPDF można dołączyć style CSS do wygenerowanego pliku PDF?

Oczywiście, IronPDF obsługuje style CSS. Możesz zastosować swoje istniejące arkusze stylów CSS, aby zapewnić, że wynikowy plik PDF będzie zgodny z projektem i układem treści HTML.

W jaki sposób IronPDF obsługuje JavaScript podczas konwersji HTML do PDF?

IronPDF w pełni obsługuje JavaScript, co pozwala na umieszczanie w kodzie HTML elementów dynamicznych i treści interaktywnych, które są dokładnie renderowane w wynikowym pliku PDF.

Jakie są typowe zastosowania konwersji HTML do PDF w ASP.NET?

Typowe zastosowania obejmują generowanie faktur, tworzenie szczegółowych raportów, generowanie certyfikatów oraz udostępnianie treści do pobrania, takich jak e-booki i broszury, bezpośrednio z aplikacji ASP.NET.

W jaki sposób IronPDF zapewnia jakość generowanych plików PDF?

IronPDF zapewnia wysoką jakość plików PDF poprzez dokładne renderowanie treści HTML, w tym czcionek, obrazów, tabel i innych elementów, zachowując wierność oryginalnemu projektowi.

Czy mogę zautomatyzować proces konwersji HTML do PDF za pomocą IronPDF?

Tak, IronPDF można zintegrować z procesami automatyzacji w aplikacjach ASP.NET, co pozwala zautomatyzować konwersję HTML do PDF w ramach procesów aplikacji.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie