Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE

Ein Vergleich zwischen IronPDF und Apitron PDF Kit

In C# kann die Arbeit mit PDF-Dateien eine Herausforderung für Entwickler darstellen. Beim Erstellen von Inhalten für solche Dateien sind viele Faktoren zu berücksichtigen, und noch mehr, wenn Inhalte aus verschiedenen Formaten in PDF konvertiert werden. Automatisierung ist jetzt der Schlüssel zu Softwareentwicklungsprozessen. Diese Probleme wurden nun mit der Konstruktion von Bibliotheken gelöst, die Entwicklern helfen können, PDF-Dokumente zu lesen, zu schreiben, zu erstellen und zu ändern, ihre Attribute zu bearbeiten und sie aus anderen Formaten zu konvertieren.

In diesem Blogbeitrag werden zwei PDF-Bibliotheken für .NET und .NET Core verglichen. Diese beiden Bibliotheken sind:

  • Die IronPDF-Bibliothek
  • Das Apitron PDF Kit

IronPDF und Apitron PDF Kit sind zwei Bibliotheken, die PDF-Manipulationsfunktionen für .NET und .NET Core bieten. Beide können für die Konvertierung und Manipulation von Dokumentenfeldern verwendet werden. Beide können auch Lesezeichen erstellen. Die nächste Frage ist, welche C# PDF .NET-Bibliothek am besten für unsere .NET-Projekte geeignet ist. Dieser Vergleichsartikel wird Ihnen helfen, sich zwischen diesen beiden PDF-Bibliotheken zu entscheiden.

Zuerst werfen wir einen Blick darauf, was die beiden Bibliotheken zu bieten haben, und gehen dann zum eigentlichen Vergleich über.

Die Apitron PDF Kit Library und ihre Funktionen

Apitron PDF Kit ist eine .NET-Komponente, mit der Sie PDF-Dateien auf jede gewünschte Weise manipulieren oder konvertieren können. Sie können Bilder, Zeichnungen und Texte hinzufügen, Dokumente signieren und vieles mehr. Sie können auch vorhandene Inhalte bearbeiten. Die Apitron PDF Kit .NET-Komponente kann verwendet werden, um mobile, Desktop-, Web-, Windows- und Cloud-Anwendungen über mehrere Plattformen hinweg zu erstellen.

Mit diesem PDF-SDK können Sie:

  • Grafiken (Text, Bilder, Zeichnungen) extrahieren, ändern und hinzufügen
  • PDF-Dokumente teilen oder zusammenführen
  • Passwortgeschützte PDF-Formulare ausfüllen oder erstellen, FDF-Unterstützung
  • PDF-Dokumente mit mehreren Ebenen mit optionalen Inhaltsgruppen (OCG) erstellen
  • Felder zu Dokumenten hinzufügen oder daraus entfernen
  • Rechts-nach-links- oder bidirektionalen Text verwenden, um Seiteninhalte zu erstellen
  • Ressourcen innerhalb eines Dokuments prüfen - definierte Schriftarten, eingebettete Dateien
  • PDF-Dokumente digital signieren und vorhandene Signaturen prüfen

Die wichtigsten Funktionen von IronPDF

Entwickler, insbesondere C#-Programmierer, werden die IronPDF for .NET-Bibliothek lieben. Mit diesem erstaunlichen Tool können Sie einfach eine .NET Core PDF-Verarbeitungsanwendung konstruieren.

IronPDF verwendet die .NET Chromium-Engine, um HTML-Seiten (im Code oder in URL-Form) in PDF-Dateien zu konvertieren. Es ist absolut nicht erforderlich, komplexe APIs zu verwenden, um Navigationsobjekte zu positionieren oder PDFs aus HTML zu gestalten. Standard-Webdokumente werden von IronPDF unterstützt, einschließlich HTML, ASPX, JS, CSS und Bilder.

IronPDF kann mit HTML5, CSS, JS und Bildern erstellt werden. Ein PDF kann einfach bearbeitet, gestempelt sowie mit Kopf- und Fußzeilen versehen werden. Es erleichtert auch das Lesen von PDF-Texten und das Extrahieren von Grafiken.

Herausragende Merkmale von IronPDF sind:

  • Erstellung von PDF-Dokumenten mit HTML4/5, CSS und JavaScript
  • Laden von URLs mit benutzerdefinierten Netzwerkanmeldeinformationen, User-Agents, Proxys, Cookies, HTTP-Headern und Formularvariablen (ermöglicht das Einloggen hinter HTML-Anmeldeformularen)
  • Lesen und Ausfüllen von PDF-Formularfeldern
  • Extraktion von Text und Grafiken aus PDFs
  • Aktualisierung von PDF-Seiten mit neuen HTML-Inhalten
  • Erstellung von textbasierten oder HTML-basierten Kopf- und Fußzeilen
  • Zusammenführen und Trennung von PDF-Dokumenteninhalten
  • Konvertierung von ASP.NET-Webformularen in druckbare PDFs
  • Drucken von PDF-Dateien ohne Adobe Acrobat Software

IronPDF ist auf fast allen Betriebssystemen und Frameworks verfügbar, die mit C# kompatibel sind, einschließlich der folgenden:

  • .NET Core 2.1, 3.0, 3.1, .NET 6 & 5
  • .NET Standard 2.0 Compliance für universelle Kompatibilität
  • Azure, AWS, Docker, Linux, Windows

Der Rest des Artikels geht wie folgt weiter:

  1. IronPDF-Installation
  2. Apitron PDF Kit-Installation
  3. Erstellen eines PDF-Dokuments
  4. Erstellen von Kopf- und Fußzeilen im PDF
  5. PDF digital signieren
  6. Preise und Lizenzierung
  7. Fazit

1. IronPDF-Installation

