Wie man HTML in PDF in ASP .NET Core konvertiert

Chaknith Bin
Chaknith Bin
27. Juni 2020
Aktualisiert 28. Januar 2025
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

.NET Core PDF-Generator

Die Erstellung von .NET Core PDF-Dateien ist eine mühsame Aufgabe. Die Arbeit mit PDFs in ASP.NET MVC-Projekten sowie die Konvertierung von MVC-Ansichten, HTML-Dateien und Online-Webseiten in PDF kann eine Herausforderung sein. Dieses Tutorial arbeitet mit dem IronPDF-Tool, um diese Probleme zu lösen, und bietet Anleitungen für viele Ihrer PDF .NET-Anforderungen.

IronPDF unterstützt auch das Debugging Ihres HTML mit Chrome für Pixel Perfect PDFs.


Übersicht

Nach diesem Tutorial werden Sie in der Lage sein:

  • Konvertierung in PDF aus verschiedenen Quellen wie URL, HTML, MVC-Ansichten
  • Erweiterte Optionen für verschiedene PDF-Ausgabeeinstellungen
  • Stellen Sie Ihr Projekt auf Linux und Windows bereit
  • Arbeit mit Funktionen zur Bearbeitung von PDF-Dokumenten
  • Kopf- und Fußzeilen hinzufügen, Dateien zusammenführen, Stempel hinzufügen
  • Arbeiten mit Dockers

    Diese breite Palette an .NET Core HTML to PDF-Funktionen hilft bei einer ganzen Reihe von Projektanforderungen.

    Erste Schritte mit IronPDF

    Beginnen Sie noch heute mit der Verwendung von IronPDF in Ihrem Projekt mit einer kostenlosen Testversion.

    Erster Schritt:
    green arrow pointer


Schritt 1

1. Die IronPDF-Bibliothek kostenlos installieren

IronPDF kann auf allen .NET-Projekttypen wie Windows-Anwendungen, ASP.NET MVC- und .NET Core-Anwendungen installiert und verwendet werden.

Um die IronPDF-Bibliothek zu unserem Projekt hinzuzufügen, gibt es zwei Möglichkeiten: entweder über den Visual Studio-Editor mit NuGet oder über die Befehlszeile mit dem Paketkonsolenmanager.

Installation mit NuGet

Um die IronPDF-Bibliothek zu unserem Projekt mithilfe von NuGet hinzuzufügen, können wir die visualisierte Oberfläche (NuGet-Paket-Manager) verwenden oder per Befehl über die Paket-Manager-Konsole:

1.1.1 Verwendung des NuGet-Paketmanagers

1- Right click on project name -> Select Manage NuGet Package 1 related to Installation mit NuGet 2- From browser tab -> search for IronPdf -> Install 2 related to Installation mit NuGet 3- Click Ok 3 related to Installation mit NuGet 4- Done! 4 related to Installation mit NuGet

1.1.2 Verwendung des NuGet-Paketkonsolenmanagers

1- From Tools -> NuGet Package Manager -> Package Manager Console 5 related to Installation mit NuGet 2- Run command -> Install-Package IronPdf 6 related to Installation mit NuGet


Anleitungen Tutorials

2. Website in PDF konvertieren

Beispiel: Konsolenanwendung ConvertUrlToPdf

Befolgen Sie diese Schritte, um ein neues Asp.NET MVC-Projekt zu erstellen


1- Open Visual Studio 7 related to 2. Website in PDF konvertieren 2- Choose Create new project 8 related to 2. Website in PDF konvertieren 3- Choose Console App (.NET Core) 9 related to 2. Website in PDF konvertieren 4- Give our sample name “ConvertUrlToPdf” and click create 10 related to 2. Website in PDF konvertieren 5- Now we have a console application created 11 related to 2. Website in PDF konvertieren 6- Add IronPdf => click install 12 related to 2. Website in PDF konvertieren 13 related to 2. Website in PDF konvertieren

7- Fügen Sie unsere ersten Zeilen hinzu, die eine Hauptseite der Wikipedia-Website in PDF rendern

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-1.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.wikipedia.org/");
pdf.SaveAs("wiki.pdf");

8- Run and check created file wiki.pdf 14 related to 2. Website in PDF konvertieren


