Diese Seite kann automatisch übersetzten Text enthalten.
Erstellen Sie PDF-Dokumente in C# und VB.NET
Müssen Sie als .NET-Entwickler PDF-Berichte, Rechnungen, Quittungen oder andere Dokumente erstellen? Verwenden Sie die Docotic.Pdf-Bibliothek, um PDF-Dokumente in Ihren .NET Core-, .NET Standard- oder .NET Framework-Projekten zu generieren. Sie können dies einfach und ohne Kenntnisse über das PDF-Format tun.
.NET-API für die PDF-Generierung
Docotic.Pdf ist die zu 100 % verwaltete Codebibliothek ohne externe Abhängigkeiten. Sie können damit PDF-Dokumente in Windows-, Linux-, Amazon- und Azure-Cloud-Umgebungen erstellen. Auch macOS, iOS, Android und andere Cloud-Umgebungen sind in Ordnung.
Die Bibliothek bietet verschiedene Möglichkeiten zur Generierung von PDF-Dokumenten. Erstens können Sie die High-Level-Layout-API verwenden, um Seitenkopf- und -fußzeilen, Tabellen und Absätze hinzuzufügen und Inhalte automatisch auf Seiten aufzuteilen. Die Layout-API ist im kostenlosen Docotic.Pdf.Layout-Add-on verfügbar.
Oder Sie können PDF-Dokumente basierend auf HTML-Vorlagen erstellen, indem Sie das HTML-zu-PDF-Add-on (ebenfalls kostenlos) verwenden. Weitere Einzelheiten finden Sie im Artikel HTML in PDF konvertieren.
Und Sie können PDF-Dokumente mithilfe der Kernbibliotheks-API erstellen. Es unterstützt alle PDF-Inhalte – Text, Bilder, Vektorgrafiken, Formulare, Annotationen, Lesezeichen, Ebenen und Andere. Die Kern-API unterstützt jedoch keine übergeordneten Layoutkomponenten wie Überschriften, Tabellen und Abschnitte. Bei der Kernbibliothek müssen Sie den Inhalt selbst messen und auf die PDF-Seiten aufteilen.
9.5.17615-dev 9.5.17615-dev 9.5.17615-dev14,813 bestanden NuGet-Downloads insgesamt 4,924,084
Sie können Add-ons auch zusammen mit der Kernbibliothek verwenden. Generieren Sie beispielsweise das PDF-Dokument mithilfe der Layout-API und fügen Sie dann weitere Inhalte mit der Kernbibliothek hinzu. Beachten Sie, dass das Layout-Add-on .NET Standard 2.1, .NET Core, .NET 5 und neuere Frameworks unterstützt. Die Kernbibliothek und das HTML-zu-PDF-Add-on unterstützen .NET Standard 2.0, .NET 4.7.2+, .NET Core, .NET 5 und höher.
Docotic.Pdf-Add-Ons sind auf NuGet verfügbar und in der Zip-Datei mit Binärdateien der Bibliothek enthalten. Holen Sie sich die Bibliothek, die Add-Ons und einen kostenlosen zeitlich begrenzten Lizenzschlüssel auf der Laden Sie die C# .NET PDF-Bibliothek herunter-Seite.
Erstellen Sie PDF-Dokumente mit der Layout-API
Dieses C#-Beispiel zeigt, wie Sie mithilfe der Layout-API ein PDF-Dokument in C# generieren:
PdfDocumentBuilder
.Create()
.Generate("long-text.pdf", doc => doc.Pages(page =>
{
string text = File.ReadAllText(@"C# in Depth, Fourth Edition.txt");
page.Content().Text(text);
page.Footer().AlignCenter().Text(t => t.CurrentPageNumber());
}));
Der Code konvertiert eine Textdatei in ein PDF. Es teilt langen Text in Seiten auf und zeichnet auch Seitenzahlen in den Fußzeilenbereich ein. Sie müssen weder die Texthöhe berechnen noch die Seiten zählen – die Bibliothek übernimmt diese Routineaufgaben.
Die Layout-API ist eine Fluent-API. Die meisten Aufrufe können miteinander verkettet werden, sodass Sie kompakteren Code schreiben können als mit „deklarativen“ Frameworks. Sehen wir uns die API genauer an.
Legen Sie die Eigenschaften eines PDF-Dokuments fest
Die PDF-Generierung beginnt mit der PdfDocumentBuilder-Klasse. Es ermöglicht Ihnen, Eigenschaften eines generierten PDF-Dokuments festzulegen. Sie können beispielsweise Metadaten, Verschlüsselung und PDF-Version festlegen oder eine schnelle Webansicht aktivieren. Hier ist das grundlegende C#-Beispiel:
PdfDocumentBuilder
.Create()
.Encryption(new PdfStandardEncryptionHandler("owner", "user"))
.Info(info =>
{
info.Author = "Docotic.Pdf library";
info.Title = "How to create PDF in .NET";
info.Keywords = "C#, VB.NET";
})
.Version(PdfVersion.Pdf16)
.Generate("result.pdf", doc => doc.Pages(_ => {}));
Dieses Beispiel erstellt ein leeres, passwortgeschütztes PDF-Dokument mit benutzerdefinierten Metadaten und speichert es in einer Datei. Sie können das Dokument auch in einem Stream speichern. Verwenden Sie dazu einfach die PdfDocumentBuilder.Generate(Stream, ..)-Überladung.
Wenn Sie einen PdfDocumentBuilder
einrichten, ist es an der Zeit, das PDF-Dokument mit Inhalt zu
füllen. Die Layout-API stellt ein Document-Objekt zum
Registrieren allgemeiner Ressourcen (Typografie, Bilder) und zum Definieren von PDF-Seiteninhalten
bereit. Sie können ein Document
im zweiten Argument der PdfDocumentBuilder.Generate
-Methoden
konfigurieren. Erfahren Sie, wie Sie PDF-Seiten einrichten.
Definieren Sie das PDF-Seitenlayout
Dieses C#-Beispiel zeigt, wie Sie ein PDF-Dokument mit A3-Seiten im Querformat erstellen:
PdfDocumentBuilder.Create().Generate("pages.pdf", doc =>
{
doc.Pages((PageLayout page) =>
{
page.Size(PdfPaperSize.A3, PdfPaperOrientation.Landscape)
.MarginVertical(50)
.MarginHorizontal(40);
page.Header().PaddingBottom(30).AlignRight().Text("Hello PDF");
page.Content().Column(c =>
{
c.Item().Text("Page 1");
c.Item().PageBreak();
c.Item().Text("Page 2");
});
page.Footer().Text(t => t.CurrentPageNumber());
});
});
Die Document.Pages()-Methode definiert das Layout für eine oder mehrere Seiten. Zunächst legt der Beispielcode allgemeine Einstellungen für alle Seiten fest – Größe, Ausrichtung, Ränder. Sie können auch die Inhaltsrichtung, den Standardtextstil oder die Hintergrundfarbe angeben.
Anschließend generiert das Beispiel das Seitenlayout und den Inhalt. Die PageLayout-Klasse stellt Methoden zum Platzieren von Seiteninhalten in den folgenden Slots bereit:
Background()
– eine Hintergrundebene, die von anderen Inhalten abgedeckt wirdHeader()
– ein gemeinsamer Header für alle SeitenContent()
– ein HauptseiteninhaltFooter()
– eine gemeinsame Fußzeile für alle SeitenForeground()
– eine Vordergrundebene, die andere Inhalte verdeckt
Die Layout-Engine generiert Seiten abhängig vom Inhalt, der dem PageLayout.Content()
-Slot
hinzugefügt wird. Andere Slots werden auf jeder Seite wiederholt. Sie können Inhalt zu Slots
hinzufügen, indem Sie die LayoutContainer-Klasse
verwenden. Dies ist ein wichtiger Baustein der Layout-API, mit dem Sie beliebige Layouts, Tabellen,
Texte oder Bilder generieren können.
Das vorherige Beispiel verwendet die Methode LayoutContainer.Column
, die Inhalte vertikal
stapelt. Diese Spalte enthält drei Elemente: den Textblock für die erste Seite, den expliziten
Seitenumbruch und den Textblock für die zweite Seite.
Es gibt auch die Methode LayoutContainer.Row
. Sehen Sie sich an, wie man mehrspaltige
PDF-Dokumente erstellt, indem man Zeilen und Spalten zusammen verwendet.
Sie können verschiedene Seitenlayouts in einem PDF-Dokument mischen. Rufen Sie einfach die Methode
Document.Pages
mehrmals auf. Ein Beispiel finden Sie im Beispiel
PDF-Seitenlayouteinstellungen auf GitHub.
Fügen Sie Text zu PDF-Dokumenten hinzu
Text ist ein wichtiger Bestandteil von PDF-Dokumenten. Sie können
LayoutContainer.Text-Methoden verwenden, um Text
hinzuzufügen. Zuvor haben Sie Anwendungsfälle für die Überladung LayoutContainer.Text(string)
gesehen. Schauen wir uns eine weitere Überladung dieser Methode an:
PdfDocumentBuilder.Create().Generate("text.pdf", doc =>
{
doc.Pages(p => p.Content().Text(text =>
{
text.Span("VB.NET").Style(t => t.Strong);
text.Span(" is a multi-paradigm, object-oriented programming language, implemented on.NET, Mono, and the ");
text.Hyperlink(".NET Framework", new Uri("https://dotnet.microsoft.com/en-us/download/dotnet-framework"));
text.Line(".");
text.Line("Microsoft launched VB.NET in 2002 as the successor to its original Visual Basic language.");
}));
});
Die TextContainer-Klasse bietet Methoden zum Zeichnen von
Text, Links und Seitenzahlen. Verwenden Sie die Methoden Span
und Line
, um einer aktuellen
Zeile Text hinzuzufügen. Die Methode Line
vervollständigt zusätzlich die aktuelle Zeile. Dieses
Beispiel verwendet auch die Methode Hyperlink
, die einen externen Ressourcenlink hinzufügt.
Hier ist ein weiteres Beispiel, das zeigt, wie dynamische Seitenzahlen in einer Seitenfußzeile verwendet werden:
PdfDocumentBuilder.Create().Generate("footer.pdf", doc =>
{
doc.Pages(p => p.Footer().AlignRight().Text(text =>
{
text.Style(t => t.Parent.FontColor(new PdfRgbColor(255, 0, 0)));
text.CurrentPageNumber();
text.Span(" / ");
text.PageCount();
}));
});
Die Layout-API bietet eine Möglichkeit, Seitenzahlen zu formatieren. Sie können beispielsweise hexadezimale Seitenzahlen wie folgt zeichnen:
text.CurrentPageNumber().Format(p => "0x" + p?.ToString("x2"));
Das Beispiel zum Hinzufügen von Kopf- und Fußzeilen zu PDF-Dokumenten in C# und VB.NET zeigt, wie Seitenzahlen als römische Ziffern formatiert werden.
Möglicherweise sehen Sie, dass die obigen Beispiele die Methode Style
verwenden. Lassen Sie uns
das Konzept der Textstile genauer untersuchen.
Typografie
Mit Textstilen können Sie das Erscheinungsbild des Textes anpassen. Die
TextStyle-Klasse bietet Methoden zum Ändern von Schriftgröße,
Buchstabenabstand, Farben und anderen Texteigenschaften. TextStyle
-Objekte sind unveränderlich,
sodass jeder Methodenaufruf einen neuen Textstil erzeugt. Sie können den Textstil auf verschiedenen
Layoutebenen anwenden:
PdfDocumentBuilder.Create().Generate("text-styles.pdf", doc =>
{
doc.Pages(page =>
{
page.TextStyle(TextStyle.Parent.FontSize(30));
page.Content()
.TextStyle(TextStyle.Parent.FontColor(new PdfRgbColor(0, 0, 255)))
.Text(t =>
{
t.Style(TextStyle.Parent.Underline());
t.Span("Hello PDF").Style(TextStyle.Parent.DirectionRightToLeft());
});
});
});
Die Eigenschaft TextStyle.Parent
gibt einen speziellen Stil zurück, bei dem alle
Texteigenschaften undefiniert sind. Das vorherige Beispiel zeichnet "Hello PDF" als blaue,
unterstrichene Schriftgröße von 30 Punkt in umgekehrter Reihenfolge (von rechts nach links). Sehen
Sie sich das Beispiel Textdarstellung in PDF-Dokumenten anpassen an, um ein
weiteres Beispiel für die Vererbung von Textstilen zu finden.
Die Klasse TextStyle
unterstützt das Anpassen aller Elemente außer einer zugehörigen Schriftart.
Verwenden Sie die Methoden Document.TextStyleWithFont
, wenn Sie eine benutzerdefinierte
Schriftart für Ihren Textstil angeben müssen. Dieses C#-Beispiel zeigt, wie eine Systemschriftart
verwendet wird:
PdfDocumentBuilder.Create().Generate("fonts.pdf", doc =>
{
doc.Pages(page =>
{
TextStyle style = doc.TextStyleWithFont(SystemFont.Family("Arial").Bold());
page.Content().Text("Bold text").Style(style);
});
});
Die Layout-Engine entfernt standardmäßig nicht verwendete Schriftartenglyphen. Aus diesem Grund können generierte Dokumente selbst bei großen Schriftarten eine geringe Größe aufweisen. Sie können auch einen benutzerdefinierten Schriftartenlader, Ersatzschriftarten und einen Handler für fehlende Glyphen angeben. Weitere Einzelheiten finden Sie im Beispiel Verschiedene Schriftarten in PDF-Dokumenten verwenden.
Die Layout-API stellt eine Sammlung vordefinierter Stile bereit. Sie können sie über die Typography-Klasse verwenden oder anpassen:
PdfDocumentBuilder.Create().Generate("typography.pdf", doc =>
{
doc.Typography(t =>
{
var baseFont = new FileInfo("arial.ttf");
t.Document = doc.TextStyleWithFont(baseFont);
t.Header = t.Parent.FontSize(20).FontColor(new PdfGrayColor(20));
t.Footer = t.Footnote;
});
doc.Pages(page =>
{
page.Header().AlignCenter().Text("Header");
page.Content().Text(t =>
{
t.Line("Title").Style(t => t.Title);
t.Line("Heading 1").Style(t => t.Heading1);
t.Line("Regular");
});
page.Footer().Height(20).AlignCenter().Text(t => t.CurrentPageNumber());
});
});
Mit der Klasse Typography
müssen Sie keine Variablen verwenden, um Textstilreferenzen
beizubehalten. Sie registrieren erforderliche Stile mithilfe der
Document.Typography-Methoden und laden sie später
aus dem Objekt Typography
. Sehen Sie sich im Beispiel Typografie an, wie
Sie vordefinierte und benutzerdefinierte Stile verwenden.
Bilder
Bilder sind neben Text und Schriftarten ein weiterer wesentlicher Bestandteil von PDF-Dokumenten. Mit der Layout-API können Sie Bilder wie folgt hinzufügen:
PdfDocumentBuilder.Create().Generate("image.pdf", doc =>
{
var imageFile = new FileInfo("image.jpg");
Image image = doc.Image(imageFile);
doc.Pages(page => page.Content().MaxWidth(200).Image(image));
});
Tische
Mit der Layout-API können Sie Tabellen generieren. Dieses C#-Beispiel zeigt, wie man eine Tabelle zu einem PDF-Dokument hinzufügt:
PdfDocumentBuilder.Create().Generate("table.pdf", doc =>
{
doc.Pages(page =>
{
page.Content().Table(t =>
{
t.Columns(c =>
{
c.ConstantColumn(200);
c.RelativeColumn(1);
});
t.Header(h =>
{
h.Cell().Text("Product");
h.Cell().Text("Features");
});
t.Cell().Text("Docotic.Pdf");
t.Cell().Text("Extract text, PDF to images, compress PDF");
t.Cell().Text("Docotic.Pdf.Layout");
t.Cell().Text("Create PDF");
});
});
});
Sie können Tabellen beliebiger Komplexität erstellen. Dieses Beispiel zeigt, wie Zellränder, Hintergründe und Bereiche verwendet werden.
Interne Links
PDF-Dokumente unterstützen interne Links, mit denen Sie Lesezeichen oder Inhaltsverzeichnisse erstellen können. Dieses einfache C#-Beispiel zeigt, wie Sie mithilfe der Layout-API einen Link zu einem Dokumentabschnitt hinzufügen:
PdfDocumentBuilder.Create().Generate("link.pdf", doc =>
{
doc.Pages(page =>
{
page.Content().Column(c =>
{
const string SectionName = "Chapter 1";
c.Item().SectionLink(SectionName).Text("Link");
c.Item().PageBreak();
c.Item().Section(SectionName).Text("Target");
});
});
});
Sie können auch das Beispiel Inhaltsverzeichnis zu PDF-Dokumenten hinzufügen von GitHub herunterladen und ausprobieren.
Komplexe Layouts
Sie können verschiedene Layoutkomponenten kombinieren, um komplexe PDF-Dokumente zu erstellen. Laden Sie das Beispiel PDF-Dokumente mit komplexem Layout generieren von GitHub herunter und probieren Sie es aus.
Es ist möglich, die Layout-API zu erweitern. Mit den Methoden LayoutContainer.Component
und
LayoutContainer.Container
können Sie benutzerdefinierte Komponenten wiederverwenden. Das Beispiel
Layout-Komponenten zeigt, wie eine benutzerdefinierte Komponente mithilfe
der Schnittstelle ILayoutComponent
implementiert wird.
Abschluss
Docotic.Pdf-Bibliothek bietet verschiedene Möglichkeiten zum Erstellen von PDF-Dokumenten in C# und VB.NET. Sie können PDF-Dokumente von Grund auf mit oder ohne Verwendung von dem Layout-Add-on erstellen. Oder Sie können PDFs aus HTML erstellen, indem Sie das HTML-zu-PDF-Add-on verwenden.
Kontaktieren Sie uns, wenn Sie Fragen zur PDF-Generierung haben.