Es gibt vier Methoden, um die IronPDF-Bibliothek herunterzuladen und zu installieren. Diese sind wie folgt:

  1. Verwendung des NuGet-Paketmanagers
  2. Developer Command Prompt
  3. Direktes Herunterladen des NuGet-Pakets
  4. Herunterladen der IronPDF .DLL-Bibliothek

1.1. Verwendung des NuGet-Paketmanagers

Um IronPDF zu installieren, klicken Sie einfach mit der rechten Maustaste auf Ihr Projekt im Solution Explorer. Dies öffnet den NuGet-Paketmanager.

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 1: Zugriff auf den NuGet-Paketmanager über den Solution Explorer

Zugriff auf den NuGet-Paketmanager über den Solution Explorer

Sobald Sie ihn ausgewählt haben, suchen Sie nach dem IronPDF-Paket und installieren Sie es, wie im untenstehenden Screenshot gezeigt.

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 2: Installieren der IronPDF-Bibliothek mit dem NuGet-Paketmanager

Installieren der IronPDF-Bibliothek mit dem NuGet-Paketmanager

1.2. Verwendung der Eingabeaufforderung für Entwickler

Sie können IronPDF auch über den Developer Command Prompt installieren.

  • Öffnen Sie den Developer Command Prompt, der sich normalerweise im Visual Studio-Ordner befindet
  • Geben Sie den folgenden Befehl ein:
Install-Package IronPdf
  • Drücken Sie die Eingabetaste
  • Dies wird das Paket herunterladen und installieren
  • Laden Sie Ihr Projekt neu und beginnen Sie mit der Nutzung

1.3. Laden Sie das NuGet-Paket direkt herunter

IronPDF kann auch installiert werden, indem Sie die IronPDF NuGet Package-Seite direkt besuchen und das Paket herunterladen. Die Schritte sind:

  • Navigieren Sie zu IronPDF NuGet Package
  • Wählen Sie Paket herunterladen
  • Doppelklicken Sie auf das heruntergeladene Paket
  • Das Paket wird installiert
  • Laden Sie Ihr Visual Studio-Projekt neu und beginnen Sie mit der Nutzung

IronPDF ist heruntergeladen und einsatzbereit. Bevor wir jedoch damit beginnen, sollten wir die Apitron PDF-Bibliothek installieren.

2. die Installation des Apitron PDF-Kits

Für .NET Core-Anwendungen können wir Apitron mit dem NuGet-Paketmanager installieren oder Apitron von der Apitron PDF Kit NuGet-Website direkt herunterladen und installieren.

  • Öffnen Sie NuGet-Pakete in Visual Studio, wie wir es bei IronPDF getan haben.
  • Suchen Sie nach Apitron.PDF.Kit.
  • Klicken Sie auf Installieren in Ihrem aktuellen Projekt.
A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 3: Apitron PDF Kit Suche

Apitron PDF Kit Suche

Sie können auch die NuGet-Paket-Manager-Konsole verwenden, um Apitron zu installieren. Folgen Sie dem Schritt "Developer Command Prompt verwenden" wie bei IronPDF und geben Sie den folgenden Befehl ein:

Install-Package Apitron.PDF.Kit

Drücken Sie ENTER. Es wird Apitron.PDF.Kit herunterladen und installieren.

Fügen Sie die folgenden Namespaces hinzu:

using Apitron.PDF.Kit;
using Apitron.PDF.Kit.FixedLayout.Resources;
using Apitron.PDF.Kit.FixedLayout.Resources.Fonts;
using Apitron.PDF.Kit.FlowLayout.Content;
using Apitron.PDF.Kit.Styles;
using Apitron.PDF.Kit.Styles.Appearance;
using Font = Apitron.PDF.Kit.Styles.Text.Font;
using Apitron.PDF.Kit;
using Apitron.PDF.Kit.FixedLayout.Resources;
using Apitron.PDF.Kit.FixedLayout.Resources.Fonts;
using Apitron.PDF.Kit.FlowLayout.Content;
using Apitron.PDF.Kit.Styles;
using Apitron.PDF.Kit.Styles.Appearance;
using Font = Apitron.PDF.Kit.Styles.Text.Font;
Imports Apitron.PDF.Kit
Imports Apitron.PDF.Kit.FixedLayout.Resources
Imports Apitron.PDF.Kit.FixedLayout.Resources.Fonts
Imports Apitron.PDF.Kit.FlowLayout.Content
Imports Apitron.PDF.Kit.Styles
Imports Apitron.PDF.Kit.Styles.Appearance
Imports Font = Apitron.PDF.Kit.Styles.Text.Font
$vbLabelText   $csharpLabel

Nun, lassen Sie uns zum Vergleich zwischen IronPDF und Apitron PDF übergehen.

3. ein PDF-Dokument erstellen

3.1. Mit IronPDF

IronPDF hat mehrere Methoden zur Erstellung von PDFs. Schauen wir uns zwei wichtige an.

Bestehende URL zu PDF

IronPDF macht es einfach, jede URL in ein PDF zu konvertieren. Der folgende Code hilft, die URL in ein PDF zu konvertieren.

var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from an existing URL
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Save the PDF to a file
Pdf.SaveAs("url.pdf");
var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from an existing URL
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Save the PDF to a file
Pdf.SaveAs("url.pdf");
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Render a PDF from an existing URL
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
' Save the PDF to a file
Pdf.SaveAs("url.pdf")
$vbLabelText   $csharpLabel

HTML-Eingabestring zu PDF

Der folgende Code erklärt, wie ein PDF-Dokument aus einem HTML-String gerendert wird. Sie können nur HTML verwenden oder es mit CSS, Bildern und JavaScript kombinieren.