3. .NET Core HTML in PDF konvertieren

Sample: ConvertHTMLToPdf Console application

To render HTML to PDF we have two ways:
1- Write HTML into string then render it
2- Write HTML into file and pass it path to IronPDF to render it

Rendering the HTML string sample code will look like this.

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-2.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
pdf.SaveAs("HtmlString.pdf");

Und das resultierende PDF wird so aussehen.

15 related to 3. .NET Core HTML in PDF konvertieren


4. MVC-Ansicht in PDF konvertieren

Beispiel: TicketsApps .NET Core MVC-Anwendung

Lassen Sie uns ein Beispiel aus der Praxis umsetzen. Ich habe eine Online-Ticketverkaufsseite gewählt. Öffnen Sie die Website, navigieren Sie zu "Ticket buchen", geben Sie die erforderlichen Informationen ein und laden Sie dann Ihr Exemplar als PDF-Datei herunter.

Wir werden diese Schritte durchgehen:

Projekt erstellen

  1. Wählen Sie das Projekt "ASP.NET Core Web App (Model-View-Controller)".

    16 related to Projekt erstellen
  2. Nennen Sie das Projekt "TicketsApps"

    17 related to Projekt erstellen
  3. Verwenden wir .NET 8 mit aktiviertem Linux-Docker. Ändern Sie in der Dockerdatei von "USER app" in "USER root". Auf diese Weise wird sichergestellt, dass der Bibliothek ausreichende Berechtigungen erteilt werden.

    18 related to Projekt erstellen
  4. Jetzt ist es so weit. 19 related to Projekt erstellen

Client-Modell hinzufügen

  1. Klicken Sie mit der rechten Maustaste auf den Ordner "Models" und fügen Sie eine Klasse hinzu.

    20 related to Client-Modell hinzufügen
  2. Nennen Sie das Modell "ClientModel" und klicken Sie auf "Hinzufügen".

    21 related to Client-Modell hinzufügen
  3. Fügen Sie der Klasse ClientModel die Attribute "Name", "Telefon" und "E-Mail" hinzu. Machen Sie sie alle erforderlich, indem Sie das Attribut "Erforderlich" wie folgt über jedes von ihnen hinzufügen:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-3.cs
public class ClientModel
{
    [Required]
    public string Name { get; set; }
    [Required]
    public string Phone { get; set; }
    [Required]
    public string Email { get; set; }
}

Kundendienste hinzufügen

  1. Erstellen Sie einen Ordner und nennen Sie ihn "Dienste"

  2. Fügen Sie eine Klasse namens "ClientServices" hinzu

  3. Fügen Sie ein statisches Objekt vom Typ "ClientModel" hinzu, um es als Repository zu verwenden.

  4. Fügen Sie zwei Funktionen hinzu: eine für das Speichern von Clients im Repository und die zweite zum Abrufen gespeicherter Clients.
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-4.cs
public class ClientServices
{
    private static ClientModel _clientModel;
    public static void AddClient(ClientModel clientModel)
    {
        _clientModel = clientModel;
    }
    public static ClientModel GetClient()
    {
        return _clientModel;
    }
}

Design Ticketbuchungsseite

  1. Klicken Sie im Lösungsexplorer mit der rechten Maustaste auf den Ordner "Controllers" und fügen Sie einen Controller hinzu.

    22 related to Design Ticketbuchungsseite
  2. Nennen Sie es "BookTicketController"

    23 related to Design Ticketbuchungsseite
  3. Klicken Sie mit der rechten Maustaste auf die Indexfunktion (oder wie wir es Aktion nannten) und wählen Sie "Ansicht hinzufügen".

    24 related to Design Ticketbuchungsseite
  4. Fügen Sie eine Ansicht mit dem Namen "index" hinzu

    25 related to Design Ticketbuchungsseite
  5. Aktualisieren Sie den HTML-Code wie folgt
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-5.cs
@model IronPdfMVCHelloWorld.Models.ClientModel
@{
  ViewBag.Title = "Book Ticket";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
  <div class="form-horizontal">
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
      @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      @Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      <div class="col-md-10 pull-right">
        <button type="submit" value="Save" class="btn btn-sm">
          <i class="fa fa-plus"></i>
          <span>
            Save
          </span>
        </button>
      </div>
    </div>
  </div>
}
  1. Fügen Sie einen Navigationslink hinzu, damit unsere Website-Besucher zu unserer neuen Buchungsseite navigieren können. Dies kann durch Aktualisieren des Layouts im vorhandenen Pfad (Views -> Shared -> _Layout.cshtml) erfolgen. Fügen Sie den folgenden Code hinzu:
<li class="nav-item">
    <a
        class="nav-link text-dark"
        asp-area=""
        asp-controller="BookTicket"
        asp-action="Index"
        >Book Ticket</a
    >
</li>
<li class="nav-item">
    <a
        class="nav-link text-dark"
        asp-area=""
        asp-controller="BookTicket"
        asp-action="Index"
        >Book Ticket</a
    >
</li>
HTML
  1. Das Ergebnis sollte wie folgt aussehen.

    26 related to Design Ticketbuchungsseite
  2. Navigieren Sie zur Seite "Ticket buchen". Es sollte dann so aussehen: 27 related to Design Ticketbuchungsseite

Bestätigen und Speichern der Buchungsinformationen

  1. Fügen Sie eine weitere Indexaktion mit dem Attribut [HttpPost] hinzu, um die MVC-Engine darüber zu informieren, dass diese Aktion zum Übermitteln von Daten ist. Überprüfen Sie das gesendete Modell, und wenn es gültig ist, leitet der Code den Besucher auf die TicketView-Seite um. Ist sie ungültig, erhält der Besucher auf dem Bildschirm eine Fehlermeldung zur Validierung.
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-7.cs
[HttpPost]
public ActionResult Index(ClientModel model)
{
    if (ModelState.IsValid)
    {
        ClientServices.AddClient(model);
        return RedirectToAction("TicketView");
    }
  return View(model);
}

Beispiel für die Fehlermeldungen

28 related to Bestätigen und Speichern der Buchungsinformationen
  1. Erstellen Sie ein Ticket-Modell in der Datei "Models" und fügen Sie den folgenden Code hinzu
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-9.cs
public class TicketModel : ClientModel
{
    public int TicketNumber { get; set; }
    public DateTime TicketDate { get; set; }
}
  1. TicketView hinzufügen, um unser Ticket anzuzeigen. In dieser Ansicht befindet sich eine Ticket-Teilansicht, die für die Anzeige des Tickets verantwortlich ist und später zum Drucken des Tickets verwendet wird.
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-8.cs
public ActionResult TicketView()
{
    var rand = new Random();
    var client = ClientServices.GetClient();
    var ticket = new TicketModel()
    {
        TicketNumber = rand.Next(100000, 999999),
        TicketDate = DateTime.Now,
        Email = client.Email,
        Name = client.Name,
        Phone = client.Phone
    };

    return View(ticket);
}
  1. Klicken Sie mit der rechten Maustaste auf die Funktion TicketView, wählen Sie "Ansicht hinzufügen" und nennen Sie sie "TicketView". Fügen Sie den folgenden Code hinzu:
@model TicketsApps.Models.TicketModel @{ ViewData["Title"] = "TicketView"; }
@Html.Partial("_TicketPdf", Model) @using (Html.BeginForm()) { @Html.HiddenFor(c
=> c.Email) @Html.HiddenFor(c => c.Name) @Html.HiddenFor(c => c.Phone)
@Html.HiddenFor(c => c.TicketDate) @Html.HiddenFor(c => c.TicketNumber)

<div class="form-group">
    <div class="col-md-10 pull-right">
        <button type="submit" value="Save" class="btn btn-sm">
            <i class="fa fa-plus"></i>
            <span> Download Pdf </span>
        </button>
    </div>
</div>
}
@model TicketsApps.Models.TicketModel @{ ViewData["Title"] = "TicketView"; }
@Html.Partial("_TicketPdf", Model) @using (Html.BeginForm()) { @Html.HiddenFor(c
=> c.Email) @Html.HiddenFor(c => c.Name) @Html.HiddenFor(c => c.Phone)
@Html.HiddenFor(c => c.TicketDate) @Html.HiddenFor(c => c.TicketNumber)

<div class="form-group">
    <div class="col-md-10 pull-right">
        <button type="submit" value="Save" class="btn btn-sm">
            <i class="fa fa-plus"></i>
            <span> Download Pdf </span>
        </button>
    </div>
</div>
}
HTML
  1. Klicken Sie mit der rechten Maustaste auf die BookTicket-Datei, fügen Sie eine weitere Ansicht hinzu und nennen Sie sie "_TicketPdf" Fügen Sie den folgenden Code hinzu:
@model TicketsApps.Models.TicketModel @{ Layout = null; }
<link href="../css/ticket.css" rel="stylesheet" />
<div class="ticket">
    <div class="stub">
        <div class="top">
            <span class="admit">VIP</span>
            <span class="line"></span>
            <span class="num">
                @Model.TicketNumber
                <span> Ticket</span>
            </span>
        </div>
        <div class="number">1</div>
        <div class="invite">Room Number</div>
    </div>
    <div class="check">
        <div class="big">
            Your <br />
            Ticket
        </div>
        <div class="number">VIP</div>
        <div class="info">
            <section>
                <div class="title">Date</div>
                <div>@Model.TicketDate.ToShortDateString()</div>
            </section>
            <section>
                <div class="title">Issued By</div>
                <div>Admin</div>
            </section>
            <section>
                <div class="title">Invite Number</div>
                <div>@Model.TicketNumber</div>
            </section>
        </div>
    </div>
</div>
@model TicketsApps.Models.TicketModel @{ Layout = null; }
<link href="../css/ticket.css" rel="stylesheet" />
<div class="ticket">
    <div class="stub">
        <div class="top">
            <span class="admit">VIP</span>
            <span class="line"></span>
            <span class="num">
                @Model.TicketNumber
                <span> Ticket</span>
            </span>
        </div>
        <div class="number">1</div>
        <div class="invite">Room Number</div>
    </div>
    <div class="check">
        <div class="big">
            Your <br />
            Ticket
        </div>
        <div class="number">VIP</div>
        <div class="info">
            <section>
                <div class="title">Date</div>
                <div>@Model.TicketDate.ToShortDateString()</div>
            </section>
            <section>
                <div class="title">Issued By</div>
                <div>Admin</div>
            </section>
            <section>
                <div class="title">Invite Number</div>
                <div>@Model.TicketNumber</div>
            </section>
        </div>
    </div>
</div>
HTML
  1. Fügen Sie die folgende Datei "ticket.css" in die Datei "wwwroot/css" ein.

  2. Fügen Sie IronPDF zu Ihrem Projekt hinzu und stimmen Sie der Lizenz zu.

    31 related to Bestätigen und Speichern der Buchungsinformationen
  3. Fügen Sie die TicketView-Post-Methode hinzu, die die Download-Schaltfläche behandeln wird.
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-10.cs
[HttpPost]
public ActionResult TicketView(TicketModel model)
{
    IronPdf.Installation.TempFolderPath = $@"{Directory.GetParent}/irontemp/";
    IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
    var html = this.RenderViewAsync("_TicketPdf", model);
    var renderer = new IronPdf.ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(html.Result, @"wwwroot/css");
    return File(pdf.Stream.ToArray(), "application/pdf");
}
  1. Erstellen Sie einen Controller in der Datei "Controller" und nennen Sie ihn "ControllerExtensions". Dieser Controller wird die Teilansicht in einen String umwandeln. Verwenden Sie den Durchwahlcode wie folgt:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-11.cs
using System.IO;
using System.Threading.Tasks;

public static class ControllerExtensions
{
    public static async Task<string> RenderViewAsync<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
    {
        if (string.IsNullOrEmpty(viewName))
        {
            viewName = controller.ControllerContext.ActionDescriptor.ActionName;
        }
        controller.ViewData.Model = model;
        using (var writer = new StringWriter())
        {
            IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
            ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);
            if (viewResult.Success == false)
            {
                return $"A view with the name {viewName} could not be found";
            }
            ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, new HtmlHelperOptions());
            await viewResult.View.RenderAsync(viewContext);
            return writer.GetStringBuilder().ToString();
        }
    }
}
  1. Führen Sie die Anwendung aus, füllen Sie die Ticketinformationen aus und klicken Sie dann auf "Speichern". 32 related to Bestätigen und Speichern der Buchungsinformationen
  2. View the generated ticket 33 related to Bestätigen und Speichern der Buchungsinformationen

