Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
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:
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.
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:
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:
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:
Azure, AWS, Docker, Linux, Windows
Der Rest des Artikels lautet wie folgt:
IronPDF-Installation
Apitron PDF-Kit Installation
Ein PDF-Dokument erstellen
Kopf- und Fußzeilen in PDF erstellen
Digitales Signieren von PDF
Preisgestaltung und Lizenzierung
Es gibt vier Möglichkeiten, die IronPDF-Bibliothek herunterzuladen und zu installieren. Diese sind wie folgt:
NuGet-Paketmanager verwenden
Die Eingabeaufforderung für Entwickler
Laden Sie das NuGet-Paket direkt herunter
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.
Nach der Auswahl suchen Sie nach dem IronPDF-Paket und installieren es, wie in der folgenden Abbildung gezeigt.
Sie können IronPDF auch über die Eingabeaufforderung für Entwickler installieren.
Install-Package IronPdf
IronPDF kann auch installiert werden, indem Sie die NuGet-Website besuchen und das Paket herunterladen. Die Schritte sind:
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.
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.
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
Kommen wir nun zum Vergleich zwischen IronPDF und Apitron PDF.
IronPDF bietet mehrere Methoden zur Erstellung von PDFs. Schauen wir uns zwei wichtige davon an.
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")
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")
Die Ausgabe lautet wie folgt:
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>
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
Die Ausgabe lautet wie folgt:
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.
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")
Die Ausgabe lautet wie folgt:
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 ",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 ",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 ",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")
Die Ausgabe lautet wie folgt:
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")
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
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.
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.
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:
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.
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.
9 .NET API-Produkte für Ihre Bürodokumente