var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from a simple HTML string
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets like images, CSS, and JavaScript
// Set the optional BasePath as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>Sample Text</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from a simple HTML string
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets like images, CSS, and JavaScript
// Set the optional BasePath as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>Sample Text</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Render a PDF from a simple HTML string
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")
PDF.SaveAs("pixel-perfect.pdf")

' Load external HTML assets like images, CSS, and JavaScript
' Set the optional BasePath as the file location to load assets from
Dim AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>Sample Text</h1>", "C:\site\assets\")
AdvancedPDF.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

Das Ergebnis ist wie folgt:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 4: IronPDF PDF aus URL und HTML-CSS-String generieren

IronPDF PDF aus URL und HTML-CSS-String generieren

3.2. Verwendung von Apitron PDF Kit

Apitron PDF bietet keine Möglichkeit, eine URL oder HTML in ein PDF zu konvertieren. Es ermöglicht die Konvertierung von PDF in HTML. Es konvertiert jedoch auch XML-Dateien in PDF. Die verwendete XML-Datei ist:

<?xml version="1.0" encoding="utf-8"?>
<FlowDocument xmlns="Apitron.PDF.Kit.FlowLayout.v1">
  <Resources>
    <Image resourceId="logo" fileName="../../images/logo.png" />
  </Resources>
  <Styles>
    <Style selector="flowdocument">
      <Color value="Black" />
    </Style>
    <Style selector="grid">
      <InnerBorder thickness="1" />
      <InnerBorderColor value="Black" />
    </Style>
  </Styles>
  <Elements>
    <Image>
      <Properties>
        <Class value="logo" />
        <ResourceId value="logo" />
      </Properties>
    </Image>
    <TextBlock>
      <Properties>
        <Class value="header" />
        <Text value="Sample Interview Questions for Candidates" />
      </Properties>
    </TextBlock>
    <Br />
    <TextBlock>
      <Properties>
        <Class value="headerNote" />
        <Text value="To help facilitate the interview process, the Human Resources Department has compiled a list of questions that might be used during the phone and/or on-campus interviews. Some of the questions deal with the same content, but are phrased differently while other questions may not pertain to a specific discipline; however all of the questions are unbiased and appropriate to ask. We hope you'll find this helpful." />
      </Properties>
    </TextBlock>
  </Elements>
  <Properties>
    <Margin value="30,20,30,20" />
  </Properties>
</FlowDocument>
<?xml version="1.0" encoding="utf-8"?>
<FlowDocument xmlns="Apitron.PDF.Kit.FlowLayout.v1">
  <Resources>
    <Image resourceId="logo" fileName="../../images/logo.png" />
  </Resources>
  <Styles>
    <Style selector="flowdocument">
      <Color value="Black" />
    </Style>
    <Style selector="grid">
      <InnerBorder thickness="1" />
      <InnerBorderColor value="Black" />
    </Style>
  </Styles>
  <Elements>
    <Image>
      <Properties>
        <Class value="logo" />
        <ResourceId value="logo" />
      </Properties>
    </Image>
    <TextBlock>
      <Properties>
        <Class value="header" />
        <Text value="Sample Interview Questions for Candidates" />
      </Properties>
    </TextBlock>
    <Br />
    <TextBlock>
      <Properties>
        <Class value="headerNote" />
        <Text value="To help facilitate the interview process, the Human Resources Department has compiled a list of questions that might be used during the phone and/or on-campus interviews. Some of the questions deal with the same content, but are phrased differently while other questions may not pertain to a specific discipline; however all of the questions are unbiased and appropriate to ask. We hope you'll find this helpful." />
      </Properties>
    </TextBlock>
  </Elements>
  <Properties>
    <Margin value="30,20,30,20" />
  </Properties>
</FlowDocument>
XML

Der Code zur Konvertierung dieser XML-Vorlage in ein PDF ist wie folgt:

// Use Apitron's FlowDocument to convert XML to PDF
using (Stream stream = File.OpenRead("C:\\PLACE YOUR EXACT PATH HERE\\template.xml"), 
               outputStream = File.Create("fromTemplate.pdf"))
{
    ResourceManager resourceManager = new ResourceManager();
    FlowDocument doc = FlowDocument.LoadFromXml(stream, resourceManager);

    doc.Write(outputStream, resourceManager);
}
// Use Apitron's FlowDocument to convert XML to PDF
using (Stream stream = File.OpenRead("C:\\PLACE YOUR EXACT PATH HERE\\template.xml"), 
               outputStream = File.Create("fromTemplate.pdf"))
{
    ResourceManager resourceManager = new ResourceManager();
    FlowDocument doc = FlowDocument.LoadFromXml(stream, resourceManager);

    doc.Write(outputStream, resourceManager);
}
' Use Apitron's FlowDocument to convert XML to PDF
Using stream As Stream = File.OpenRead("C:\PLACE YOUR EXACT PATH HERE\template.xml"), outputStream As Stream = File.Create("fromTemplate.pdf")
	Dim resourceManager As New ResourceManager()
	Dim doc As FlowDocument = FlowDocument.LoadFromXml(stream, resourceManager)

	doc.Write(outputStream, resourceManager)
End Using
$vbLabelText   $csharpLabel

Das Ergebnis ist wie folgt:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 5: Apitron PDF-Dokument

Apitron PDF-Dokument

Vergleicht man das Ergebnis von IronPDF und Apitron, kann man deutlich sehen, dass IronPDF atemberaubende Dokumente durch HTML-Rendering erstellt, ohne die Bildgröße zu skalieren. Andererseits erzielt Apitron ein ähnliches Ergebnis wie IronPDF, jedoch nur, wenn die XML-Datei registrierte Stile aufweist.

4. Kopf- und Fußzeilen zu PDF-Dokumenten hinzufügen

4.1. Mit IronPDF

