PRODUKT-VERGLEICHE

Ein Vergleich zwischen IronPDF und Apitron PDF Kit

Veröffentlicht 11. Dezember 2022
Teilen Sie:

In C# kann die Arbeit mit PDF-Dateien eine Herausforderung für Entwickler darstellen. Bei der Erstellung von Inhalten für solche Dateien sind viele Faktoren zu berücksichtigen, und noch mehr bei der Konvertierung von Inhalten aus anderen Formaten in das PDF-Format. Die Automatisierung ist heute der Schlüssel zu Softwareentwicklungsprozessen. Diese Probleme wurden nun durch die Entwicklung von Bibliotheken gelöst, die das Lesen, Schreiben, Erstellen und Ändern von PDF-Dokumenten sowie die Bearbeitung ihrer Attribute und die Konvertierung aus anderen Formaten ermöglichen.

In diesem Blogpost 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 Funktionen zur PDF-Bearbeitung für .NET und .NET Core bereitstellen. Sie können beide für die Konvertierung und Bearbeitung von Dokumentenfeldern verwendet werden. Beide können auch Lesezeichen erstellen. Die nächste Frage ist, welche C# PDF .NET Bibliothek für unsere .NET Projekte am besten geeignet ist. Dieser Vergleichsartikel hilft Ihnen bei der Entscheidung zwischen diesen beiden PDF-Bibliotheken.

    Werfen wir zunächst einen Blick darauf, was die beiden Bibliotheken zu bieten haben, und gehen wir dann zum eigentlichen Vergleich über.

Die Apitron PDF Kit Library und ihre Funktionen

Apitron PDF Kit ist eine .NET-Komponente, die es Ihnen ermöglicht, PDF-Dateien auf beliebige Weise zu bearbeiten oder zu konvertieren. Sie können Bilder, Zeichnungen und Texte hinzufügen, Dokumente unterschreiben 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 für verschiedene Plattformen zu erstellen.

Mit diesem PDF SDK können Sie:

  • Grafiken extrahieren, ändern und hinzufügen (text, Bilder, Zeichnungen)
  • PDF-Dokumente teilen oder zusammenführen
  • Ausfüllen oder Erstellen von passwortgeschützten PDF-Formularen, FDF-Unterstützung
  • Erstellen von mehrschichtigen PDF-Dokumenten mit optionalen Inhaltsgruppen ( OCG )
  • Felder im Dokument hinzufügen oder entfernen
  • Verwenden Sie rechts-nach-links oder bidirektionalen Text, um Seiteninhalte zu erstellen
  • Untersuchen von Ressourcen in einem Dokument - definierte Schriftarten, eingebettete Dateien
  • Digitales Signieren und Prüfen vorhandener Signaturen auf PDF-Dokumenten

Die wichtigsten Merkmale von IronPDF

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

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

IronPDF kann mit HTML5, CSS, JS und Bildern erstellt werden. Eine PDF-Datei kann leicht bearbeitet, gestempelt und mit Kopf- und Fußzeilen versehen werden. Auch das Lesen von PDF-Texten und das Extrahieren von Grafiken ist damit ein Kinderspiel.

Zu den herausragenden Merkmalen von IronPDF gehören:

  • Erstellung von PDF-Dokumenten mit HTML4/5, CSS und JavaScript
  • Laden von URLs mit benutzerdefinierten Netzwerkanmeldeinformationen, Benutzeragenten, Proxys, Cookies, HTTP-Headern und Formularvariablen (aktivierung der Anmeldung hinter HTML-Anmeldeformularen)
  • Lesen und Ausfüllen von PDF-Formularfeldern
  • Extraktion von Text und Grafiken aus PDFs
  • Aktualisieren von PDF-Seiten mit neuen HTML-Inhalten
  • Erstellung von textbasierten oder HTML-basierten Kopf- und Fußzeilen
  • Zusammenführung und Trennung des Inhalts von PDF-Dokumenten
  • Umwandlung von ASP.NET-Webformularen in druckbare PDFs
  • Drucken von PDF-Dateien ohne Adobe Acrobat-Software

    IronPDF ist für fast alle Betriebssysteme 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-Konformität für universelle Kompatibilität
  • Azure, AWS, Docker, Linux, Windows

    Der Rest des Artikels lautet wie folgt:

  1. IronPDF-Installation

  2. Apitron PDF-Kit Installation

  3. Ein PDF-Dokument erstellen

  4. Kopf- und Fußzeilen in PDF erstellen

  5. Digitales Signieren von PDF

  6. Preisgestaltung und Lizenzierung

  7. Schlussfolgerung