PDF-Ticket herunterladen

Um das Ticket als PDF herunterzuladen, klicken Sie auf "Download Pdf". Sie erhalten eine PDF-Datei mit dem Ticket.

Sie können den vollständigen Code für diese Anleitung herunterladen. Er wird als gezippte Datei geliefert, die Sie in Visual Studio öffnen können. Klicken Sie hier, um das Projekt herunterzuladen.


5. .NET PDF Rendering Optionen Tabelle

Wir haben einige erweiterte Optionen, die PDF-Rendering-Optionen wie die Anpassung von Rändern definieren,

papierausrichtung, Papierformat und mehr.

Die nachstehende Tabelle veranschaulicht die vielen verschiedenen Möglichkeiten.

Class ChromePdfRenderer
Description Used to define PDF print out options, like paper size, DPI, headers and footers
Properties / functions Type Description
CustomCookies Dictionary<string, string> Custom cookies for the HTML render. Cookies do not persist between renders and must be set each time.
PaperFit VirtualPaperLayoutManager A manager for setting up virtual paper layouts, controlling how content will be laid out on PDF "paper" pages. Includes options for Default Chrome Behavior, Zoomed, Responsive CSS3 Layouts, Scale-To-Page & Continuous Feed style PDF page setups.
UseMarginsOnHeaderAndFooter UseMargins Use margin values from the main document when rendering headers and footers.
CreatePdfFormsFromHtml bool Turns all HTML form elements into editable PDF forms. Default value is true.
CssMediaType PdfCssMediaType Enables Media="screen" CSS Styles and StyleSheets. Default value is PdfCssMediaType.Screen.
CustomCssUrl string Allows a custom CSS style-sheet to be applied to HTML before rendering. May be a local file path or a remote URL. Only applicable when rendering HTML to PDF.
EnableJavaScript bool Enables JavaScript and JSON to be executed before the page is rendered. Ideal for printing from Ajax / Angular Applications. Default value is false.
EnableMathematicalLaTex bool Enables rendering of Mathematical LaTeX Elements.
Javascript string A custom JavaScript string to be executed after all HTML has loaded but before PDF rendering.
JavascriptMessageListener StringDelegate A method callback to be invoked whenever a browser JavaScript console message becomes available.
FirstPageNumber int First page number to be used in PDF Headers and Footers. Default value is 1.
TableOfContents TableOfContentsTypes Generates a table of contents at the location in the HTML document where an element is found with id "ironpdf-toc".
GrayScale bool Outputs a black-and-white PDF. Default value is false.
TextHeader ITextHeaderFooter Sets the footer content for every PDF page as text, supporting 'mail-merge' and automatically turning URLs into hyperlinks.
TextFooter
HtmlHeader HtmlHeaderFooter Sets the header content for every PDF page as HTML. Supports 'mail-merge'.
HtmlFooter
InputEncoding Encoding The input character encoding as a string. Default value is Encoding.UTF8.
MarginTop double Top PDF "paper" margin in millimeters. Set to zero for border-less and commercial printing applications. Default value is 25.
MarginRight double Right PDF "paper" margin in millimeters. Set to zero for border-less and commercial printing applications. Default value is 25.
MarginBottom double Bottom PDF "paper" margin in millimeters. Set to zero for border-less and commercial printing applications. Default value is 25.
MarginLeft double Left PDF "paper" margin in millimeters. Set to zero for border-less and commercial printing applications. Default value is 25.
PaperOrientation PdfPaperOrientation The PDF paper orientation, such as Portrait or Landscape. Default value is Portrait.
PaperSize PdfPaperSize Sets the paper size
SetCustomPaperSizeinCentimeters double Sets the paper size in centimeters.
SetCustomPaperSizeInInches Sets the paper size in inches.
SetCustomPaperSizeinMilimeters Sets the paper size in millimeters.
SetCustomPaperSizeinPixelsOrPoints Sets the paper size in screen pixels or printer points.
PrintHtmlBackgrounds Boolean Indicates whether to print background-colors and images from HTML. Default value is true.
RequestContext RequestContexts Request context for this render, determining isolation of certain resources such as cookies.
Timeout Integer Render timeout in seconds. Default value is 60.
Title String PDF Document Name and Title metadata, useful for mail-merge and automatic file naming in the IronPdf MVC and Razor extensions.
ForcePaperSize Boolean Force page sizes to be exactly what is specified via IronPdf.ChromePdfRenderOptions.PaperSize by resizing the page after generating a PDF from HTML. Helps correct small errors in page size when rendering HTML to PDF.
WaitFor WaitFor A wrapper object that holds configuration for wait-for mechanism for users to wait for certain events before rendering. By default, it will wait for nothing.

6. .NET PDF Kopfzeile Fußzeile Optionen Diagramm

Class TextHeaderFooter
Description Used to define text header and footer display options
Properties \ functions Type Description
CenterText string Set the text in centered/left/right of PDF header or footer. Can also merge metadata using strings placeholders: {page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}
LeftText
RightText
DrawDividerLine Boolean Adds a horizontal line divider between the header/footer and the page content on every page of the PDF document.
DrawDividerLineColor Color The color of the divider line specified for IronPdf.TextHeaderFooter.DrawDividerLine.
Font PdfFont Font family used for the PDF document. Default is IronSoftware.Drawing.FontTypes.Helvetica.
FontSize Double Font size in pixels.

7. PDF-Druckoptionen (Rendering) anwenden

Lassen Sie uns versuchen, unsere PDF-Rendering-Optionen zu konfigurieren.

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-12.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;

renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");

8. Docker .NET Core-Anwendungen

8.1. Was ist Docker?

Docker ist eine Reihe von Platform-as-Service-Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Paketen, so genannten Containern, bereitzustellen. Container sind voneinander isoliert und bündeln ihre eigene Software, Bibliotheken und Konfigurationsdateien; sie können über klar definierte Kanäle miteinander kommunizieren.

Hier können Sie mehr über Docker und ASP.NET Core Anwendung erfahren.

Wir überspringen vorerst den Teil zur Arbeit mit Docker, aber wenn Sie mehr erfahren möchten, gibt es hier eine großartige Einführung in .NET und Docker. und noch mehr darüber, wie Sie Container für .NET Core Apps erstellen können.

Lassen Sie uns gemeinsam mit Docker loslegen.

8.2. Docker installieren

Besuchen Sie die Docker-Website hier, um Docker zu installieren. 40 related to 8.2. Docker installieren Klicken Sie auf Loslegen. 41 related to 8.2. Docker installieren Klicken Sie auf Download für Mac und Windows. 42 related to 8.2. Docker installieren Registrieren Sie sich kostenlos und melden Sie sich dann an. 43 related to 8.2. Docker installieren Docker für Windows herunterladen. 44 related to 8.2. Docker installieren Starten Sie die Installation von Docker. 45 related to 8.2. Docker installieren Es wird ein Neustart erforderlich sein. Nach dem Neustart Ihres Rechners melden Sie sich bei Docker an. 46 related to 8.2. Docker installieren Jetzt können Sie Docker "hello world" ausführen, indem Sie die Windows-Befehlszeile oder das PowerShell-Skript öffnen und schreiben:

Docker ausführen hello-world 47 related to 8.2. Docker installieren Hier ist eine Liste der wichtigsten Befehlszeilen, die Ihnen helfen soll:

  • Docker-Images => Auflisten aller verfügbaren Images auf diesem Rechner
  • Docker ps => zum Auflisten aller laufenden Container
  • Docker ps -a => zum Auflisten aller Container

8.3. In Linux-Container ausführen

38 related to 8.3. In Linux-Container ausführen 39 related to 8.3. In Linux-Container ausführen


9. Arbeiten mit vorhandenen PDF-Dokumenten

9.1. Vorhandene PDF-Datei öffnen

Da Sie PDFs aus URL und HTML (Text oder Datei) erstellen können, können Sie auch mit bestehenden PDF-Dokumenten arbeiten.

Das folgende Beispiel zeigt, wie man entweder ein normales PDF oder ein verschlüsseltes PDF mit einem Passwort öffnet

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-13.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
// Open an unencrypted pdf
PdfDocument unencryptedPdf = PdfDocument.FromFile("testFile.pdf");

// Open an encrypted pdf
PdfDocument encryptedPdf = PdfDocument.FromFile("testFile2.pdf", "MyPassword");

9.2. Mehrere PDFs zusammenführen

Sie können mehrere PDF-Dateien wie folgt zu einer einzigen PDF-Datei zusammenführen:

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-14.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
List<PdfDocument> PDFs = new List<PdfDocument>();
PDFs.Add(PdfDocument.FromFile("1.pdf"));
PDFs.Add(PdfDocument.FromFile("2.pdf"));
PDFs.Add(PdfDocument.FromFile("3.pdf"));
using PdfDocument PDF = PdfDocument.Merge(PDFs);
PDF.SaveAs("mergedFile.pdf");
foreach (PdfDocument pdf in PDFs)
{
    pdf.Dispose();
}

Fügen Sie eine weitere PDF-Datei wie folgt an das Ende der aktuellen PDF-Datei an:

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-15.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.AppendPdf(pdf2);
pdf.SaveAs("appendedFile.pdf");

Einfügen einer PDF-Datei in eine andere PDF-Datei ab einem bestimmten Index:

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-16.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.InsertPdf(pdf2, 0);
pdf.SaveAs("InsertIntoSpecificIndex.pdf");

9.3 Kopf- oder Fußzeilen hinzufügen

Sie können Kopf- und Fußzeilen zu einer vorhandenen PDF-Datei hinzufügen oder wenn Sie die PDF-Datei aus HTML oder einer URL rendern.

Es gibt zwei Klassen, die Sie verwenden können, um einer PDF-Datei Kopf- oder Fußzeilen hinzuzufügen:

  • TextHeaderFooter: einfachen Text in Kopf- oder Fußzeile einfügen.
  • HtmlHeaderFooter: Hinzufügen von Kopf- oder Fußzeilen mit reichhaltigem HTML-Inhalt und Bildern.

    Sehen wir uns nun zwei Beispiele dafür an, wie man Kopf- und Fußzeilen zu einer bestehenden PDF-Datei hinzufügt oder wenn sie mit diesen beiden Klassen gerendert wird.

    9.3.1 Kopfzeile zu bestehendem PDF hinzufügen

    Unten ist ein Beispiel, um eine vorhandene PDF-Datei zu laden und dann mit den Methoden AddTextHeaders und AddHtmlFooters einen Kopf- und Fußzeile hinzuzufügen.

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-17.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
TextHeaderFooter header = new TextHeaderFooter()
{
    CenterText = "Pdf Header",
    LeftText = "{date} {time}",
    RightText = "{page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};
pdf.AddTextHeaders(header);
pdf.SaveAs("withHeader.pdf");

HtmlHeaderFooter Footer = new HtmlHeaderFooter()
{
    HtmlFragment = "<span style='text-align:right'> page {page} of {totalpages}</span>",
    DrawDividerLine = true,
    MaxHeight = 10 //mm
};
pdf.AddHtmlFooters(Footer);
pdf.SaveAs("withHeaderAndFooters.pdf");

9.3.2 Hinzufügen von Kopf- und Fußzeile zu neuem PDF

Hier ist ein Beispiel für die Erstellung einer PDF-Datei aus einer HTML-Datei und das Hinzufügen einer Kopf- und Fußzeile mit Hilfe von Rendering-Optionen.

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-18.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Pdf Header",
    LeftText = "{date} {time}",
    RightText = "{page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<span style='text-align:right'> page {page} of {totalpages}</span>",
    DrawDividerLine = true,
    MaxHeight = 10
};
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("test.html");
pdf.SaveAs("generatedFile.pdf");

10. PDF-Kennwort und Sicherheit hinzufügen

Sie können Ihre PDF-Datei mit einem Passwort schützen und die Sicherheitseinstellungen der Datei bearbeiten, z. B. Kopieren und Drucken verhindern.

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-19.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");

// Edit file metadata
pdf.MetaData.Author = "john smith";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key"); //secret-key is a owner password
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// Change or set the document ecrpytion password
pdf.Password = "123";
pdf.SaveAs("secured.pdf");

11. Digitales Signieren von PDFs

Sie können eine PDF-Datei auch wie folgt digital signieren:

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-20.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
pdf.Sign(new PdfSignature("cert123.pfx", "password"));
pdf.SaveAs("signed.pdf");

Erweitertes Beispiel für mehr Kontrolle:

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-21.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
IronPdf.Signing.PdfSignature signature = new IronPdf.Signing.PdfSignature("cert123.pfx", "123");

// Optional signing options
signature.SigningContact = "support@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "To show how to sign a PDF";

// Sign the PDF with the PdfSignature. Multiple signing certificates may be used
pdf.Sign(signature);

12. Text und Bilder aus PDF extrahieren

Text und Bilder extrahieren Mit IronPDF können Sie Text und Bilder aus einer PDF-Datei wie folgt extrahieren:

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-22.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");

pdf.ExtractAllText(); // Extract all text in the pdf
pdf.ExtractTextFromPage(0); // Read text from specific page

// Extract all images in the pdf
var AllImages = pdf.ExtractAllImages();

// Extract images from specific page
var ImagesOfAPage = pdf.ExtractImagesFromPage(0);

12.1. PDF in Bild rastern

Sie können PDF-Seiten auch wie folgt in Bilder umwandeln

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-23.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");

List<int> pageList = new List<int>() { 1, 2 };

pdf.RasterizeToImageFiles("*.png", pageList);

13. PDF-Wasserzeichen hinzufügen

Das Folgende ist ein Beispiel dafür, wie man PDF-Seiten mit einem Wasserzeichen versieht.

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-24.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

// Apply watermark
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs("Watermarked.pdf");

Wasserzeichen haben eine begrenzte Anzahl von Optionen und Funktionen. Für eine bessere Kontrolle können Sie die HTMLStamper-Klasse nutzen.

:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-25.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<div>test text </div>");

// Configure HTML stamper
HtmlStamper backgroundStamp = new HtmlStamper()
{
    Html = "<h2 style='color:red'>copyright 2018 ironpdf.com",
    MaxWidth = new Length(20),
    MaxHeight = new Length(20),
    Opacity = 50,
    Rotation = -45,
    IsStampBehindContent = true,
    VerticalAlignment = VerticalAlignment.Middle
};

pdf.ApplyStamp(backgroundStamp);
pdf.SaveAs("stamped.pdf");

Tutorial Schnellzugriff

Brand Visual Studio related to Tutorial Schnellzugriff

Holen Sie sich den Quellcode

Greifen Sie auf den gesamten Quellcode zu, der in diesem Tutorial als Visual Studio-Projekt-ZIP-Datei zu finden ist, die einfach zu verwenden und für Ihr Projekt zu teilen ist.

Holen Sie sich den Code

GitHub Tutorial Zugang

Entdecken Sie dieses Tutorial und viele weitere auf GitHub. Die Verwendung der Projekte und des Quellcodes ist der beste Weg, um zu lernen und diese auf Ihre eigenen PDF .NET Core-Anforderungen und Anwendungsfälle anzuwenden.

Erstellen von PDFs in .NET Core Tutorial
Github Icon related to Tutorial Schnellzugriff
Html To Pdf Icon related to Tutorial Schnellzugriff

Behalten Sie das PDF CSharp Cheat Sheet

Entwickeln Sie PDFs in Ihren .NET-Anwendungen mit unserem praktischen Referenzdokument. Dieses teilbare Tool bietet schnellen Zugriff auf häufig verwendete Funktionen und Beispiele zum Erzeugen und Bearbeiten von PDFs in C# und VB.NET und hilft Ihnen, Zeit und Aufwand zu sparen, um mit IronPDF und den gängigen PDF-Anforderungen in Ihrem Projekt zu beginnen.

Behalten Sie das Spickzettel

Mehr Dokumentation

Lesen Sie die IronPDF API-Referenz, in der alle Funktionen von IronPDF sowie Namespaces, Klassen, Methoden, Felder und Enums ausführlich beschrieben sind.

API-Referenzdokumentation
Documentation related to Tutorial Schnellzugriff
Chaknith Bin
Software-Ingenieur
Chaknith arbeitet an IronXL und IronBarcode. Er hat tiefgehende Expertise in C# und .NET und hilft, die Software zu verbessern und Kunden zu unterstützen. Seine Erkenntnisse aus Benutzerinteraktionen tragen zu besseren Produkten, Dokumentation und einem insgesamt besseren Erlebnis bei.