Das Hinzufügen von Kopf- und Fußzeilen ist mit IronPDF ziemlich einfach. IronPDF ermöglicht das Hinzufügen von Seitennummern und Seitenumbrüchen, das Anfügen einer Titelseite, Rändern usw.

Der Code zum Hinzufügen von Kopf- und Fußzeilen ist unten:

var Renderer = new ChromePdfRenderer();

// Add a header
Renderer.RenderingOptions.FirstPageNumber = 1; // Use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "This is the header text";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for header

// Add a footer too
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
Renderer.RenderingOptions.TextFooter.FontSize = 12;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for footer

using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>This is header and footer generated pdf file</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
var Renderer = new ChromePdfRenderer();

// Add a header
Renderer.RenderingOptions.FirstPageNumber = 1; // Use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "This is the header text";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for header

// Add a footer too
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
Renderer.RenderingOptions.TextFooter.FontSize = 12;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for footer

using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>This is header and footer generated pdf file</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
Dim Renderer = New ChromePdfRenderer()

' Add a header
Renderer.RenderingOptions.FirstPageNumber = 1 ' Use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = True
Renderer.RenderingOptions.TextHeader.CenterText = "This is the header text"
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica
Renderer.RenderingOptions.TextHeader.FontSize = 12
Renderer.RenderingOptions.MarginTop = 25 ' Create 25mm space for header

' Add a footer too
Renderer.RenderingOptions.TextFooter.DrawDividerLine = True
Renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial
Renderer.RenderingOptions.TextFooter.FontSize = 12
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
Renderer.RenderingOptions.MarginTop = 25 ' Create 25mm space for footer

Dim AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>This is header and footer generated pdf file</h1>", "C:\site\assets\")
AdvancedPDF.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

Das Ergebnis ist wie folgt:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 6: IronPDF Kopf- und Fußzeile

IronPDF Kopf- und Fußzeile

4.2. Verwendung von Apitron PDF Kit

Das Apitron PDF Kit erstellt PDFs durch Konvertierung von Inhalten im XML-Strukturformat in ein PDF. Im Apitron PDF Kit können Kopf- und Fußzeilen mithilfe der Eigenschaften PageHeader und PageFooter hinzugefügt werden. Der Code dafür ist wie folgt:

// Register document resources first
ResourceManager resourceManager = new ResourceManager();
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo", "../../data/logo.png"));

// Create the document
FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };

// Register styles
doc.StyleManager.RegisterStyle(".pageHeader", new Style() { Font = new Font(StandardFonts.TimesBold, 20) });
doc.StyleManager.RegisterStyle(".pageFooter", new Style() { Align = Align.Right });
doc.StyleManager.RegisterStyle("hr", new Style() { Height = 2, Margin = new Thickness(0, 5, 0, 5) });
doc.StyleManager.RegisterStyle(".content", new Style() { Align = Align.Left, Display = Display.InlineBlock });

// Fill the header section
doc.PageHeader.Class = "pageHeader";
doc.PageHeader.Add(new Image("logo") { Width = 100, Height = 50 });
doc.PageHeader.Add(new TextBlock("This document is intended for internal use only") { TextIndent = 20 });
doc.PageHeader.Add(new Hr());

// Fill the footer section
doc.PageFooter.Class = "pageFooter";
doc.PageFooter.Add(new Hr());
doc.PageFooter.Add(new TextBlock((ctx) => string.Format("Page {0} from&nbsp;", ctx.CurrentPage + 1)));
doc.PageFooter.Add(new PageCount(3) { Display = Display.Inline });

// Add pages
for (int i = 0; i < 2; ++i)
{
    doc.Add(new TextBlock("This is header and footer generation pdf file.") { Class = "content" });
    doc.Add(new PageBreak());
}

// Generate PDF
using (Stream stream = File.Create("out.pdf"))
{
    doc.Write(stream, resourceManager);
}

Process.Start("out.pdf");
// Register document resources first
ResourceManager resourceManager = new ResourceManager();
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo", "../../data/logo.png"));

// Create the document
FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };

// Register styles
doc.StyleManager.RegisterStyle(".pageHeader", new Style() { Font = new Font(StandardFonts.TimesBold, 20) });
doc.StyleManager.RegisterStyle(".pageFooter", new Style() { Align = Align.Right });
doc.StyleManager.RegisterStyle("hr", new Style() { Height = 2, Margin = new Thickness(0, 5, 0, 5) });
doc.StyleManager.RegisterStyle(".content", new Style() { Align = Align.Left, Display = Display.InlineBlock });

// Fill the header section
doc.PageHeader.Class = "pageHeader";
doc.PageHeader.Add(new Image("logo") { Width = 100, Height = 50 });
doc.PageHeader.Add(new TextBlock("This document is intended for internal use only") { TextIndent = 20 });
doc.PageHeader.Add(new Hr());

// Fill the footer section
doc.PageFooter.Class = "pageFooter";
doc.PageFooter.Add(new Hr());
doc.PageFooter.Add(new TextBlock((ctx) => string.Format("Page {0} from&nbsp;", ctx.CurrentPage + 1)));
doc.PageFooter.Add(new PageCount(3) { Display = Display.Inline });

// Add pages
for (int i = 0; i < 2; ++i)
{
    doc.Add(new TextBlock("This is header and footer generation pdf file.") { Class = "content" });
    doc.Add(new PageBreak());
}

// Generate PDF
using (Stream stream = File.Create("out.pdf"))
{
    doc.Write(stream, resourceManager);
}