1. IronPDF-Installation

Es gibt vier Möglichkeiten, die IronPDF-Bibliothek herunterzuladen und zu installieren. Diese sind wie folgt:

  1. NuGet-Paketmanager verwenden

  2. Die Eingabeaufforderung für Entwickler

  3. Laden Sie das NuGet-Paket direkt herunter

  4. Die IronPDF .DLL-Bibliothek herunterladen

1.1. Verwendung von NuGet Package Manager

Um IronPDF zu installieren, klicken Sie einfach mit der rechten Maustaste auf Ihr Projekt im Solution Explorer. Dadurch wird der NuGet Package Manager geöffnet.

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

Nach der Auswahl suchen Sie nach dem IronPDF-Paket und installieren es, wie in der folgenden Abbildung gezeigt.

Ein Vergleich von IronPDF mit Apitron PDF SDK .NET - Abbildung 2: Installation der IronPDF-Bibliothek mit dem NuGet-Paketmanager

Installation der IronPDF-Bibliothek mit dem NuGet-Paketmanager

1.2. Verwendung der Eingabeaufforderung für Entwickler

Sie können IronPDF auch über die Eingabeaufforderung für Entwickler installieren.

  • Öffnen Sie die Entwickler-Eingabeaufforderung --- normalerweise im Ordner Visual Studio zu finden
  • Geben Sie den folgenden Befehl ein:
Install-Package IronPdf
  • Eingabe drücken
  • Dadurch wird das Paket heruntergeladen und installiert
  • Laden Sie Ihr Projekt neu und verwenden Sie es

1.3. Direktes Herunterladen des NuGet-Pakets

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

  • Navigieren Sie zu https://www.nuget.org/packages/IronPdf/
  • Download-Paket auswählen
  • Doppelklicken Sie auf das heruntergeladene Paket
  • Das Paket wird installiert
  • Laden Sie Ihr Visual Studio-Projekt neu und verwenden Sie es

    IronPDF wurde heruntergeladen und ist nun einsatzbereit. Zuvor sollten wir jedoch die Apitron PDF-Bibliothek installieren.

2. Apitron PDF-Kit Installation

Für .NET Core Anwendungen können wir Apitron mit dem NuGet Package Manager installieren, oder wir können Apitron herunterladen und installieren von NuGet direkt auf der Website.

  • Ö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.
    Ein Vergleich von IronPDF mit Apitron PDF SDK .NET - Abbildung 3: Apitron PDF Kit Suche

    Apitron PDF Kit Suche

    Sie können auch die NuGet Package Manager Console verwenden, um Apitron zu installieren. Folgen Sie dem Schritt "Use Developer Command Prompt", wie in IronPDF beschrieben, 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
VB   C#

Kommen wir nun zum Vergleich zwischen IronPDF und Apitron PDF.

3. PDF-Dokument erstellen

3.1. Verwendung von IronPDF

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

Vorhandene URL in PDF umwandeln

IronPDF macht es einfach, jede URL in PDF zu konvertieren. Der folgende Code hilft bei der Umwandlung von URL in PDF.

IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
Dim Renderer As New IronPdf.ChromePdfRenderer()
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Pdf.SaveAs("url.pdf")
VB   C#

HTML-Eingabezeichenfolge in PDF

Der folgende Code erklärt, wie man ein PDF-Dokument aus einer HTML-Zeichenkette rendert. Sie können nur HTML verwenden, oder es mit CSS, Bildern und JavaScript kombinieren.

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

// Load external HTML assets: images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set 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();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets: images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set 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()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")
PDF.SaveAs("pixel-perfect.pdf")

' Load external HTML assets: images, CSS and JavaScript.
' An optional BasePath 'C:\site\assets\' is set 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")
VB   C#

Die Ausgabe lautet wie folgt:

Ein Vergleich von IronPDF mit Apitron PDF SDK .NET - Abbildung 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 PDF zu konvertieren. Es ermöglicht die Umwandlung von PDF in HTML. Es wandelt jedoch auch XML-Dateien in PDF-Dateien um. Die verwendete XML-Datei lautet:

<?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 für die Konvertierung dieser XML-Vorlage in PDF lautet wie folgt:

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);
}
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);
}
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
VB   C#

Die Ausgabe lautet wie folgt:

Ein Vergleich von IronPDF mit Apitron PDF SDK .NET - Abbildung 5: Apitron PDF-Dokument

Apitron PDF-Dokument

Wenn wir die Ausgabe von IronPDF und Apitron vergleichen, können wir deutlich sehen, dass IronPDF beeindruckende Dokumente mit HTML-Rendering und sogar ohne Skalierung der Bildgröße erstellt. Andererseits liefert Apitron eine ähnliche Ausgabe wie IronPDF, aber nur, wenn die XML-Datei registrierte Stile hat.

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

4.1. Verwendung von IronPDF

Das Hinzufügen von Kopf- und Fußzeilen ist mit IronPDF recht einfach. IronPDF ermöglicht das Hinzufügen von Seitenzahlen und Seitenumbrüchen, das Anhängen eines Deckblatts, eines Seitenrands usw.

Der Code für das Hinzufügen von Kopf- und Fußzeilen ist unten aufgeführt:

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")
VB   C#

Die Ausgabe lautet 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

Apitron PDF Kit erstellt PDFs, indem es Inhalte in einem XML-Strukturformat in ein PDF konvertiert. In Apitron PDF Fit können Kopf- und Fußzeilen mit den Eigenschaften PageHeader und PageFooter hinzugefügt werden. Der Code hierfür lautet wie folgt:

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

// create 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 doc's resources first
ResourceManager resourceManager = new ResourceManager();
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo","../../data/logo.png"));

// create 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 doc's resources first
Dim resourceManager As New ResourceManager()
resourceManager.RegisterResource(New Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo","../../data/logo.png"))

' create 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")
VB   C#

Die Ausgabe lautet 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. Verwendung von IronPDF

Eine der wichtigsten PDF-Verarbeitungsfunktionen ist die Möglichkeit, ein PDF-Dokument digital zu signieren. IronPDF bietet alle dafür notwendigen Werkzeuge.

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")
VB   C#

5.2 Verwendung von Apitron PDF Kit

Das Stempeln einer Signatur auf eine PDF-Datei mit Apitron PDF Kit ist ein langwieriger und 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
VB   C#

Die Ausgabe ist bei den Bibliotheken ziemlich gleich. Sie sehen also, dass IronPDF einfacher und bequemer für die Bearbeitung von PDF-Inhalten ist. Die ausgegebene PDF-Datei ist mit dem Zertifikat und der Unterschrift signiert, die aufgedruckt sind.

6. Preisgestaltung und Lizenzierung

IronPDF Preisgestaltung und Lizenzierung

IronPDF ist eine C#-Bibliothek, die für die Entwicklung kostenlos ist und jederzeit für die kommerzielle Nutzung lizenziert werden kann. Projektlizenzen für einzelne Entwickler, Agenturen und multinationale Organisationen sowie SaaS- und OEM-Weiterverteilung sind alle zugänglich. Alle Lizenzen bieten eine 30-tägige Geld-zurück-Garantie, ein Jahr Support und Upgrades, Gültigkeit für Entwicklung/Taging/Produktion und eine unbefristete Lizenz (einmaliger Kauf).

Das Lite-Paket ist für $749 ohne wiederkehrende Kosten erhältlich. Weitere Einzelheiten und Unterstützung bei der Auswahl der besten Lizenz finden Sie auf der Website produktlizenzierungsseite.

Ein Vergleich von IronPDF mit Apitron PDF SDK .NET - Abbildung 8: IronPDF-Lizenzierung

IronPDF-Lizenzierung

Apitron PDF Kit Preise und Lizenzierung

Derzeit gibt es zwei Lizenzierungssysteme - Modern und Legacy. Wenn Sie bereits eine Lizenz besitzen, bleibt das alte Lizenzschema für Sie aktiv, bis Ihre Lizenz abläuft. Danach müssen Sie sich für die Umstellung an den Kundendienst wenden. Die moderne Zulassungsregelung gilt für Sie nur, wenn Sie ein neuer Kunde sind.

Im Rahmen des modernen Systems gibt es drei Zulassungsstufen:

  • Evaluierung - dreimonatige Testphase zur Nutzung eines voll funktionsfähigen Produkts. Laden Sie einfach das Paket von NuGet herunter und beginnen Sie mit der Entwicklung.
  • Community - Nutzen Sie das voll funktionsfähige Produkt ohne jegliche Gebühren in Ihren nicht-kommerziellen Projekten. Eine Genehmigung ist erforderlich.
  • Gewerblich - jeder nicht oben beschriebene Anwendungsfall. Der Preis richtet sich nach dem Nutzungsverhalten.

    Weitere Informationen zum Kauf erhalten Sie unter kontakt mit dem Apitron-Vertriebsmitarbeiter.

Schlussfolgerung

Die IronPDF-Bibliothek erstellt pixelgenaue 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 erhalten.

Apitron ermöglicht die Erstellung von PDF-Dokumenten mit Hilfe einer festen Layout-API, die zu 100% mit der PDF-Spezifikation kompatibel ist. Als stilgesteuerte Methode zur Inhaltserstellung, die HTML und CSS ähnelt, bietet Ihnen diese API mit festem Layout die Möglichkeit, in wenigen Minuten beeindruckende Berichte, Rechnungen, Kataloge und vieles mehr zu erstellen. Es unterstützt auch die Erstellung von XML-Vorlagen.

Die Lizenzpreise für Apitron PDF sind auf der Website nicht verfügbar. Sie müssen sich mit dem Support in Verbindung setzen und einen Kostenvoranschlag auf der Grundlage Ihrer Nutzung einholen. Auf der anderen Seite hat IronPDF ein sehr klares Lizenzierungspaket auf seiner Website. Dadurch hebt sich IronPDF von seinen Mitbewerbern ab und ermöglicht es den Nutzern, je nach ihren Bedürfnissen eine kluge Wahl zu treffen.

Mit IronPDF können Sie mit PDF-Dateien einfacher arbeiten als mit Apitron PDF. IronPDF ermöglicht es seinen Nutzern, weniger Codezeilen für anspruchsvolle PDF-Aufgaben zu schreiben. IronPDF bietet mehrere Methoden zur Erstellung von PDFs aus verschiedenen Dateitypen, während Apitron nur XML-Dokumente in PDF-Dokumente umwandeln kann. Im Vergleich zu Apitron wird in IronPDF eine perfekte Ausgabe ohne zusätzliche technische Optionen erreicht.

Alle Kunden von Iron Software haben die Möglichkeit, alle fünf Produkte des Unternehmens zum Preis von zwei Produkten zu erwerben. Versuchen Sie die kostenlos, 30 Tage Probezeit um seine volle Funktionalität zu testen. Kaufen Sie die komplette Produktpalette von Iron Software hier.

< PREVIOUS
Telerik HTML to PDF Generator im Vergleich zu IronPDF
NÄCHSTES >
Ein Vergleich zwischen IronPDF und GroupDocs

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >