Diese Seite kann automatisch übersetzten Text enthalten.
PDF in C# bearbeiten
Verwenden Sie Docotic.Pdf, um Ihre PDF-Dokumente zu ändern. Es ist die PDF-Bearbeitungsbibliothek für C# und VB.NET, die leistungsstarke Funktionen mit einer intuitiven API kombiniert.
Docotic.Pdf bietet zahlreiche Möglichkeiten zum Bearbeiten von PDF-Dokumenten. Hier sind einige der wichtigsten Funktionen für die PDF-Bearbeitung:
- Mehrere PDFs zu einem zusammenführen oder ein einzelnes PDF in mehrere Dateien aufteilen.
- PDF-Dateigröße reduzieren.
- Seiten neu anordnen, löschen, drehen oder extrahieren.
- PDF-Metadaten lesen, ändern oder löschen.
- PDF mit digitalen Signaturen signieren.
- Dokumente verschlüsseln oder Kennwörter aus einem PDF entfernen.
- Anmerkungen und Anhänge hinzufügen, bearbeiten oder entfernen.
- AcroForms ausfüllen sowie Formularsteuerelemente hinzufügen oder entfernen.
- Formularfelder und Anmerkungen glätten, damit sie Teil des PDF-Inhalts werden.
- Text innerhalb des PDFs hinzufügen, löschen oder ersetzen.
- Bilder einfügen, ersetzen und skalieren.
- Wasserzeichen und Hintergründe hinzufügen.
- Gescannte Dokumente in bearbeitbaren und durchsuchbaren Text umwandeln.
In den nächsten Abschnitten beschreibe ich die PDF-Bearbeitungsfunktionen ausführlicher. Die Abschnitte enthalten außerdem Codeausschnitte und Links zu relevanten Ressourcen.
PDFs zusammenführen und teilen
Dieser Abschnitt behandelt zwei Funktionen mit entgegengesetzten Zielen.

PDF zusammenführen
Wenn Sie PDF-Dateien zusammenführen, erstellen Sie ein einzelnes PDF-Dokument. Das zusammengeführte PDF enthält in der Regel zusammengehörige Informationen aus mehreren vorhandenen PDF-Dateien.
Hier ist ein Codeausschnitt, der zeigt, wie man PDF-Dateien mit Docotic.Pdf zusammenführt.
using var pdf = new PdfDocument("first.pdf");
pdf.Append("second.pdf");
pdf.Save("merged.pdf");
Der Code ist sehr einfach, weil er den grundlegendsten Fall zeigt. Wir haben einen Artikel, der komplexere Zusammenführungsfälle beschreibt. Er zeigt zum Beispiel, wie verschlüsselte Dokumente zusammengeführt werden.
PDF teilen
Teilen bedeutet, ausgewählte Seiten aus dem ursprünglichen PDF zu extrahieren, um eine oder mehrere neue PDF-Dateien zu erstellen. Dieser Prozess ist nützlich, wenn Sie nur einen Teil eines Dokuments weitergeben möchten.
Der folgende Codeausschnitt zeigt, wie aus jeder Seite eines PDFs ein neues Dokument erstellt wird.
using var pdf = new PdfDocument("compound.pdf");
for (int i = 0; i < pdf.PageCount; ++i)
{
using PdfDocument copy = pdf.CopyPages(i, 1);
// Hilft, die Dateigröße zu reduzieren, wenn die kopierten Seiten auf
// ungenutzte Ressourcen wie Schriftarten, Bilder oder Muster verweisen.
copy.RemoveUnusedResources();
copy.Save(i + ".pdf");
}
Lesen Sie im entsprechenden Artikel über weitere Ansätze zur Implementierung eines PDF-Splitters.
PDF-Komprimierung
Beim Komprimieren eines PDFs gibt es zwei Hauptansätze. Der erste besteht darin, nur Operationen anzuwenden, die den Inhalt der Datei nicht ändern, sondern nur ihre Form. Der zweite Ansatz umfasst auch Änderungen, die zu Detailverlusten oder Qualitätsverlusten des Dokuments zugunsten einer besseren Komprimierung führen können.
Verlustfreie PDF-Komprimierung
Standardmäßig speichert die Bibliothek PDF-Objekte so, dass sie weniger Bytes belegen. Dazu schließt sie ungenutzte Objekte aus, schreibt Objekte ohne Formatierung und verwendet, wo möglich, eine kürzere Form.
Um die Komprimierung weiter zu verbessern, erzeugt Docotic.Pdf in den Ausgabe-PDFs außerdem Objektstreams. Das ist eine weitere Form, Objekte mit der kompaktesten Darstellung zu schreiben. Die Objektstreams werden mit dem Flate-Algorithmus komprimiert.
Sie können beeinflussen, wie die Bibliothek Objekte speichert, indem Sie Speicheroptionen verwenden.
Einige Dokumente enthalten doppelte Schriftarten, Bilder, Farbprofile und andere Objekte. Das ist häufig bei inkrementell aktualisierten Dokumenten und bei Dateien der Fall, die durch Zusammenführen mehrerer Dokumente erstellt wurden. Das Deduplizieren dieser Objekte mit der Methode PdfDocument.ReplaceDuplicateObjects kann die Ausgabedateigröße drastisch verringern.
Seiten eines Dokuments können auf ungenutzte Ressourcen verweisen. Zum Beispiel auf Bilder, die zuvor auf der Seite sichtbar waren, es jetzt aber nicht mehr sind. Verwenden Sie die Methode PdfDocument.RemoveUnusedResources, um solche Ressourcen zu entfernen.
Alle diese PDF-Operationen reduzieren die Dateigröße ohne Qualitätsverlust.
Verlustbehaftete Transformationen
Bei Dateien mit Bildern ist eine der effektivsten Möglichkeiten, die PDF-Größe zu verringern, das Ändern des Komprimierungsschemas der Bilder. Wenn Sie zum Beispiel eine verlustbehaftete Komprimierung wie JPEG für die Bilder verwenden, wird die Dateigröße reduziert. Als Nebeneffekt können Komprimierungsartefakte und Detailverluste in den Bildern sichtbar werden.
Wenn die Bilder im PDF größer als nötig sind, können Sie sie skalieren. Das kann eine noch bessere Komprimierung ermöglichen. Eine weitere Option ist, Bilder in Schwarzweiß (Bitonal) umzuwandeln.
Sie können Formularfelder und Anmerkungen glätten, um Speicherplatz zu sparen. Das ist sinnvoll, wenn Sie bearbeitbare Anmerkungen und Formularfelder in Ihren Dokumenten nicht mehr benötigen.
Schriftarten können in Dokumenten viel Platz belegen. Mit der Methode PdfDocument.RemoveUnusedFontGlyphs können ungenutzte Glyphen aus Schriftarten entfernt werden, um die Ausgabedateigröße zu optimieren. Font-Subsetting ist eine andere Bezeichnung für diesen Prozess. Sie können Schriftart-Bytes sogar vollständig aus dem Dokument entfernen (Schriftart nicht einbetten). Das kann sinnvoll sein, wenn das Dokument Bytes einer verbreiteten Schriftart wie Arial enthält.
Andere Transformationen entfernen Informationen direkt aus Dokumenten. Sie können Metadaten, Strukturinformationen und private Anwendungsdaten entfernen. Diese Daten sind nicht sichtbar, aber entfernen Sie sie nur, wenn sie für die Benutzer Ihrer Dokumente nicht wichtig sind.
Weitere Details und einige Codebeispiele finden Sie im Artikel wie man die PDF-Dateigröße reduziert.
Seiten in PDF neu anordnen
Es gibt genug Gründe, die Reihenfolge von Seiten innerhalb eines PDFs zu ändern. Beispielsweise müssen Sie möglicherweise zusammengehörige Informationen gruppieren oder die Lesbarkeit des Dokuments verbessern, indem Sie einen logischen Dokumentfluss sicherstellen.

Neben der Möglichkeit, Seiten zusammenzuführen und zu teilen, bietet Docotic.Pdf einen umfangreichen Satz weiterer Methoden, um Seiten in PDF neu anzuordnen. Ich verwende C#-Codeausschnitte und die Docotic.Pdf-API, um zu zeigen, wie man PDF-Seiten organisiert.
Komplette Testprojekte zu den Beispielen dieses Abschnitts finden Sie in der Gruppe Seiten und Navigation der Beispielcodes. Ich verwende in den Ausschnitten ten-pages.pdf. Dies ist ein triviales Testdokument mit dem Titel Page N auf jeder Seite.
PDF-Seiten verschieben
Der folgende Ausschnitt zeigt, wie zusammenhängende Seitenbereiche verschoben werden. Der Code verschiebt die erste Hälfte der Seiten an das Ende des Dokuments.
using var pdf = new PdfDocument("ten-pages.pdf");
pdf.MovePages(0, 5, pdf.PageCount);
pdf.Save("continuous-move.pdf");
Es ist möglich, beliebige Seitensets zu verschieben. Der folgende Code verschiebt ungerade Seiten an das Ende des Dokuments.
using var pdf = new PdfDocument("ten-pages.pdf");
int[] indexes = [0, 2, 4, 6, 8];
pdf.MovePages(indexes, pdf.PageCount);
pdf.Save("arbitrary-move.pdf");
Um nur eine Seite zu verschieben, verwenden Sie die Methode PdfDocument.MovePage.
PDF-Seiten vertauschen
Um zwei Seiten zu vertauschen, verwenden Sie den folgenden Codeausschnitt.
using var pdf = new PdfDocument("ten-pages.pdf");
pdf.SwapPages(9, 0);
pdf.SwapPages(8, 1);
pdf.Save("swapped.pdf");
Die Methode PdfDocument.SwapPages akzeptiert die Indizes der beiden Seiten, die ihre Positionen tauschen sollen. Wenn die Anzahl der Seiten nicht zwei beträgt, verwenden Sie eine der Methoden zum Verschieben von Seiten.
Seiten hinzufügen und einfügen
Jedes PdfDocument enthält mindestens eine Seite. Wenn Sie ein neues Dokument erstellen, fügt die Bibliothek implizit eine Seite hinzu.
So fügen Sie mit der Docotic.Pdf-API eine leere Seite in ein PDF ein. Sie können Seiten an Positionen mit Indizes von 0 bis einschließlich PageCount einfügen.
using var pdf = new PdfDocument();
var newPage = pdf.InsertPage(0);
newPage.Canvas.DrawString("This is the new first page");
pdf.Save("two-pages.pdf");
Um eine leere Seite zu einem PDF hinzuzufügen, verwenden Sie die Methode PdfDocument.AddPage. Die Methode fügt dem Ende des Dokuments eine neue Seite hinzu. Das ist dasselbe wie ein Aufruf von pdf.InsertPage(pdf.PageCount).
Um Seiten aus einem anderen Dokument hinzuzufügen oder einzufügen, verwenden Sie eine Kombination von Aufrufen wie im Abschnitt PDF voranstellen beschrieben. Mit dieser Kombination von Aufrufen können Sie einem PDF eine Titelseite hinzufügen.
PDF-Seiten duplizieren
Mit der Bibliotheks-API können Sie die Duplizierungsoperation als zwei aufeinanderfolgende Operationen ausführen. Die erste ist die Kopieroperation für Seiten. Siehe das Codebeispiel im Abschnitt PDF teilen.
Die zweite ist die Einfügeoperation für Seiten. Verwenden Sie dafür die Methode PdfDocument.Append. Verschieben Sie dann die angehängten Seiten an die gewünschte Position.
Seiten extrahieren
Der folgende Ausschnitt zeigt, wie Seiten aus einem PDF extrahiert werden. Er extrahiert die ersten drei Seiten aus dem Quelldokument.
using var pdf = new PdfDocument("ten-pages.pdf");
using (var extracted = pdf.ExtractPages(0, 3))
{
extracted.RemoveUnusedResources();
extracted.Save("three-pages.pdf");
}
pdf.Save("seven-pages.pdf");
Die Methode ExtractPages entfernt Seiten aus dem Dokument. Dadurch verbleiben im Quelldokument nur noch sieben Seiten. Die Bibliothek erlaubt es nicht, Seiten aus einem Dokument zu extrahieren, das nur eine Seite enthält.
Wir empfehlen, ungenutzte Ressourcen aus dem Dokument mit den extrahierten Seiten zu entfernen.
Seite aus PDF entfernen
Sehen Sie sich den Ausschnitt an, der zeigt, wie eine Seite in einem PDF-Dokument gelöscht wird. Tatsächlich werden zwei Seiten mit unterschiedlichen Überladungen der Methode RemovePage gelöscht. Die erste Überladung akzeptiert einen Seitenindex als Parameter. Die zweite Überladung akzeptiert ein Seitenobjekt.
using var pdf = new PdfDocument("ten-pages.pdf");
pdf.RemovePage(0);
pdf.RemovePage(pdf.Pages[0]);
pdf.Save("without-first-two-pages.pdf");
Um mehr als eine Seite gleichzeitig zu entfernen, verwenden Sie die Methode PdfDocument.RemovePages. Diese Methodenüberladungen arbeiten mit Arrays aus Seitenindizes oder Seitenobjekten.
Digitale Signaturen
Docotic.Pdf implementiert viele Operationen für digitale Signaturen in PDF und kann Ihnen helfen, die Vertrauenswürdigkeit und rechtliche Gültigkeit Ihrer PDF-Dokumente zu sichern. Hier sind einige Beispiele dafür, was die Bibliothek kann:
PDF mit Zertifikat signieren. Das Hinzufügen digitaler Signaturen in PDF ist der Weg, die Identität des Unterzeichners zu bestätigen und sicherzustellen, dass niemand das Dokument nach dem Signieren verändert hat.
Signatur zertifizieren. Um zusätzliche Einschränkungen auf ein PDF anzuwenden, können Sie es mit einer Zertifizierungssignatur signieren. Sie können PDF nach dem Signieren vollständig sperren oder einige Arten von Änderungen erlauben.
Signatur in PDF überprüfen. Prüfen Sie die Gültigkeit einer digitalen Signatur, um zu bestätigen, dass sich der signierte Teil des Dokuments nicht geändert hat.
Mehrere Signaturen zulassen. Verträge, Vereinbarungen und Formulare erfordern oft, dass mehrere Parteien ein einzelnes Dokument signieren. Das Hinzufügen mehrerer Signaturen zu PDF erfordert, dass das Dokument inkrementell gespeichert wird.
Signatur-Zeitstempel einbetten. In den Signaturoptionen können Sie eine URL einer Timestamping Authority und optional ihre Anmeldedaten angeben. Die Bibliothek bettet den erhaltenen Zeitstempel in die Signatur ein.
Zertifikat einbetten. Die Bibliothek bettet Signaturzertifikate automatisch in digitale Signaturen ein.
Die Seite Digitale Signaturen enthält Beispielcodes und weitere Informationen zu jeder Operation.
PDF schützen
Es gibt drei Funktionen, mit denen Sie die Sicherheit von PDF gewährleisten können. Docotic.Pdf kann mit ihnen in beide Richtungen arbeiten: Die Bibliothek kann PDF schützen und ein gesichertes PDF entsperren.

Kennwortschutz
Mit dieser Funktion können Sie ein Kennwort festlegen, um den Zugriff auf das PDF einzuschränken. Je nach Kennworttyp benötigt das PDF das richtige Kennwort, um das Dokument zu öffnen oder zu ändern.
Es gibt zwei Arten von Kennwörtern in PDFs:
- Öffnungskennwort (Benutzerkennwort). Dieser Kennworttyp ist erforderlich, um das PDF zu öffnen und anzuzeigen. Ohne das richtige Kennwort öffnet ein konformer PDF-Viewer das Dokument nicht.
- Berechtigungskennwort (Eigentümerkennwort). Dieses Kennwort ist erforderlich, um Berechtigungen aus dem PDF zu entfernen. Das Öffnen eines PDFs mit dem Eigentümerkennwort erlaubt alle Aktionen, auch wenn Berechtigungen bestimmte Aktionen einschränken, etwa das Drucken, Kopieren oder Bearbeiten des PDFs.
Sie können beide Kennwörter festlegen für dasselbe PDF-Dokument. Lesen Sie über das Entschlüsseln von PDF-Dateien, um zu erfahren, wie man Kennwörter aus PDF-Dokumenten entfernt.
Verschlüsselung
PDF-Verschlüsselung und PDF-Kennwörter arbeiten zusammen, um sicherzustellen, dass sensible Informationen innerhalb des PDFs nur für berechtigte Benutzer verfügbar sind. Nur Benutzer mit dem richtigen Entschlüsselungsschlüssel oder Kennwort können den Inhalt anzeigen.
Docotic.Pdf kann PDF-Dateien mit den Verschlüsselungsalgorithmen RC4 40 Bit, RC4 128 Bit, AES 128 Bit und AES 256 Bit verschlüsseln.
Berechtigungen und Einschränkungen
Sie können auf einem PDF verschiedene Berechtigungen festlegen, etwa das Drucken, das Kopieren von Text, das Bearbeiten des Dokuments und mehr einschränken. Die Berechtigungen wirken sich nur auf die Nutzung aus, wenn jemand das PDF mit dem Benutzerkennwort öffnet. Einschränkungen gelten nicht für Personen, die das PDF mit dem Eigentümerkennwort öffnen.
Um Berechtigungen aus einem PDF zu entfernen, müssen Sie zuerst das PDF-Sicherheitskennwort entfernen. Lesen Sie darüber, wie das geht mit C# und der Docotic.Pdf-API.
Um zu erfahren, wie Sie zusätzlich zur PDF-Sicherheit PDF-Integrität sicherstellen, lesen Sie den Abschnitt über digitale Signaturen.
Metadaten in PDF
PDF-Metadaten sind Informationen, die in einer PDF-Datei eingebettet sind und Angaben zum Dokument liefern. Es gibt zwei primäre Quellen für Metadaten: PDF-Dokumenteigenschaften und XMP-Metadaten.
Dokumenteigenschaften werden auch häufig als Dokumentinformationswörterbuch, Dateiinformationen, Metadatenfelder, Dokumentattribute und Dateiattribute bezeichnet.
XMP-Metadaten (Extensible Metadata Platform) sind im Grunde eine XML-Datei, die in ein PDF eingebettet ist. XMP verwendet ein flexibles Datenmodell, das beliebige Metadateneigenschaften speichern kann. Diese Metadaten verwenden Namensräume, um zusammengehörige Eigenschaften zu gruppieren. Zu den gängigen Namensräumen gehören XMP Core/XMP Basic und Dublin Core.
Docotic.Pdf unterstützt sowohl XMP-Metadaten als auch Dokumenteigenschaften vollständig. Beachten Sie, dass der PDF-2.0-Standard die meisten Eigenschaften des Dokumentinformationswörterbuchs als veraltet markiert hat. Die einzigen Ausnahmen sind Erstellungsdatum und Änderungsdatum.
Komplette Testprojekte zu den Beispielen dieses Abschnitts finden Sie in der Gruppe Metadaten der Beispielcodes.
Dokumenteigenschaften
Sehen Sie, wie man die Dokumenteigenschaften mit Docotic.Pdf bearbeitet.
using var pdf = new PdfDocument("file.pdf");
pdf.Info.Author = "An example code";
pdf.Info.Subject = "Showing how to access and change document metadata";
pdf.Info.Title = "Custom title goes here";
pdf.Info.Keywords = "pdf Docotic.Pdf";
pdf.Save("updated-file.pdf");
Sie können den Wert jeder Eigenschaft ändern, aber beachten Sie, dass die Bibliothek standardmäßig einige Eigenschaften automatisch aktualisiert, bevor sie das PDF speichert. Das können Sie in den Speicheroptionen ändern.
Um alle in den Dokumenteigenschaften angegebenen Metadaten zu entfernen, verwenden Sie die Methode PdfInfo.Clear. Die Methode kann bei Bedarf nur benutzerdefinierte Eigenschaften entfernen.
XMP-Metadaten
Dieser Ausschnitt zeigt, wie man Eigenschaften der XMP-Metadaten in einem PDF-Dokument ändert.
using var pdf = new PdfDocument("file.pdf");
pdf.Metadata.DublinCore.Creators = new XmpArray(XmpArrayType.Ordered);
pdf.Metadata.DublinCore.Creators.Values.Add(new XmpString("me"));
pdf.Metadata.DublinCore.Creators.Values.Add(new XmpString("Docotic.Pdf"));
pdf.Metadata.DublinCore.Format = new XmpString("application/pdf");
pdf.Metadata.Pdf.Producer = new XmpString("me too!");
pdf.Save("updated-file.pdf");
Der Code ändert Eigenschaften in den Dublin-Core- und Adobe-PDF-Schemata. Beachten Sie, dass die Eigenschaft Producer überschrieben wird, weil die standardmäßigen Speicheroptionen dies tun.
Sie können Roh-XMP-Metadaten mit einer der Methoden XmpMetatada.Save extrahieren. Die Methode erzeugt ein XML mit allen Eigenschaften.
Um alle XMP-Metadaten aus einem Dokument zu entfernen, verwenden Sie die Methode XmpMetadata.Unembed.
Metadaten synchronisieren
Es ist wünschenswert sicherzustellen, dass sowohl XMP-Metadaten als auch Dokument-Info-Eigenschaften für die entsprechenden Eigenschaften dieselben Werte haben. Das gilt besonders, wenn Sie beide Metadatenquellen in derselben Datei bearbeiten.
Verwenden Sie die Methode PdfDocument.SyncMetadata, um Werte in XMP-Metadaten und Dokument-Info zu synchronisieren. Wenn sich eine Eigenschaft in beiden Quellen geändert hat, überschreibt die Methode eine Quelle mit dem Wert der anderen Quelle. Lesen Sie die Dokumentation zur Methode für weitere Details.
PDF-Lesezeichen
Ein PDF-Dokument kann spezielle Verknüpfungen oder Links enthalten, die Lesern helfen, schnell zu bestimmten Abschnitten oder Seiten zu navigieren. PDF-Gliederung ist eine andere Bezeichnung für Lesezeichen.

Viewer-Anwendungen zeigen Lesezeichen normalerweise wie ein Inhaltsverzeichnis in einem Buch an, aber interaktiv. Wenn der Leser auf ein Lesezeichen klickt, springt die Viewer-Anwendung zum vorgesehenen Teil des Dokuments. Ein ähnliches Verhalten lässt sich mit Link-Anmerkungen erreichen.
Hier ist ein C#-Codeausschnitt, der zeigt, wie man PDF-Lesezeichen hinzufügt:
using var pdf = new PdfDocument("ten-pages.pdf");
var root = pdf.OutlineRoot;
root.AddChild("Fifth page", 4);
root.AddChild("Seventh page", pdf.Pages[6]);
pdf.PageMode = PdfPageMode.UseOutlines;
pdf.Save("simple-bookmarks.pdf");
Die PDF-Gliederung kann Haupt- und Unter-Lesezeichen haben, was die Strukturierung großer Dokumente erleichtert. So erstellen Sie Unter-Lesezeichen in PDF:
using var pdf = new PdfDocument("ten-pages.pdf");
var root = pdf.OutlineRoot;
var evenPages = root.AddChild("Even pages");
evenPages.AddChild("Second page", 1);
evenPages.AddChild("Fourth page", 3);
pdf.PageMode = PdfPageMode.UseOutlines;
pdf.Save("even-pages-bookmarks.pdf");
Sie können Lesezeichenelementen Schriftarten und Farben zuweisen. Sehen Sie sich das vollständige Beispiel zum Erstellen einer Gliederung mit Stilen an.
Um ein Lesezeichen aus einem PDF zu entfernen, verwenden Sie die Methoden RemoveChild oder RemoveChildAt. Sie können alle Lesezeichen entfernen, indem Sie die Methode RemoveAllChildren auf dem Wurzelknoten aufrufen.
Dateianhänge
PDF-Anhänge sind externe Dateien, die in ein PDF-Dokument eingebettet sind. Diese Dateien werden auch häufig als eingebettete Dateien und Dateianhänge bezeichnet. Sie können jede Datei anhängen: Bild, Audio-/Videodatei, ein weiteres PDF, Word-Dokument, Excel-Tabellen oder alles andere.
Wenn Sie PDFs miteinander anhängen und so eine kombinierte PDF-Datei erstellen möchten, lesen Sie den Artikel über das Zusammenführen von PDF-Dokumenten.
Hier ist der C#-Code, der zeigt, wie man mit Hilfe der Docotic.Pdf-API einen Anhang zu PDF hinzufügt.
using var pdf = new PdfDocument();
var excelFile = pdf.CreateFileAttachment("this-year-figures.xlsx");
pdf.SharedAttachments.Add(excelFile);
pdf.Save("shared-attachment.pdf");
Der obige Code hat die Datei als freigegebenen Anhang hinzugefügt. Leser können die angehängte Datei im Bereich „Anlagen“ ihres Viewers finden.
Es ist auch möglich, Anhänge zu PDF-Seiten hinzuzufügen. Solche Anhänge sind innerhalb des Seiteninhalts sichtbar, ähnlich wie andere Anmerkungen.
using var pdf = new PdfDocument();
var page = pdf.Pages[0];
page.Canvas.DrawString(20, 100, "Here is this year's figures document:");
var bounds = PdfRectangle.FromLTRB(155, 100, 165, 110);
var excelFile = pdf.CreateFileAttachment("this-year-figures.xlsx");
pdf.Pages[0].AddFileAnnotation(bounds, excelFile);
pdf.Save("page-attachment.pdf");
Sehen Sie sich die Gruppe Anhänge der Beispielcodes an, um vollständige Testprojekte für die Beispiele dieses Abschnitts zu finden.
Um Anhänge aus PDF zu entfernen, müssen Sie sowohl freigegebene Anhänge als auch Seitenanmerkungen auflisten und die Elemente entfernen, die Sie nicht mehr benötigen. Siehe das Beispiel für den Enumerierungs-Code unten. Um alle freigegebenen Anmerkungen zu entfernen, können Sie einen Aufruf pdf.SharedAttachments.Clear() verwenden.
Sie müssen außerdem Sammlungen auflisten, um eingebettete Dateien aus PDF zu extrahieren. Hier ist ein Beispielcode:
using var pdf = new PdfDocument("file-with-attachments.pdf");
int i = 0;
foreach (var attachment in pdf.SharedAttachments)
{
if (attachment?.Contents == null)
continue;
var fileName = attachment.Specification ?? $"attachment{i++}";
attachment.Contents.Save(fileName);
}
foreach (var widget in pdf.GetWidgets())
{
var attachment = (widget as PdfFileAttachmentAnnotation)?.File;
if (attachment?.Contents == null)
continue;
var fileName = attachment.Specification ?? $"attachment{i++}";
attachment.Contents.Save(fileName);
}
Seitenbeschriftungen
PDF-Seitenbeschriftungen sind benutzerdefinierte Namen oder Nummern, die Seiten in einem PDF-Dokument zugewiesen werden. Anders als Standard-Seitennummern können Seitenbeschriftungen eine Mischung aus Buchstaben, Zahlen und sogar römischen Zahlen enthalten. Andere Bezeichnungen für Seitenbeschriftungen sind Seitenkennungen und Seitennamen.
So fügen Sie mit Docotic.Pdf Seitenbeschriftungen zu PDF hinzu:
using var pdf = new PdfDocument("ten-pages.pdf");
pdf.PageLabels.AddRange(0, 3, PdfPageNumberingStyle.LowercaseRoman);
pdf.PageLabels.AddRange(4, PdfPageNumberingStyle.DecimalArabic, string.Empty, 5);
pdf.PageLabels.AddRange(7, PdfPageNumberingStyle.DecimalArabic, "Appendix page ", 1);
pdf.Save("page-labels.pdf");
Die ersten vier Seiten erhalten die Beschriftungen i, ii, iii und iv. Die nächsten drei Beschriftungen sind 5, 6 und 7. Für die restlichen Seiten lauten die Beschriftungen Appendix page 1, Appendix page 2 und Appendix page 3.
PDF per OCR
Einige PDF-Dokumente enthalten gescannte Seiten und erfordern optische Zeichenerkennung (OCR), bevor Sie Text daraus extrahieren können. Ein weiterer Anwendungsfall für OCR ist das Extrahieren von Text aus einem PDF, das eine benutzerdefinierte Glyphen-zu-Unicode-Zuordnung verwendet.

Wir haben einen Blogbeitrag, der zeigt, wie man gescannte Dokumente per OCR verarbeitet. Der Beitrag enthält ein nicht durchsuchbares PDF-Beispiel und zeigt, wie man Tesseract OCR, C#-Code und Docotic.Pdf verwendet, um Text in bildbasierten PDFs zu erkennen. Sie können mit Hilfe von Docotic.Pdf auch eine OCR-Textschicht zu gescannten PDF-Dateien hinzufügen.
Seiten bearbeiten
In diesem Abschnitt geht es um Änderungen an vorhandenen PDF-Seiten, zum Beispiel:
- wie man PDF-Seiten dreht
- wie man die Seitengröße ändert
- wie man Vektorgrafiken auf der Seitenleinwand verwendet
- wie man HTML-Inhalt hinzufügt
Lesen Sie über die Layout API der Bibliothek, um zu erfahren, wie man PDF-Dokumente erstellt aus Bausteinen wie Kopf- und Fußzeilen, Tabellen, Bildern, Textabsätzen und Ähnlichem.
Sehen Sie sich die anderen Abschnitte an, um Informationen zu folgenden Themen zu erhalten:
- wie man Text in PDFs bearbeitet
- Operationen mit Bildern
- PDF-Wasserzeichen
- wie man ein PDF annotiert
- wie man PDF-Formulare ausfüllt
Seiten drehen
Siehe den C#-Codeausschnitt, um nur eine Seite im PDF zu drehen:
using var pdf = new PdfDocument("existing.pdf");
pdf.Pages[0].Rotation = PdfRotation.Rotate180;
pdf.Save("rotated.pdf");
Der Code dreht die erste Seite um 180 Grad. Sie können PDF-Seiten auch um 0, 90 und 270 Grad drehen.
Seitengröße ändern
Docotic.Pdf bietet mehr als eine Möglichkeit, die Seitengröße eines PDFs zu ändern. Im einfachsten Fall können Sie die Eigenschaften Width und Height eines PdfPage-Objekts verwenden, um die gewünschte Größe anzugeben. Bei einem vorhandenen Dokument wird dadurch der Seiteninhalt nicht neu skaliert. Und es wird auch kein Inhalt entfernt. Es werden lediglich alle Seiteninhalte verborgen, die außerhalb des Rechtecks der angegebenen Größe liegen.
Ein ähnlicher Ansatz ist das Zuschneiden von Seiten. Sie können die CropBox einer Seite mit C#-Code wie diesem ändern:
using var pdf = new PdfDocument("existing.pdf");
var page = pdf.Pages[0];
var cropBoxBefore = page.CropBox;
page.CropBox = new PdfBox(0, cropBoxBefore.Height - 256, 256, cropBoxBefore.Height);
pdf.Save("cropped.pdf");
Das Ändern der CropBox ist der richtige Weg, wenn Sie einen Teil der Seite als Bild speichern möchten.
Wenn das Ziel darin besteht, alle Inhalte auf einer Seite mit anderer Größe sichtbar zu behalten, verwenden Sie den Skalierungsansatz. Im folgenden Codeausschnitt erstelle ich ein XObject aus einer Seite. Das XObject ist wie ein Vektorbild. Sie können dasselbe Objekt auf mehreren Seiten zeichnen und bei Bedarf skalieren und drehen.
Nachdem das XObject bereit ist, lösche ich den vorherigen Seiteninhalt, ändere die Seitengröße und zeichne dann das Objekt auf der verkleinerten Seite.
using var pdf = new PdfDocument("existing.pdf");
var page = pdf.Pages[0];
var pageXObject = pdf.CreateXObject(page);
page.Canvas.Clear();
page.Width /= 2;
page.Height /= 2;
page.Canvas.DrawXObject(pageXObject, 0, 0, page.Width, page.Height, 0);
pdf.Save("resized.pdf");
Vektorgrafiken
Die Docotic.Pdf-Bibliothek kann Vektorgrafiken wie Linien, Kurven und Formen zu PDF-Dokumenten hinzufügen. Sie können Grafikrouten aus Grafikobjekten konstruieren. Anschließend können Sie die Pfade mit Farben aus verschiedenen Farbräumen füllen oder konturieren.
Beispielcode für grafikbezogene Funktionen finden Sie in der Gruppe Grafiken der Beispielcodes.
Es ist auch möglich, Grafiken aus PDF zu extrahieren. Beginnen Sie mit dem Aufruf der Methode GetObjects und extrahieren Sie dann Informationen aus Objekten vom Typ PdfPageObjectType.Path. Vergessen Sie nicht, dass XObjects auch verschachtelte Pfade enthalten können.
using var pdf = new PdfDocument("existing.pdf");
var options = new PdfObjectExtractionOptions();
var objects = pdf.Pages[0].GetObjects(options);
foreach (var obj in objects)
{
if (obj.Type == PdfPageObjectType.Path)
{
var path = (PdfPath)obj;
Console.WriteLine($"Found path {path}");
}
else if (obj.Type == PdfPageObjectType.XObject)
{
var paintedXObject = (PdfPaintedXObject)obj;
var nestedObjects = paintedXObject.XObject.GetObjects(options);
// ...
}
}
HTML zu PDF-Seiten hinzufügen
Das Überlagern von HTML-Inhalt auf einem PDF-Dokument kann nützlich sein, um dynamische Elemente wie Diagramme oder einen Aktienkurs-Ticker zu Ihren PDFs hinzuzufügen.
Lesen Sie darüber, wie man HTML in PDF einfügt, um mehr Details zu erhalten und ein Beispiel herunterzuladen.
PDF-Text bearbeiten
In diesem Abschnitt geht es darum, wie man Text in einem PDF bearbeitet, wie man die Textfarbe in PDF ändert und wie man neuen Text hinzufügt.

Wir haben einen Artikel, der sich speziell damit befasst, wie man Text aus einem PDF extrahiert. Sehen Sie ihn sich für weitere Informationen zu diesem Thema an.
Textglättung ist ebenfalls mit Hilfe von Docotic.Pdf möglich.
Suchen und ersetzen
Um Text in PDF zu ändern, müssen Sie den Bereich finden, der den Text enthält, und dann den Text in diesem Bereich entfernen. Im letzten Schritt fügen Sie den neuen Text in denselben Bereich des Dokuments ein.
Das Durchsuchen von PDFs kann schwierig sein, weil das Dokument intern Wörter in beliebiger Reihenfolge enthalten kann. Der Text kann außerdem gedreht sein. Glücklicherweise haben wir einen Beispielcode, der zeigt, wie man ein PDF nach Wörtern oder Phrasen durchsucht.
Wenn Sie die Koordinaten des zu entfernenden Textes haben, ist es an der Zeit, den Inhalt der betroffenen Seite zu bearbeiten. Die Bibliothek bietet Möglichkeiten, Seitenobjekte zu enumerieren und zu kopieren. Es ist also möglich, beim Kopieren von Objekten einige Texte auszulassen. Dadurch wird der Text im Wesentlichen entfernt. Der Code des Beispiels PDF-Seiteninhalt bearbeiten zeigt alle Details des Prozesses. Sie müssten die Methode ShouldRemoveText so anpassen, dass sie die gefundenen Koordinaten verwendet.
Lesen Sie den nächsten Abschnitt, um zu sehen, wie Sie den neuen Text zum Dokument hinzufügen.
Wenn Sie Dokumente mit Platzhaltertext erstellen und später den Platzhalter durch einen anderen Text ersetzen, können Sie stattdessen Textfelder verwenden.
Die Idee ist, dem Dokument ein schreibgeschütztes Textfeld ohne Rahmen hinzuzufügen und den Platzhaltertext darin zu platzieren. Später können Sie das Dokument öffnen, das Textfeld über seinen Namen finden und den Platzhalter mit einem einfachen Aufruf box.Text = "new text"; ersetzen. Glätten Sie das Textfeld nach dem Ersetzen, wenn Sie keine weiteren Änderungen möchten.
Neuen Text hinzufügen
Um Text zu Dokumenten hinzuzufügen, verwenden Sie die Methoden DrawString und DrawText eines PdfCanvas-Objekts. Die Methoden verwenden die aktuelle Canvas-Schriftart. Die Schriftart muss Glyphen für alle Zeichen im Text enthalten. Verwenden Sie die Methode PdfFont.ContainsGlyphsForText, um zu prüfen, ob die Schriftart diese Anforderung erfüllt.
var canvas = pdf.Pages[0].Canvas;
canvas.Font = pdf.CreateFont("NSimSun");
canvas.DrawString(10, 50, "Olá. 你好. Hello. This is some new text");
Sie können Unicode-Text hinzufügen, der mit Type1-, TrueType- und OpenType-Schriftarten gezeichnet wird. Die Bibliothek kann auf Ihrem System installierte Schriftarten, 14 integrierte Type1-Schriftarten verwenden oder eine benötigte Schriftart aus einer Datei laden.
Textfarbe ändern
Um die Textfarbe in PDF zu ändern, verwenden Sie denselben Ansatz wie beim Entfernen von Text. Sie müssten im Beispielcode mindestens die Methode ReplaceColor ändern.
Bilder
Docotic.Pdf bietet alles, was zum Bearbeiten von PDF-Bildern erforderlich ist. Nachfolgend finden Sie C#-Codeausschnitte für die gängigsten Operationen.
Die Beispielcodes für Bilder enthalten vollständige Testprojekte zu den Beispielen dieses Abschnitts.
Bild zu PDF hinzufügen
Die Bibliothek kann Bilder in den Formaten GIF/TIFF/PNG/BMP/JPEG importieren. Sie können auch ein Bild aus einem System.Drawing.Image-Objekt hinzufügen.
var canvas = pdf.Pages[0].Canvas;
var image = pdf.CreateImage("image.jpg");
canvas.DrawImage(image, 10, 50);
Sie können mithilfe von Überladungen der Methode DrawImage einen Drehwinkel und eine Ausgabegröße angeben. Um dasselbe Bild auf mehreren Seiten zu zeichnen, fügen Sie das Bild einmal hinzu und verwenden Sie dasselbe PdfImage-Objekt in mehreren Aufrufen der Methode DrawImage.
Bilder in PDF zusammenführen
Hier ist der C#-Code, der zeigt, wie man mehrere Bilder zu einem PDF zusammenführt.
using var pdf = new PdfDocument();
var imagePaths = new string[] { "image.jpg", "another-image.png" };
foreach (var path in imagePaths)
{
var image = pdf.CreateImage(path);
var page = pdf.AddPage();
page.Width = image.Width;
page.Height = image.Height;
page.Canvas.DrawImage(image, 0, 0);
}
pdf.RemovePage(0);
pdf.Save("combined-images.pdf");
Der Code fügt mehrere Bilder zum PDF hinzu und passt die Seitengröße jeweils an die Bildgröße an. Vor dem Speichern des Ergebnisses entfernt der Code die erste implizit hinzugefügte leere Seite.
PDF-Bilder extrahieren
Wir haben Docotic.Pdf so entworfen, dass Bilder aus PDF-Dateien extrahiert werden können, ohne die Bildqualität zu beeinträchtigen. Die Bibliothek ändert weder Bildgröße noch Kompression. Sie erhalten Bilder in derselben Qualität wie im PDF.
using var pdf = new PdfDocument("file-with-images.pdf");
int i = 0;
foreach (PdfImage image in pdf.GetImages())
{
var path = image.Save($"image{i++}");
Console.WriteLine($"Saved to {path}");
}
Bilder entfernen und ersetzen
Verwenden Sie die Methode PdfPage.RemovePaintedImages, um alle oder bestimmte Bilder von einer PDF-Seite zu entfernen. Sie können Bilder nach Position, Größe, Transformation oder anderen Parametern filtern.
using var pdf = new PdfDocument("file-with-images.pdf");
pdf.Pages[0].RemovePaintedImages(
image =>
{
return image.Size.Width > 100;
}
);
pdf.RemoveUnusedResources();
pdf.Save("no-wide-images.pdf");
Der obige C#-Code zeigt, wie man Bilder mit Hilfe von Docotic.Pdf entfernt. Ich empfehle, ungenutzte Ressourcen zu entfernen, nachdem Sie Bilder geändert oder entfernt haben.
Verwenden Sie die Methode PdfImage.ReplaceWith, um alle Vorkommen des Bildes im PDF-Dokument zu ersetzen.
using var pdf = new PdfDocument("file-with-images.pdf");
var firstImage = pdf.GetImages(false).FirstOrDefault()
?? throw new ArgumentException("No images found");
firstImage.ReplaceWith("another-image.png");
pdf.RemoveUnusedResources();
pdf.Save("replaced-image.pdf");
Komprimierungsschema ändern
Docotic.Pdf bietet Methoden zum Ändern der Komprimierung von PDF-Bildern. Es ist möglich, die Bilder mit den Komprimierungsalgorithmen JPEG, CCITT Gruppe 3 und 4 (Fax), JPEG 2000 sowie zip/deflate neu zu verpacken.
Abhängig von der ursprünglichen und der neuen Komprimierung kann die Änderung zu Detail- oder Qualitätsverlusten des Bildes führen. Verlustbehaftete Konvertierungen helfen jedoch in der Regel dabei, die Dokumentgröße zu reduzieren.
firstImage.RecompressWithJpeg2000(25);
Es gibt weitere Methoden, um ein Bild neu zu verpacken. Prüfen Sie die Methoden von PdfImage, deren Namen mit RecompressWith beginnen. Sie können mit der Methode Uncompress jede Komprimierung aus einem Bild entfernen.
Bilder skalieren
Wenn einige Bilder in einem PDF-Dokument größer als nötig sind, kann die Bibliothek sie für Sie skalieren oder herunterskalieren.
firstImage.Scale(0.5, PdfImageCompression.Jpeg2000, 25);
Der obige Code macht das erste Bild in beide Richtungen um den Faktor zwei kleiner. Die Bibliothek verwendet für das resultierende Bild JPEG-2000-Komprimierung.
Sie können eine der Methoden ResizeTo verwenden, um exakte Werte für die resultierende Breite und Höhe anzugeben.
Das Skalieren von Bildern reduziert die PDF-Dateigröße meist noch stärker als das Ändern ihrer Komprimierung (siehe Abschnitt oben), ist aber ein verlustbehafteter Prozess.
Wasserzeichen und Hintergründe

Das Hinzufügen von Wasserzeichen zu PDF umfasst diese Schritte:
- Ein XObject erstellen, den Container für den Wasserzeicheninhalt
- Das Objekt mit Text, Bildern und Vektorgrafiken füllen
- PDF-Seiten mit dem Objekt stempeln
Hier ist der C#-Code, der das Wasserzeichen „Confidential“ zu PDF hinzufügt:
using var pdf = new PdfDocument("existing.pdf");
var watermark = pdf.CreateXObject();
watermark.DrawOnBackground = true;
var canvas = watermark.Canvas;
canvas.FontSize = 72;
canvas.Brush.Color = new PdfRgbColor(222, 35, 35);
canvas.Brush.Opacity = 45;
canvas.Pen.Color = canvas.Brush.Color;
canvas.Pen.Opacity = canvas.Brush.Opacity;
canvas.Pen.Width = 5;
var padding = 10;
var text = "CONFIDENTIAL";
canvas.DrawString(padding, padding, text);
var textSize = canvas.MeasureText(text);
var watermarkRect = new PdfRectangle(
padding, padding, textSize.Width, textSize.Height);
canvas.DrawRoundedRectangle(watermarkRect, new PdfSize(padding, padding));
foreach (var page in pdf.Pages)
{
page.Canvas.DrawXObject(
watermark,
(page.Width - watermarkRect.Width) / 2,
(page.Height - watermarkRect.Height) / 2);
}
pdf.Save("watermarked.pdf");
Der Code setzt die Eigenschaften von Pinsel und Stift auf der Wasserzeichen-Canvas. Der Pinsel wird verwendet, um den Text zu zeichnen. Um die Textgröße zu ermitteln, misst der Code den Text. Dann zeichnet er ein Rechteck mit abgerundeten Ecken um den Text. Der Stift wird verwendet, um das Rechteck zu konturieren.
Nachdem der Wasserzeicheninhalt bereit ist, zeichnet der Code ihn in die Mitte jeder Seite.
PDF-Hintergründe sind Wasserzeichen sehr ähnlich. Zumindest können Sie sie fast auf dieselbe Weise erstellen. Um einem PDF einen Hintergrund hinzuzufügen, gehen Sie genauso vor wie im obigen Code, fügen Sie aber watermark.DrawOnBackground = true; direkt nach dem Aufruf CreateXObject hinzu. Beachten Sie, dass undurchsichtiger Inhalt wie Bilder den Hintergrund verdecken kann.
Anmerkungen
Docotic.Pdf bietet eine umfangreiche API für Anmerkungen in PDF. Sie können Anmerkungen in PDF-Dokumenten erstellen, bearbeiten und entfernen. Es ist auch möglich, Anmerkungen zu glätten.
Für Textanmerkungen gibt es:
- Haftnotizen oder Textanmerkungen. Siehe die Methode
AddTextAnnotationder KlassePdfPage. - Hervorhebungen. Siehe die Methode
AddHighlightAnnotation. - Durchstreichungen. Siehe die Methode
AddStrikeoutAnnotation. - Unterstreichungen. Siehe die Methoden
AddJaggedUnderlineAnnotationundAddUnderlineAnnotation.
Verwenden Sie Links, um von einer Seite zu einer anderen oder zu einer externen Ressource zu springen. Sie können Tintenanmerkungen für freihändiges Zeichnen auf einer PDF-Seite verwenden. Es gibt Schwärzungsanmerkungen für Bereiche, die aus dem Dokument entfernt werden sollen. Sie können auch Audio-, Video- oder 3D-Inhalt einbetten.
Text hervorheben
So heben Sie Text in PDF-Dokumenten hervor:
using var pdf = new PdfDocument();
var page = pdf.Pages[0];
var canvas = page.Canvas;
canvas.FontSize = 30;
var text = "Highlighted text.";
var position = new PdfPoint(10, 50);
canvas.DrawString(position, text);
canvas.DrawString(" Not highlighted.");
var size = canvas.MeasureText(text);
var bounds = new PdfRectangle(position, size);
var color = new PdfRgbColor(145, 209, 227);
var annotationText = "Please pay attention to this part.";
page.AddHighlightAnnotation(annotationText, bounds, color);
pdf.Save("highlighted.pdf");
Links
Um auf eine bestimmte Seite in PDF zu verlinken, verwenden Sie Code wie diesen:
using var pdf = new PdfDocument();
var secondPage = pdf.AddPage();
secondPage.Canvas.DrawString(10, 50, "Welcome to the second page.");
var firstPage = pdf.Pages[0];
var canvas = firstPage.Canvas;
var linkRect = new PdfRectangle(10, 50, 100, 60);
canvas.DrawRectangle(linkRect, PdfDrawMode.Stroke);
var options = new PdfTextDrawingOptions(linkRect)
{
HorizontalAlignment = PdfTextAlign.Center,
VerticalAlignment = PdfVerticalAlign.Center
};
canvas.DrawText("Go to 2nd page", options);
firstPage.AddLinkToPage(linkRect, 1);
pdf.Save("linked.pdf");
Im Code wirkt die Aktionsbereichsanmerkung wie ein interner Hyperlink. Solche Bereiche können auch zu externen Ressourcen navigieren und nicht-navigierende Aktionen ausführen.
Anmerkungen entfernen
Um Anmerkungen aus PDF zu entfernen:
- Greifen Sie über die Eigenschaft
PdfPage.Widgetsoder die MethodePdfDocument.GetWidgetsauf die Sammlung der Widgets zu. - Prüfen Sie den Typ, die Eigenschaften oder entscheiden Sie anderweitig, welche Anmerkungen Sie nicht mehr benötigen.
- Entfernen Sie die Anmerkung mit der Methode
PdfDocument.RemoveWidgetoder mit Methoden des ObjektsPdfWidgetCollection.
Um Anhänge aus PDF zu entfernen, müssen Sie sowohl Dateianmerkungen als auch freigegebene Anhänge entfernen.
PDF schwärzen
Als Bibliothek zum Schwärzen von PDFs bietet Docotic.Pdf Methoden, um sensible Informationen dauerhaft zu entfernen oder schnell zu schwärzen.

Text schwärzen
So schwärzen Sie Text in PDF ohne das Redact-Tool, nur mit C# und Docotic.Pdf.
int i = 0;
foreach (var page in pdf.Pages)
{
foreach (var word in page.GetWords())
{
if (i % 3 == 0)
{
page.Canvas.AppendRectangle(word.Bounds);
page.Canvas.FillPath(PdfFillMode.Winding);
}
i++;
}
}
Der Code zeichnet über jedes dritte Wort in einem Dokument ein schwarzes Rechteck. Beachten Sie, dass der Text hinter den Rechtecken im Dokument erhalten bleibt und später extrahiert werden kann. Um den Text dauerhaft zu entfernen, verwenden Sie den Ansatz aus dem Abschnitt über das Ersetzen von Text.
Bilder schwärzen
Sie können schwarze Rechtecke auch verwenden, um Bilder abzudecken. Ein einfacherer Ansatz wäre jedoch, das Bild durch ein schwarzes 1-mal-1-Pixel-Bild zu ersetzen. Dadurch wird das geschwärzte Bild nicht nur optisch hervorgehoben, sondern auch die ursprünglichen Bilddaten entfernt.
Codebeispiele finden Sie im Abschnitt über das Entfernen und Ersetzen von Bildern. Ich empfehle außerdem, nach dem Ersetzen die Methode PdfDocument.ReplaceDuplicateObjects aufzurufen.
PDF-Formulare
Docotic.Pdf kann AcroForms (eine andere Bezeichnung für PDF-Formulare) mit allen Arten von interaktiven Elementen erstellen, etwa Schaltflächen, Kontrollkästchen, Dropdown-Listen, Listenfelder, Optionsfelder und Textfelder.
Zum Hinzufügen und Konfigurieren eines Formularfelds braucht man normalerweise nur wenige Codezeilen. Sie können beispielsweise bearbeitbare Felder zu PDF hinzufügen, indem Sie einfach die Methode PdfPage.AddTextBox aufrufen. Die Beispielcodes in der Gruppe Formulare und Anmerkungen liefern weitere Informationen zum Erstellen und Verwenden von Formularen.
Ein PDF-Formular ausfüllen
Verwenden Sie die Methode PdfDocument.TryGetControl, um ein PDF-Steuerelement über seinen vollständigen oder teilweisen Namen abzurufen. Alternativ können Sie alle Steuerelemente im Dokument mit der Methode GetControls enumerieren. In beiden Fällen müssen Sie das Ergebnis auf den erwarteten Feldtyp casten.
using var pdf = new PdfDocument(@"example-form.pdf");
if (pdf.TryGetControl("txt-name", out var c) && c is PdfTextBox nameTextBox)
nameTextBox.Text = "Bit Miracle team";
if (pdf.TryGetControl("txt-email", out c) && c is PdfTextBox emailTextBox)
emailTextBox.Text = "support@bitmiracle.com";
if (pdf.TryGetControl("check-agree", out c) && c is PdfCheckBox agreeCheckBox)
agreeCheckBox.Checked = true;
pdf.Save("filled-form.pdf");
Der Code verwendet dieses PDF-Formularbeispiel. Im Code setze ich Werte für die beiden Textfelder und aktiviere das Kontrollkästchen.
Wenn Sie ein Formular ausgefüllt haben, können Sie alle Felder glätten.
JavaScript in Formularen verwenden
Sie können Aktionen zu Steuerelementereignissen hinzufügen. Die Klasse PdfControl bietet Zugriff auf einen vordefinierten Satz von Ereignissen. Die Namen der Ereignisse beginnen mit „On“ (z. B. OnMouseDown).
Hier ist ein Beispiel für die Verwendung von JavaScript in PDF-Formularen:
using var pdf = new PdfDocument(@"example-form.pdf");
foreach (var field in pdf.GetControls())
field.OnChange = pdf.CreateJavaScriptAction($"app.alert('{field.Name} changed!',3)");
pdf.Save("javascript-events.pdf");
Forms Data Format
Es gibt noch eine weitere Möglichkeit, PDF elektronisch auszufüllen. Verwenden Sie die FDF-zu-PDF-Funktion der Bibliothek, um PDF-Formulare automatisch aus einer Datenbank oder einer anderen Quelle zu befüllen.
using var pdf = new PdfDocument(@"example-form.pdf");
pdf.ImportFdf("form-data.fdf");
pdf.Save("auto-populated.pdf");
Der Code verwendet diese FDF-Datei, um alle Formularfelder auf einmal auszufüllen.
PDF glätten
In diesem Abschnitt geht es darum, wie man ein PDF glättet.

Wenn Sie ein PDF glätten, wandeln Sie interaktive Elemente wie Formulare und Anmerkungen in statischen Inhalt um, um weitere Bearbeitung zu verhindern. Ein geglättetes PDF kann deutlich weniger Bytes benötigen und dabei gleich aussehen.
Formulare und Anmerkungen glätten
Um ein ausfüllbares PDF zu glätten, verwenden Sie die Methode PdfDocument.FlattenControls. Diese Methode zeichnet alle Formularfelder und anderen Steuerelemente auf ihre übergeordnete Seite und entfernt das Quell-Steuerelement aus dem Dokument.
Wenn Sie ein PDF-Formular glätten, ist es sinnvoll, auch Anmerkungen zu glätten. Verwenden Sie die Methode PdfDocument.FlattenWidgets, um Steuerelemente und Anmerkungen gleichzeitig zu glätten.
Wenn Sie nur einige Steuerelemente und/oder Anmerkungen in ihre visuelle Darstellung umwandeln möchten, verwenden Sie die Methode PdfWidget.Flatten. Sie müssten zuerst das benötigte Steuerelement finden oder die Anmerkung.
Text glätten
Sie können PDF-Text mit Hilfe von Docotic.Pdf in Umrisse umwandeln. Der übliche Grund dafür ist, die Schriftartenunabhängigkeit zu erreichen. Unabhängig davon, ob die Schriftarten installiert sind, sieht der geglättete Text auf jedem Gerät gleich aus.
Sobald Sie Text in Umrisse umgewandelt haben, können Sie ihn jedoch nicht mehr als Text bearbeiten. Außerdem wandelt die Bibliothek beim Glättungsprozess den Text in Vektorgrafiken um. Das kann die Dateigröße erhöhen.
Um PDF-Text zu glätten, müssten Sie den Text als Vektorpfade extrahieren und auf eine neue oder dieselbe Seite kopieren. Dafür gibt es einen Beispielcode.
Speicheroptionen
In den obigen Codeausschnitten habe ich die Methode PdfDocument.Save ohne zusätzliche Argumente verwendet. Die Bibliothek verwendet in solchen Fällen die Standard-Speicheroptionen. Wir haben die Standardwerte so ausgewählt, dass sie in üblichen Fällen perfekt funktionieren.
Dennoch gibt es Fälle, in denen Sie die Standardoptionen überschreiben müssen. Erstellen Sie dafür ein Objekt PdfSaveOptions, richten Sie die Optionen ein und übergeben Sie es an eine der Speichermethoden. Im Folgenden beschreibe ich diese Fälle.
Um PDF mit einem Kennwort oder einem Zertifikat zu schützen, erstellen Sie einen Verschlüsselungshandler und weisen Sie ihn der Eigenschaft EncryptionHandler zu.
Wenn Sie dieselbe PDF-Datei mehrfach signieren möchten, aktivieren Sie den Modus für inkrementelle Updates, indem Sie die Eigenschaft WriteIncrementally auf true setzen. Tun Sie dasselbe, wenn Sie eine bereits signierte Datei mit neuen Anmerkungen oder Formulardaten speichern.
Setzen Sie die Eigenschaft Linearize auf true, um eine linearisierte PDF-Datei zu erzeugen (auch für Fast Web View optimiert). Viewer, die diese Optimierung erkennen, können solche Dateien schneller anzeigen.
Um Laufzeitänderungen an einigen der Metadatenfelder beim Speichern zu verhindern, setzen Sie die Eigenschaften UpdateProducer und UpdateModifiedDate auf false.