Process.Start("out.pdf");
' Register document resources first
Dim resourceManager As New ResourceManager()
resourceManager.RegisterResource(New Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo", "../../data/logo.png"))

' Create the document
Dim doc As New FlowDocument() With {.Margin = New Thickness(10)}

' Register styles
doc.StyleManager.RegisterStyle(".pageHeader", New Style() With {.Font = New Font(StandardFonts.TimesBold, 20)})
doc.StyleManager.RegisterStyle(".pageFooter", New Style() With {.Align = Align.Right})
doc.StyleManager.RegisterStyle("hr", New Style() With {
	.Height = 2,
	.Margin = New Thickness(0, 5, 0, 5)
})
doc.StyleManager.RegisterStyle(".content", New Style() With {
	.Align = Align.Left,
	.Display = Display.InlineBlock
})

' Fill the header section
doc.PageHeader.Class = "pageHeader"
doc.PageHeader.Add(New Image("logo") With {
	.Width = 100,
	.Height = 50
})
doc.PageHeader.Add(New TextBlock("This document is intended for internal use only") With {.TextIndent = 20})
doc.PageHeader.Add(New Hr())

' Fill the footer section
doc.PageFooter.Class = "pageFooter"
doc.PageFooter.Add(New Hr())
doc.PageFooter.Add(New TextBlock(Function(ctx) String.Format("Page {0} from&nbsp;", ctx.CurrentPage + 1)))
doc.PageFooter.Add(New PageCount(3) With {.Display = Display.Inline})

' Add pages
For i As Integer = 0 To 1
	doc.Add(New TextBlock("This is header and footer generation pdf file.") With {.Class = "content"})
	doc.Add(New PageBreak())
Next i

' Generate PDF
Using stream As Stream = File.Create("out.pdf")
	doc.Write(stream, resourceManager)
End Using

Process.Start("out.pdf")
$vbLabelText   $csharpLabel

Das Ergebnis ist wie folgt:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 7: Apitron Kopfzeile und Fußzeile

Apitron Kopfzeile und Fußzeile

5. Digitales Signieren von PDF

5.1. Mit IronPDF

Eine der wichtigsten Funktionen der PDF-Verarbeitung ist die Fähigkeit, ein PDF-Dokument digital zu signieren. IronPDF stellt alle erforderlichen Werkzeuge zur Verfügung, um dies zu tun.

using IronPdf;

// Cryptographically sign an existing PDF in 1 line of code!
new IronPdf.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");

/***** Advanced example for more control *****/

// 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>");

// 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.

var signature = new IronPdf.Signing.PdfSignature("Iron.pfx", "123456");

// 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");

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

// 5. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
using IronPdf;

// Cryptographically sign an existing PDF in 1 line of code!
new IronPdf.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");

/***** Advanced example for more control *****/

// 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>");

// 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.

var signature = new IronPdf.Signing.PdfSignature("Iron.pfx", "123456");

// 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");

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

// 5. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
Imports IronPdf

' Cryptographically sign an existing PDF in 1 line of code!
Call (New IronPdf.Signing.PdfSignature("Iron.p12", "123456")).SignPdfFile("any.pdf")

'''*** Advanced example for more control ****

' 1. Create a PDF
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>")

' 2. Create a Signature.
' You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.

Dim signature = New IronPdf.Signing.PdfSignature("Iron.pfx", "123456")

' 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png")

' 4. Sign the PDF with the PdfSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature)

' 5. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

5.2 Apitron PDF Kit verwenden

Das Signieren eines PDF-Dokuments mit Apitron PDF Kit ist sowohl ein langwieriger als auch technischer Prozess.

static void Main(string[] args)
{
    string fileName = "signedTwice.pdf";

    using (Stream stream = File.Create(fileName))
    {
        FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };
        doc.Add(new TextBlock("Signed using Apitron PDF Kit for .NET"));
        doc.Write(stream, new ResourceManager());
    }

    // Save
    Sign(fileName, "../../data/certs/JohnDoe.pfx", "password", "../../data/images/signatureImage.png", new Boundary(10, 750, 110, 800));
}

// Implementation of Sign Method
private static void Sign(string pathToDocument, string pathToCertificate, string password, string pathToSignatureImage, Boundary signatureViewLocation)
{
    // Open existing document and sign once
    using (Stream inputStream = new FileStream(pathToDocument, FileMode.Open, FileAccess.ReadWrite))
    {
        using (FixedDocument doc = new FixedDocument(inputStream))
        {
            string imageResourceId = Guid.NewGuid().ToString("N");
            string signatureFieldId = Guid.NewGuid().ToString("N");

            // Register signature image resource
            doc.ResourceManager.RegisterResource(new Image(imageResourceId, pathToSignatureImage));

            // Create first signature field and initialize it using a stored certificate
            SignatureField signatureField = new SignatureField(signatureFieldId);
            using (Stream signatureDataStream = File.OpenRead(pathToCertificate))
            {
                signatureField.Signature = Signature.Create(new Pkcs12Store(signatureDataStream, password));
            }

            // Add signature fields to the document
            doc.AcroForm.Fields.Add(signatureField);

            // Create first signature view using the image resource
            SignatureFieldView signatureView = new SignatureFieldView(signatureField, signatureViewLocation);
            signatureView.ViewSettings.Graphic = Graphic.Image;
            signatureView.ViewSettings.GraphicResourceID = imageResourceId;
            signatureView.ViewSettings.Description = Description.None;

            // Add views to page annotations collection
            doc.Pages[0].Annotations.Add(signatureView);

            // Save as incremental update
            doc.Save();
        }
    }
}
static void Main(string[] args)
{
    string fileName = "signedTwice.pdf";

    using (Stream stream = File.Create(fileName))
    {
        FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };
        doc.Add(new TextBlock("Signed using Apitron PDF Kit for .NET"));
        doc.Write(stream, new ResourceManager());
    }

    // Save
    Sign(fileName, "../../data/certs/JohnDoe.pfx", "password", "../../data/images/signatureImage.png", new Boundary(10, 750, 110, 800));
}

// Implementation of Sign Method
private static void Sign(string pathToDocument, string pathToCertificate, string password, string pathToSignatureImage, Boundary signatureViewLocation)
{
    // Open existing document and sign once
    using (Stream inputStream = new FileStream(pathToDocument, FileMode.Open, FileAccess.ReadWrite))
    {
        using (FixedDocument doc = new FixedDocument(inputStream))
        {
            string imageResourceId = Guid.NewGuid().ToString("N");
            string signatureFieldId = Guid.NewGuid().ToString("N");

            // Register signature image resource
            doc.ResourceManager.RegisterResource(new Image(imageResourceId, pathToSignatureImage));

            // Create first signature field and initialize it using a stored certificate
            SignatureField signatureField = new SignatureField(signatureFieldId);
            using (Stream signatureDataStream = File.OpenRead(pathToCertificate))
            {
                signatureField.Signature = Signature.Create(new Pkcs12Store(signatureDataStream, password));
            }

            // Add signature fields to the document
            doc.AcroForm.Fields.Add(signatureField);

            // Create first signature view using the image resource
            SignatureFieldView signatureView = new SignatureFieldView(signatureField, signatureViewLocation);
            signatureView.ViewSettings.Graphic = Graphic.Image;
            signatureView.ViewSettings.GraphicResourceID = imageResourceId;
            signatureView.ViewSettings.Description = Description.None;

            // Add views to page annotations collection
            doc.Pages[0].Annotations.Add(signatureView);

            // Save as incremental update
            doc.Save();
        }
    }
}
Shared Sub Main(ByVal args() As String)
	Dim fileName As String = "signedTwice.pdf"

	Using stream As Stream = File.Create(fileName)
		Dim doc As New FlowDocument() With {.Margin = New Thickness(10)}
		doc.Add(New TextBlock("Signed using Apitron PDF Kit for .NET"))
		doc.Write(stream, New ResourceManager())
	End Using

	' Save
	Sign(fileName, "../../data/certs/JohnDoe.pfx", "password", "../../data/images/signatureImage.png", New Boundary(10, 750, 110, 800))
End Sub

' Implementation of Sign Method
Private Shared Sub Sign(ByVal pathToDocument As String, ByVal pathToCertificate As String, ByVal password As String, ByVal pathToSignatureImage As String, ByVal signatureViewLocation As Boundary)
	' Open existing document and sign once
	Using inputStream As Stream = New FileStream(pathToDocument, FileMode.Open, FileAccess.ReadWrite)
		Using doc As New FixedDocument(inputStream)
			Dim imageResourceId As String = Guid.NewGuid().ToString("N")
			Dim signatureFieldId As String = Guid.NewGuid().ToString("N")

			' Register signature image resource
			doc.ResourceManager.RegisterResource(New Image(imageResourceId, pathToSignatureImage))

			' Create first signature field and initialize it using a stored certificate
			Dim signatureField As New SignatureField(signatureFieldId)
			Using signatureDataStream As Stream = File.OpenRead(pathToCertificate)
				signatureField.Signature = Signature.Create(New Pkcs12Store(signatureDataStream, password))
			End Using

			' Add signature fields to the document
			doc.AcroForm.Fields.Add(signatureField)

			' Create first signature view using the image resource
			Dim signatureView As New SignatureFieldView(signatureField, signatureViewLocation)
			signatureView.ViewSettings.Graphic = Graphic.Image
			signatureView.ViewSettings.GraphicResourceID = imageResourceId
			signatureView.ViewSettings.Description = Description.None

			' Add views to page annotations collection
			doc.Pages(0).Annotations.Add(signatureView)

			' Save as incremental update
			doc.Save()
		End Using
	End Using
End Sub
$vbLabelText   $csharpLabel

Das Ergebnis ist für beide Bibliotheken ziemlich gleich. Sichtbar ist, dass IronPDF einfacher und bequemer ist für die Manipulation von PDF-Inhalten. Das Ausgabepdf ist mit dem Zertifikat signiert und die Signatur darauf gedruckt.

Nutzung von Bootstrap 5 mit IronPDF für Portfolio-Galerien

Die Chrome V8-Rendereinheit von IronPDF unterstützt vollständig moderne Bootstrap 5-Komponenten und ermöglicht die Erstellung visuell beeindruckender PDF-Dokumente mit professionellen Portfolio-Galerien. Dieses Beispiel demonstriert Rasterlayouts, Hover-Effekte, Verlaufsoverlays und Kategoriebadges - Funktionen, die mit traditionellen PDF-Bibliotheken wie Apitron PDF SDK schwer umzusetzen wären.

using IronPdf;

var renderer = new ChromePdfRenderer();

string portfolioGallery = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .gallery-item {
            position: relative;
            overflow: hidden;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
        }
        .gallery-item img {
            width: 100%;
            height: 250px;
            object-fit: cover;
            transition: transform 0.3s;
        }
        .gallery-item:hover img {
            transform: scale(1.1);
        }
        .gallery-overlay {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
            padding: 20px;
            color: white;
        }
        .category-badge {
            position: absolute;
            top: 10px;
            right: 10px;
        }
        @media print {
            .gallery-item { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='container py-5'>
        <div class='text-center mb-5'>
            <h1 class='display-4'>Design Portfolio</h1>
            <p class='lead text-muted'>Showcase of PDF Document Designs</p>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='btn-group' role='group'>
                    <button class='btn btn-primary'>All Projects</button>
                    <button class='btn btn-outline-primary'>Invoices</button>
                    <button class='btn btn-outline-primary'>Reports</button>
                    <button class='btn btn-outline-primary'>Forms</button>
                    <button class='btn btn-outline-primary'>Certificates</button>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-primary category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #667eea 0%, #764ba2 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📄</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Professional Invoice Template</h5>
                        <small>Corporate billing with itemized details</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-success category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📊</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Analytics Dashboard Report</h5>
                        <small>Data visualization and metrics</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-warning category-badge'>Certificate</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>🏆</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Award Certificate</h5>
                        <small>Professional achievement recognition</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-info category-badge'>Form</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #fa709a 0%, #fee140 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📝</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Application Form</h5>
                        <small>Multi-page data collection</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-danger category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #30cfd0 0%, #330867 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>💰</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Payment Receipt</h5>
                        <small>Transaction confirmation document</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-secondary category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📈</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Financial Statement</h5>
                        <small>Quarterly performance overview</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='text-center mt-5'>
            <p class='text-muted'>All templates rendered with IronPDF's Chromium engine</p>
            <div class='d-flex justify-content-center gap-2'>
                <span class='badge bg-primary'>Bootstrap 5</span>
                <span class='badge bg-success'>Responsive</span>
                <span class='badge bg-info'>Print-Ready</span>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(portfolioGallery);
pdf.SaveAs("portfolio-gallery.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string portfolioGallery = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .gallery-item {
            position: relative;
            overflow: hidden;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
        }
        .gallery-item img {
            width: 100%;
            height: 250px;
            object-fit: cover;
            transition: transform 0.3s;
        }
        .gallery-item:hover img {
            transform: scale(1.1);
        }
        .gallery-overlay {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
            padding: 20px;
            color: white;
        }
        .category-badge {
            position: absolute;
            top: 10px;
            right: 10px;
        }
        @media print {
            .gallery-item { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='container py-5'>
        <div class='text-center mb-5'>
            <h1 class='display-4'>Design Portfolio</h1>
            <p class='lead text-muted'>Showcase of PDF Document Designs</p>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='btn-group' role='group'>
                    <button class='btn btn-primary'>All Projects</button>
                    <button class='btn btn-outline-primary'>Invoices</button>
                    <button class='btn btn-outline-primary'>Reports</button>
                    <button class='btn btn-outline-primary'>Forms</button>
                    <button class='btn btn-outline-primary'>Certificates</button>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-primary category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #667eea 0%, #764ba2 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📄</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Professional Invoice Template</h5>
                        <small>Corporate billing with itemized details</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-success category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📊</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Analytics Dashboard Report</h5>
                        <small>Data visualization and metrics</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-warning category-badge'>Certificate</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>🏆</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Award Certificate</h5>
                        <small>Professional achievement recognition</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-info category-badge'>Form</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #fa709a 0%, #fee140 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📝</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Application Form</h5>
                        <small>Multi-page data collection</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-danger category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #30cfd0 0%, #330867 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>💰</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Payment Receipt</h5>
                        <small>Transaction confirmation document</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-secondary category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📈</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Financial Statement</h5>
                        <small>Quarterly performance overview</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='text-center mt-5'>
            <p class='text-muted'>All templates rendered with IronPDF's Chromium engine</p>
            <div class='d-flex justify-content-center gap-2'>
                <span class='badge bg-primary'>Bootstrap 5</span>
                <span class='badge bg-success'>Responsive</span>
                <span class='badge bg-info'>Print-Ready</span>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(portfolioGallery);
pdf.SaveAs("portfolio-gallery.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Code generiert ein professionelles PDF-Portfolio mit einem responsiven Rasterlayout, visuellen Kategoriebadges, Verlaufsoverlays und Hover-Effekten. Die Chrome-Renderingeinheit bewahrt alle Bootstrap-Stilgestaltung, CSS-Grid-Layouts und benutzerdefinierte CSS-Eigenschaften - Fähigkeiten, die traditionelle PDF-Bibliotheken schwer replizieren können.

Hauptvorteile gegenüber Apitron PDF SDK:

  • Native Unterstützung von Bootstrap 5 ohne Konvertierung
  • CSS-Grid und Flexbox-Layouts rendern perfekt
  • Gradientenhintergründe und moderne CSS-Effekte
  • Einfacher Code mit hochwertigerem Ergebnis

Für eine umfassende Anleitung zur Bootstrap PDF-Erstellung siehe HTML zu PDF Bootstrap-Leitfaden.

6. Preise und Lizenzierung

IronPDF Preise und Lizenzierung

IronPDF ist eine C#-Bibliothek, die für die Entwicklung kostenlos nutzbar ist und jederzeit für die kommerzielle Nutzung lizenziert werden kann. Projektlizenzen für einzelne Entwickler, Agenturen und multinationale Organisationen sowie für SaaS und OEM-Wiederverteilung sind alle zugänglich. Alle Lizenzen bieten eine 30-tägige Geld-zurück-Garantie, ein Jahr Support und Updates, Entwicklungs-/Staging-/Produktionsgültigkeit und eine unbefristete Lizenz (Einmalkauf).

Das Lite-Paket ist für $799 verfügbar und hat keine wiederkehrenden Ausgaben. Weitere Details und Unterstützung bei der Auswahl der besten Lizenz sind auf der IronPDF Produktlizenzierungsseite verfügbar.

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 8: IronPDF Lizenzierung

IronPDF Lizenzierung

Apitron PDF Kit Preise und Lizenzierung

Es gibt zwei Lizenzschemata, die derzeit verwendet werden - Modern und Legacy. Wenn Sie bereits eine Lizenz haben, bleibt das Legacy-Lizenzschema für Sie aktiv, bis Ihre Lizenz läuft. Danach müssen Sie den Kundendienst für den Übergang kontaktieren. Das moderne Lizenzschema gilt nur, wenn Sie ein neuer Kunde sind.

Im Rahmen des modernen Schemas gibt es drei Lizenzniveaus:

  • Evaluation - dreimonatige Evaluierungsphase, um ein voll funktionsfähiges Produkt zu nutzen. Laden Sie einfach das Paket von NuGet herunter und beginnen Sie mit der Entwicklung.
  • Community - Verwenden Sie voll funktionsfähige Produkte ohne Gebühren in Ihren nicht-kommerziellen Projekten. Zustimmung ist erforderlich.
  • Kommerziell - Jeder Anwendungsfall, der nicht oben beschrieben ist. Die Preise hängen vom Nutzungsmuster ab.

Abschluss

Die IronPDF-Bibliothek erstellt perfekte PDFs aus Dokumenttypen wie HTML, JS, CSS, JPG, PNG, GIF und SVG. Die Chromium-Engine hilft beim Rendern der HTML-Dateien oder URLs, um perfekte PDFs als Ausgabe zu liefern.

Apitron ermöglicht es Ihnen, PDFs mit einer festen Layout-API zu erstellen, die zu 100% kompatibel mit der PDF-Spezifikation ist. Als stilgetriebene Methode der Inhaltserstellung, die HTML und CSS ähnelt, bietet diese Fixed-Layout-API die Möglichkeit, atemberaubende Berichte, Rechnungen, Kataloge und mehr in Minuten zu erstellen. Es unterstützt auch die Erstellung von XML-Vorlagen.

Lizenzierungspreise für Apitron PDF sind nicht auf deren Website verfügbar. Sie müssen den Support kontaktieren und einen Preis basierend auf Ihrem Gebrauch anfordern. Auf der anderen Seite hat IronPDF ein sehr klares Lizenzpaket auf ihrer Website dargestellt. Dies hebt IronPDF von seinen Mitbewerbern ab und ermöglicht es Benutzern, weise gemäß ihren Bedürfnissen zu wählen.

Mit IronPDF können Sie einfacher als mit Apitron PDF mit PDF-Dateien arbeiten. IronPDF ermöglicht es den Benutzern, weniger Codezeilen für anspruchsvolle PDF-Aufgaben zu schreiben. IronPDF bietet mehrere Methoden, um PDFs aus mehreren Dateitypen zu erstellen, während Apitron nur XML-Dokumente in PDF-Dokumente konvertieren kann. Ein perfektes Ergebnis wird ohne technische Optionen in IronPDF erzielt, im Vergleich zu Apitron.

Alle Kunden von Iron Software haben die Option, alle fünf Produkte des Unternehmens zum Preis von zwei davon zu erwerben. Probieren Sie die kostenlose, 30-tägige Testversion von IronPDF, um ihre volle Funktionalität zu testen. Kaufen Sie das gesamte Paket der Iron Software-Produkte bei Iron Software.com.

Hinweis:Apitron PDF Kit ist eine eingetragene Marke des jeweiligen Eigentümers. Diese Seite ist nicht mit, unterstützt oder wird gesponsert von Apitron PDF Kit. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Die Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich verfügbare Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Wie kann man HTML in C# zu PDF konvertieren?

Sie können die RenderHtmlAsPdf-Methode von IronPDF verwenden, um HTML-Strings in PDF-Dokumente zu konvertieren. Sie können auch HTML-Dateien mit RenderHtmlFileAsPdf in PDF-Dokumente umwandeln.

Welche Funktionen bietet IronPDF zur PDF-Erstellung?

IronPDF unterstützt die Erstellung von PDFs aus HTML, CSS und JavaScript, das Laden von URLs, das Extrahieren von Text und Grafiken, das Zusammenführen von PDFs und mehr. Es ist kompatibel mit .NET Core, Azure, AWS, Docker, Linux und Windows.

Wie kann man eine PDF-Datei in C# elektronisch signieren?

Mit IronPDF können Sie PDFs digital signieren, indem Sie ein PDF-Signaturzertifikat verwenden, das mit wenigen Codezeilen integriert werden kann.

Welche Installationsoptionen stehen für IronPDF zur Verfügung?

IronPDF kann über den NuGet Package Manager, die Developer Command Prompt oder durch direkten Download des NuGet-Pakets oder der IronPDF-DLL-Bibliothek installiert werden.

Gibt es eine kostenlose Version von IronPDF?

Ja, IronPDF bietet eine kostenlose Entwicklungsversion sowie kommerzielle Lizenzen an. Detaillierte Preisinformationen, einschließlich einer 30-tägigen Geld-zurück-Garantie, sind auf deren Website verfügbar.

Wie behandelt Apitron PDF Kit die Konvertierung von HTML zu PDF?

Apitron PDF Kit unterstützt keine direkte HTML-zu-PDF-Konvertierung, kann jedoch XML-Dateien in PDFs umwandeln.

Was sind die herausragenden Funktionen des Apitron PDF Kits?

Apitron PDF Kit ermöglicht eine umfassende PDF-Manipulation, einschließlich der Hinzufügung von Bildern, Zeichnungen, Texten, dem Signieren von Dokumenten sowie dem Zusammenführen oder Aufteilen von PDFs. Eine direkte HTML-zu-PDF-Konvertierung ist jedoch nicht möglich.

Wie kann man Kopfzeilen und Fußzeilen in C# zu einem PDF-Dokument hinzufügen?

IronPDF ermöglicht es Ihnen, Kopfzeilen und Fußzeilen einfach mit Methoden wie AddTextHeader und AddTextFooter zu PDF-Dokumenten hinzuzufügen.

Welche Lizenzierungsoptionen gibt es für Apitron PDF Kit?

Apitron PDF Kit bietet einen dreimonatigen Evaluierungszeitraum und eine Community-Lizenz für nicht-kommerzielle Projekte an. Für die kommerzielle Nutzung müssen Sie sich direkt für Angebote an sie wenden.

Welche PDF-Bibliothek lässt sich für die .NET-Entwicklung einfacher verwenden?

IronPDF ist im Allgemeinen einfacher für die .NET-Entwicklung zu verwenden, da es eine unkomplizierte API bietet und weniger Codezeilen für komplexe Aufgaben erfordert als das Apitron PDF Kit.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen