Wie man ein PDF in C# bearbeitet;

This article was translated from English: Does it need improvement?
Translated
View the article in English

Einführung

Iron Software hat in der IronPDF-Bibliothek viele verschiedene PDF-Bearbeitungsfunktionen zu leicht verständlichen Methoden vereinfacht. Sei es das Hinzufügen von Unterschriften, von HTML-Fußzeilen, von Wasserzeichen oder von Kommentaren. IronPDF ist das Werkzeug für Sie, das Ihnen lesbaren Code, programmatische PDF-Erzeugung, einfaches Debugging und eine einfache Bereitstellung in jeder unterstützten Umgebung oder Plattform ermöglicht.

IronPDF verfügt über unzählige Funktionen für die Bearbeitung von PDF-Dateien. In diesem Tutorial-Artikel werden wir einige der wichtigsten mit Code-Beispielen und einigen Erklärungen durchgehen.

Mit diesem Artikel haben Sie ein gutes Verständnis dafür, wie Sie IronPDF verwenden können, um Ihre PDFs in C# zu bearbeiten.

Inhaltsübersicht

Dokumentstruktur bearbeiten

Seiten manipulieren

Das Hinzufügen von PDFs zu bestimmten Indizes, das Kopieren von Seiten als Bereich oder einzeln und das Löschen von Seiten aus jeder PDF ist ein Kinderspiel mit IronPDF, das sich um alles im Hintergrund kümmert.

Seiten hinzufügen

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-1.cs
var pdf = new PdfDocument("report.pdf"); var renderer = new ChromePdfRenderer(); var coverPagePdf = renderer.RenderHtmlAsPdf("<h1>Cover Page</h1><hr>"); pdf.PrependPdf(coverPagePdf); pdf.SaveAs("report_with_cover.pdf");
Dim pdf = New PdfDocument("report.pdf") Dim renderer = New ChromePdfRenderer() Dim coverPagePdf = renderer.RenderHtmlAsPdf("<h1>Cover Page</h1><hr>") pdf.PrependPdf(coverPagePdf) pdf.SaveAs("report_with_cover.pdf")
$vbLabelText   $csharpLabel

Seiten kopieren

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-2.cs
var pdf = new PdfDocument("report.pdf"); // Copy pages 5 to 7 and save them as a new document. pdf.CopyPages(4, 6).SaveAs("report_highlight.pdf");
Dim pdf = New PdfDocument("report.pdf") ' Copy pages 5 to 7 and save them as a new document. pdf.CopyPages(4, 6).SaveAs("report_highlight.pdf")
$vbLabelText   $csharpLabel

Seiten löschen

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-3.cs
var pdf = new PdfDocument("report.pdf"); // Remove the last page from the PDF and save again pdf.RemovePage(pdf.PageCount - 1); pdf.SaveAs("report_minus_one_page.pdf");
Dim pdf = New PdfDocument("report.pdf") ' Remove the last page from the PDF and save again pdf.RemovePage(pdf.PageCount - 1) pdf.SaveAs("report_minus_one_page.pdf")
$vbLabelText   $csharpLabel

Zusammenführen und Teilen von PDFs

Das Zusammenführen von PDFs zu einem PDF oder das Aufteilen eines bestehenden PDFs ist mit der intuitiven API von IronPDF ganz einfach möglich.

Mehrere vorhandene PDFs zu einem einzigen PDF-Dokument zusammenfügen

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-4.cs
var pdfs = new List<PdfDocument> { PdfDocument.FromFile("A.pdf"), PdfDocument.FromFile("B.pdf"), PdfDocument.FromFile("C.pdf") }; PdfDocument mergedPdf = PdfDocument.Merge(pdfs); mergedPdf.SaveAs("merged.pdf"); foreach (var pdf in pdfs) { pdf.Dispose(); }
Dim pdfs = New List(Of PdfDocument) From {PdfDocument.FromFile("A.pdf"), PdfDocument.FromFile("B.pdf"), PdfDocument.FromFile("C.pdf")} Dim mergedPdf As PdfDocument = PdfDocument.Merge(pdfs) mergedPdf.SaveAs("merged.pdf") For Each pdf In pdfs	pdf.Dispose() Next pdf
$vbLabelText   $csharpLabel

Um das Zusammenführen von zwei oder mehr PDFs auf unserer Seite mit Code-Beispielen zu sehen, besuchen Sie bitte hier.

Aufteilen einer PDF-Datei und Extrahieren von Seiten

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-5.cs
var pdf = new PdfDocument("sample.pdf"); // Take the first page var pdf_page1 = pdf.CopyPage(0); pdf_page1.SaveAs("Split1.pdf"); // Take the pages 2 & 3 var pdf_page2_3 = pdf.CopyPages(1, 2); pdf_page2_3.SaveAs("Spli2t.pdf");
Dim pdf = New PdfDocument("sample.pdf") ' Take the first page Dim pdf_page1 = pdf.CopyPage(0) pdf_page1.SaveAs("Split1.pdf") ' Take the pages 2 & 3 Dim pdf_page2_3 = pdf.CopyPages(1, 2) pdf_page2_3.SaveAs("Spli2t.pdf")
$vbLabelText   $csharpLabel

Um das Aufteilen und Extrahieren von Seiten auf unserer Seite mit Codebeispielen zu sehen, besuchen Sie bitte hier.

Dokumenteigenschaften bearbeiten

Hinzufügen und Verwenden von PDF-Metadaten

Mit IronPDF können Sie PDF-Metadaten problemlos durchsuchen und bearbeiten:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-6.cs
// Open an Encrypted File, alternatively create a new PDF from Html var pdf = PdfDocument.FromFile("encrypted.pdf", "password"); // Edit file metadata pdf.MetaData.Author = "Satoshi Nakamoto"; pdf.MetaData.Keywords = "SEO, Friendly"; pdf.MetaData.ModifiedDate = System.DateTime.Now; // Edit file security settings // The following code makes a PDF read only and will disallow copy & paste and printing pdf.SecuritySettings.RemovePasswordsAndEncryption(); pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key"); pdf.SecuritySettings.AllowUserAnnotations = false; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserFormData = false; pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights; // Change or set the document encryption password pdf.SecuritySettings.OwnerPassword = "top-secret"; // password to edit the pdf pdf.SecuritySettings.UserPassword = "shareable"; // password to open the pdf pdf.SaveAs("secured.pdf");
Imports System ' Open an Encrypted File, alternatively create a new PDF from Html Dim pdf = PdfDocument.FromFile("encrypted.pdf", "password") ' Edit file metadata pdf.MetaData.Author = "Satoshi Nakamoto" pdf.MetaData.Keywords = "SEO, Friendly" pdf.MetaData.ModifiedDate = DateTime.Now ' Edit file security settings ' The following code makes a PDF read only and will disallow copy & paste and printing pdf.SecuritySettings.RemovePasswordsAndEncryption() pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key") pdf.SecuritySettings.AllowUserAnnotations = False pdf.SecuritySettings.AllowUserCopyPasteContent = False pdf.SecuritySettings.AllowUserFormData = False pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights ' Change or set the document encryption password pdf.SecuritySettings.OwnerPassword = "top-secret" ' password to edit the pdf pdf.SecuritySettings.UserPassword = "shareable" ' password to open the pdf pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

Digitale Signaturen

IronPDF bietet Optionen zum digitalen Signieren neuer oder vorhandener PDF-Dateien unter Verwendung der digitalen Zertifikate .pfx und .p12 X509Certificate2.

Sobald eine PDF-Datei signiert ist, kann sie nicht mehr geändert werden, ohne dass das Zertifikat validiert wird. Dies gewährleistet die Treue.

Um ein kostenloses Signierzertifikat mit Adobe Reader zu erstellen, lesen Sie bitte https://helpx.adobe.com/acrobat/using/digital-ids.html

Neben der kryptografischen Unterzeichnung kann auch ein handschriftliches Unterschriftsbild oder ein Firmenstempelbild zur Unterzeichnung mit IronPDF verwendet werden.

Kryptographisch signieren Sie ein bestehendes PDF mit nur einer Codezeile!

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-7.cs
using IronPdf; using IronPdf.Signing; new IronPdf.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");
Imports IronPdf Imports IronPdf.Signing Call (New IronPdf.Signing.PdfSignature("Iron.p12", "123456")).SignPdfFile("any.pdf")
$vbLabelText   $csharpLabel

Ein fortschrittlicheres Beispiel, das mehr Kontrolle bietet:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-8.cs
using IronPdf; // Step 1. Create a PDF var renderer = new ChromePdfRenderer(); var doc = renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>"); // Step 2. Create a Signature. // You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader. // Read: https://helpx.adobe.com/acrobat/using/digital-ids.html var signature = new IronPdf.Signing.PdfSignature("Iron.pfx", "123456") { // Step 3. Optional signing options and a handwritten signature graphic SigningContact = "support@ironsoftware.com", SigningLocation = "Chicago, USA", SigningReason = "To show how to sign a PDF" }; //Step 4. Sign the PDF with the PdfSignature. Multiple signing certificates may be used doc.Sign(signature); //Step 5. The PDF is not signed until saved to file, steam or byte array. doc.SaveAs("signed.pdf");
Imports IronPdf ' Step 1. Create a PDF Private renderer = New ChromePdfRenderer() Private doc = renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>") ' Step 2. Create a Signature. ' You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader. ' Read: https://helpx.adobe.com/acrobat/using/digital-ids.html Private signature = New IronPdf.Signing.PdfSignature("Iron.pfx", "123456") With {	.SigningContact = "support@ironsoftware.com",	.SigningLocation = "Chicago, USA",	.SigningReason = "To show how to sign a PDF" } 'Step 4. Sign the PDF with the PdfSignature. Multiple signing certificates may be used doc.Sign(signature) 'Step 5. The PDF is not signed until saved to file, steam or byte array. doc.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

PDF-Anhänge

IronPDF unterstützt in vollem Umfang das Hinzufügen und Entfernen von Anhängen zu und aus Ihren PDF-Dokumenten.

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-9.cs
var Renderer = new ChromePdfRenderer(); var myPdf = Renderer.RenderHtmlFileAsPdf("my-content.html"); // Here we can add an attachment with a name and byte[] var attachment1 = myPdf.Attachments.AddAttachment("attachment_1", example_attachment); // And here is an example of removing an attachment myPdf.Attachments.RemoveAttachment(attachment1); myPdf.SaveAs("my-content.pdf");
Dim Renderer = New ChromePdfRenderer() Dim myPdf = Renderer.RenderHtmlFileAsPdf("my-content.html") ' Here we can add an attachment with a name and byte[] Dim attachment1 = myPdf.Attachments.AddAttachment("attachment_1", example_attachment) ' And here is an example of removing an attachment myPdf.Attachments.RemoveAttachment(attachment1) myPdf.SaveAs("my-content.pdf")
$vbLabelText   $csharpLabel

PDFs komprimieren

IronPDF unterstützt die Komprimierung von PDF-Dateien. Eine Möglichkeit, die Größe einer PDF-Datei zu reduzieren, besteht darin, die Größe der eingebetteten Bilder im PdfDokument zu verringern. In IronPDF können wir die CompressImages-Methode aufrufen.

Bei der Größenänderung von JPEGs gibt es bei 100 % Qualität so gut wie keine Verluste, und 1 % ist ein Bild von sehr geringer Qualität. Im Allgemeinen gelten 90 % und mehr als hohe Qualität, 80-90 % als mittlere Qualität und 70-80 % als niedrige Qualität. Eine Reduzierung auf unter 70 % führt zu einer schlechten Bildqualität, kann aber die Gesamtgröße des PdfDokuments drastisch reduzieren.

Bitte experimentieren Sie mit verschiedenen Werten, um ein Gefühl für die Bandbreite der Qualität im Verhältnis zur Dateigröße zu bekommen und so die optimale Balance für Ihre Anforderungen zu finden. Die Offensichtlichkeit der Qualitätsminderung hängt letztlich von der Art des eingegebenen Bildes ab, und einige Bilder können in ihrer Klarheit stärker beeinträchtigt sein als andere.

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-10.cs
var pdf = new PdfDocument("document.pdf"); // Quality parameter can be 1-100, where 100 is 100% of original quality pdf.CompressImages(60); pdf.SaveAs("document_compressed.pdf");
Dim pdf = New PdfDocument("document.pdf") ' Quality parameter can be 1-100, where 100 is 100% of original quality pdf.CompressImages(60) pdf.SaveAs("document_compressed.pdf")
$vbLabelText   $csharpLabel

Es gibt einen zweiten optionalen Parameter, der die Bildauflösung entsprechend der sichtbaren Größe im PDF-Dokument herunterskalieren kann. Beachten Sie, dass dies bei einigen Bildkonfigurationen zu Verzerrungen führen kann:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-11.cs
var pdf = new PdfDocument("document.pdf"); pdf.CompressImages(90, true); pdf.SaveAs("document_scaled_compressed.pdf");
Dim pdf = New PdfDocument("document.pdf") pdf.CompressImages(90, True) pdf.SaveAs("document_scaled_compressed.pdf")
$vbLabelText   $csharpLabel

Bearbeiten von PDF-Inhalten

Kopf- und Fußzeilen hinzufügen

Sie können problemlos Kopf- und Fußzeilen zu Ihrer PDF-Datei hinzufügen. IronPDF verfügt über zwei verschiedene Arten von "HeaderFooters", die TextHeaderFooter und HtmlHeaderFooter sind. TextHeaderFooter ist besser für Kopf- und Fußzeilen geeignet, die nur Text enthalten und welche Felder zum Zusammenführen wie "{page} von {total-pages}" verwenden möchten. HtmlHeaderFooter ist eine fortschrittliche Kopf- und Fußzeile, die mit beliebigem HTML arbeitet und sauber formatiert.

HTML-Kopfzeile und -Fußzeile

HTML-Kopf- und Fußzeilen verwenden die gerenderte Version Ihres HTML-Dokuments als Kopf- oder Fußzeile in Ihrem PDF-Dokument für ein pixelgenaues Layout.

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-12.cs
var renderer = new ChromePdfRenderer(); // Build a footer using html to style the text // mergeable fields are: // {page} {total-pages} {url} {date} {time} {html-title} & {pdf-title} renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { MaxHeight = 15, //millimeters HtmlFragment = "<center><i>{page} of {total-pages}<i></center>", DrawDividerLine = true }; // Build a header using an image asset // Note the use of BaseUrl to set a relative path to the assets renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { MaxHeight = 20, //millimeters HtmlFragment = "<img src='logo.png'>", BaseUrl = new System.Uri(@"C:\assets\images").AbsoluteUri };
Dim renderer = New ChromePdfRenderer() ' Build a footer using html to style the text ' mergeable fields are: ' {page} {total-pages} {url} {date} {time} {html-title} & {pdf-title} renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {	.MaxHeight = 15,	.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>",	.DrawDividerLine = True } ' Build a header using an image asset ' Note the use of BaseUrl to set a relative path to the assets renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {	.MaxHeight = 20,	.HtmlFragment = "<img src='logo.png'>",	.BaseUrl = (New System.Uri("C:\assets\images")).AbsoluteUri }
$vbLabelText   $csharpLabel

Für ein vollständiges und detailliertes Beispiel mit mehreren Anwendungsfällen sehen Sie sich das folgende Tutorial an: hier.

Text Kopfzeile und Fußzeile

Die grundlegende Kopf- und Fußzeile ist der TextHeaderFooter, siehe das folgende Beispiel.

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-13.cs
var renderer = new ChromePdfRenderer { RenderingOptions = { FirstPageNumber = 1, // use 2 if a cover-page will be appended // Add a header to every page easily: TextHeader = { DrawDividerLine = true, CenterText = "{url}", Font = IronSoftware.Drawing.FontTypes.Helvetica, FontSize = 12 }, // Add a footer too: TextFooter = { DrawDividerLine = true, Font = IronSoftware.Drawing.FontTypes.Arial, FontSize = 10, LeftText = "{date} {time}", RightText = "{page} of {total-pages}" } } };
Dim renderer = New ChromePdfRenderer With {	.RenderingOptions = {	FirstPageNumber = 1, TextHeader = {	DrawDividerLine = True,	CenterText = "{url}",	Font = IronSoftware.Drawing.FontTypes.Helvetica,	FontSize = 12	},	TextFooter = {	DrawDividerLine = True,	Font = IronSoftware.Drawing.FontTypes.Arial,	FontSize = 10,	LeftText = "{date} {time}",	RightText = "{page} of {total-pages}"	}	} }
$vbLabelText   $csharpLabel

Wir haben auch die folgenden Zusammenführungsfelder, die beim Rendern durch Werte ersetzt werden: {page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}

Suchen und Ersetzen von Text in einer PDF-Datei

Erstellen Sie Platzhalter in Ihren PDFs und ersetzen Sie sie programmgesteuert, oder ersetzen Sie einfach alle Instanzen einer Textphrase mit unserer ReplaceTextOnPage-Methode.

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-14.cs
// Using an existing PDF var pdf = PdfDocument.FromFile("sample.pdf"); // Parameters int pageIndex = 1; string oldText = ".NET 6"; // Old text to remove string newText = ".NET 7"; // New text to add // Replace Text on Page pdf.ReplaceTextOnPage(pageIndex, oldText, newText); // Placeholder Template Example pdf.ReplaceTextOnPage(pageIndex, "[DATE]", "01/01/2000"); // Save your new PDF pdf.SaveAs("new_sample.pdf");
' Using an existing PDF Dim pdf = PdfDocument.FromFile("sample.pdf") ' Parameters Dim pageIndex As Integer = 1 Dim oldText As String = ".NET 6" ' Old text to remove Dim newText As String = ".NET 7" ' New text to add ' Replace Text on Page pdf.ReplaceTextOnPage(pageIndex, oldText, newText) ' Placeholder Template Example pdf.ReplaceTextOnPage(pageIndex, "[DATE]", "01/01/2000") ' Save your new PDF pdf.SaveAs("new_sample.pdf")
$vbLabelText   $csharpLabel

Um das Beispiel für "Find and Replace Text" auf unserer Seite mit Codebeispielen zu sehen, besuchen Sie bitte hier

Gliederungen und Lesezeichen

Eine Gliederung oder ein "Lesezeichen" bietet eine Möglichkeit, zu wichtigen Seiten einer PDF-Datei zu navigieren. In Adobe Acrobat Reader werden diese Lesezeichen (die möglicherweise verschachtelt sind) in der linken Seitenleiste der Anwendung angezeigt. IronPDF importiert automatisch vorhandene Lesezeichen aus PDF-Dokumenten und ermöglicht das Hinzufügen, Bearbeiten und Verschachteln weiterer Lesezeichen.

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-15.cs
// Create a new PDF or edit an existing document. PdfDocument pdf = PdfDocument.FromFile("existing.pdf"); // Add bookmark pdf.Bookmarks.AddBookMarkAtEnd("Author's Note", 2); pdf.Bookmarks.AddBookMarkAtEnd("Table of Contents", 3); // Store new bookmark in a variable to add nested bookmarks to var summaryBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Summary", 17); // Add a sub-bookmark within the summary var conclusionBookmark = summaryBookmark.Children.AddBookMarkAtStart("Conclusion", 18); // Add another bookmark to end of highest-level bookmark list pdf.Bookmarks.AddBookMarkAtEnd("References", 20); pdf.SaveAs("existing.pdf");
' Create a new PDF or edit an existing document. Dim pdf As PdfDocument = PdfDocument.FromFile("existing.pdf") ' Add bookmark pdf.Bookmarks.AddBookMarkAtEnd("Author's Note", 2) pdf.Bookmarks.AddBookMarkAtEnd("Table of Contents", 3) ' Store new bookmark in a variable to add nested bookmarks to Dim summaryBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Summary", 17) ' Add a sub-bookmark within the summary Dim conclusionBookmark = summaryBookmark.Children.AddBookMarkAtStart("Conclusion", 18) ' Add another bookmark to end of highest-level bookmark list pdf.Bookmarks.AddBookMarkAtEnd("References", 20) pdf.SaveAs("existing.pdf")
$vbLabelText   $csharpLabel

Um das Beispiel für Inhaltsverzeichnis und Lesezeichen auf unserer Beispielseite zu sehen, besuchen Sie bitte hier.

Hinzufügen und Bearbeiten von Kommentaren

IronPDF bietet eine Fülle von Anpassungsmöglichkeiten für PDF-Anmerkungen. Das folgende Beispiel veranschaulicht seine Möglichkeiten:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-16.cs
// create a new PDF or load and edit an existing document. var pdf = PdfDocument.FromFile("existing.pdf"); // Create a PDF annotation object var textAnnotation = new IronPdf.Annotations.TextAnnotation(PageIndex: 0) { Title = "This is the major title", Contents = "This is the long 'sticky note' comment content...", Subject = "This is a subtitle", Opacity = 0.9, Printable = false, Hidden = false, OpenByDefault = true, ReadOnly = false, Rotatable = true, }; // Add the annotation "sticky note" to a specific page and location within any new or existing PDF. pdf.Annotations.Add(textAnnotation); pdf.SaveAs("existing.pdf");
' create a new PDF or load and edit an existing document. Dim pdf = PdfDocument.FromFile("existing.pdf") ' Create a PDF annotation object Dim textAnnotation = New IronPdf.Annotations.TextAnnotation(PageIndex:= 0) With {	.Title = "This is the major title",	.Contents = "This is the long 'sticky note' comment content...",	.Subject = "This is a subtitle",	.Opacity = 0.9,	.Printable = False,	.Hidden = False,	.OpenByDefault = True,	.ReadOnly = False,	.Rotatable = True } ' Add the annotation "sticky note" to a specific page and location within any new or existing PDF. pdf.Annotations.Add(textAnnotation) pdf.SaveAs("existing.pdf")
$vbLabelText   $csharpLabel

PDF-Anmerkungen ermöglichen das Hinzufügen von Kommentaren in Form von "Haftnotizen" zu PDF-Seiten. Die TextAnnotation-Klasse ermöglicht es, Anmerkungen programmgesteuert hinzuzufügen. Zu den unterstützten erweiterten Funktionen für Textanmerkungen gehören Größenanpassung, Deckkraft, Symbole und Bearbeitung.

Hintergründe und Vordergründe hinzufügen

Mit IronPDF können wir ganz einfach 2 PDF-Dateien zusammenführen, indem wir eine als Hintergrund oder Vordergrund verwenden:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-17.cs
var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf"); pdf.AddBackgroundPdf(@"MyBackground.pdf"); pdf.AddForegroundOverlayPdfToPage(0, @"MyForeground.pdf", 0); pdf.SaveAs(@"C:\Path\To\Complete.pdf");
Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf") pdf.AddBackgroundPdf("MyBackground.pdf") pdf.AddForegroundOverlayPdfToPage(0, "MyForeground.pdf", 0) pdf.SaveAs("C:\Path\To\Complete.pdf")
$vbLabelText   $csharpLabel

Stempeln und Wasserzeichen

Die Möglichkeit, Stempel und Wasserzeichen zu erstellen, gehört zu den grundlegenden Funktionen eines jeden PDF-Editors. IronPDF verfügt über eine erstaunliche API zur Erstellung einer breiten Palette von Stempeln wie Bildstempel und HTML-Stempel. Diese haben alle eine hochgradig anpassbare Positionierung mit Hilfe von Ausrichtung und Offsets, die hier zu sehen sind:

Stempeln und Wasserzeichen

Abstrakte Klasse Stamper

Die abstrakte Klasse Stamper wird als Parameter für alle Stempelmethoden von IronPDF verwendet.

Für jeden Anwendungsfall gibt es viele Klassen:

Eigenschaften der Stamper-Klasse

abstract class Stamper └─── int : Opacity └─── int : Rotation └─── double : Scale └─── Length : HorizontalOffset └─── Length : VerticalOffset └─── Length : MinWidth └─── Length : MaxWidth └─── Length : MinHeight └─── Length : MaxHeight └─── string : Hyperlink └─── bool : IsStampBehindContent (default : false) └─── HorizontalAlignment : HorizontalAlignment │ │ Left │ │ Center (default) │ │ Right │ └─── VerticalAlignment : VerticalAlignment │ Top │ Middle (default) │ Bottom

Beispiele für Stanzen

Nachfolgend werden die einzelnen Unterklassen von Stamper anhand eines Codebeispiels vorgestellt.

Text in eine PDF-Datei stempeln

Zwei verschiedene Textstempel auf unterschiedliche Weise erstellen und beide anwenden:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-18.cs
var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>"); TextStamper stamper1 = new TextStamper { Text = "Hello World! Stamp One Here!", FontFamily = "Bungee Spice", UseGoogleFont = true, FontSize = 100, IsBold = true, IsItalic = true, VerticalAlignment = VerticalAlignment.Top }; TextStamper stamper2 = new TextStamper() { Text = "Hello World! Stamp Two Here!", FontFamily = "Bungee Spice", UseGoogleFont = true, FontSize = 30, VerticalAlignment = VerticalAlignment.Bottom }; Stamper[] stampersToApply = { stamper1, stamper2 }; pdf.ApplyMultipleStamps(stampersToApply); pdf.ApplyStamp(stamper2);
Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>") Dim stamper1 As New TextStamper With {	.Text = "Hello World! Stamp One Here!",	.FontFamily = "Bungee Spice",	.UseGoogleFont = True,	.FontSize = 100,	.IsBold = True,	.IsItalic = True,	.VerticalAlignment = VerticalAlignment.Top } Dim stamper2 As New TextStamper() With {	.Text = "Hello World! Stamp Two Here!",	.FontFamily = "Bungee Spice",	.UseGoogleFont = True,	.FontSize = 30,	.VerticalAlignment = VerticalAlignment.Bottom } Dim stampersToApply() As Stamper = { stamper1, stamper2 } pdf.ApplyMultipleStamps(stampersToApply) pdf.ApplyStamp(stamper2)
$vbLabelText   $csharpLabel

Ein Bild in eine PDF-Datei stempeln

Anwenden eines Bildstempels auf ein bestehendes PDF-Dokument auf verschiedenen Seitenkombinationen:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-19.cs
var pdf = new PdfDocument("/attachments/2022_Q1_sales.pdf"); ImageStamper logoImageStamper = new ImageStamper("/assets/logo.png"); // Apply to every page, one page, or some pages pdf.ApplyStamp(logoImageStamper); pdf.ApplyStamp(logoImageStamper, 0); pdf.ApplyStamp(logoImageStamper, new[] { 0, 3, 11 });
Dim pdf = New PdfDocument("/attachments/2022_Q1_sales.pdf") Dim logoImageStamper As New ImageStamper("/assets/logo.png") ' Apply to every page, one page, or some pages pdf.ApplyStamp(logoImageStamper) pdf.ApplyStamp(logoImageStamper, 0) pdf.ApplyStamp(logoImageStamper, { 0, 3, 11 })
$vbLabelText   $csharpLabel

HTML in eine PDF-Datei stempeln

Schreiben Sie Ihr eigenes HTML, das als Stempel verwendet werden kann:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-20.cs
var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<p>Hello World, example HTML body.</p>"); HtmlStamper stamper = new HtmlStamper($"<p>Example HTML Stamped</p><div style='width:250pt;height:250pt;background-color:red;'></div>") { HorizontalOffset = new Length(-3, MeasurementUnit.Inch), VerticalAlignment = VerticalAlignment.Bottom }; pdf.ApplyStamp(stamper);
Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf("<p>Hello World, example HTML body.</p>") Dim stamper As New HtmlStamper($"<p>Example HTML Stamped</p><div style='width:250pt;height:250pt;background-color:red;'></div>") If True Then 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: HorizontalOffset = new Length(-3, MeasurementUnit.Inch), VerticalAlignment = VerticalAlignment.Bottom	New Length(-3, MeasurementUnit.Inch), VerticalAlignment = VerticalAlignment.Bottom	HorizontalOffset = New Length(-3, MeasurementUnit.Inch), VerticalAlignment End If pdf.ApplyStamp(stamper)
$vbLabelText   $csharpLabel

Stempeln eines Barcodes auf eine PDF-Datei

Beispiel für das Erstellen und Stempeln eines Barcodes:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-21.cs
BarcodeStamper bcStamp = new BarcodeStamper("IronPDF", BarcodeEncoding.Code39); bcStamp.HorizontalAlignment = HorizontalAlignment.Left; bcStamp.VerticalAlignment = VerticalAlignment.Bottom; var pdf = new PdfDocument("example.pdf"); pdf.ApplyStamp(bcStamp);
Dim bcStamp As New BarcodeStamper("IronPDF", BarcodeEncoding.Code39) bcStamp.HorizontalAlignment = HorizontalAlignment.Left bcStamp.VerticalAlignment = VerticalAlignment.Bottom Dim pdf = New PdfDocument("example.pdf") pdf.ApplyStamp(bcStamp)
$vbLabelText   $csharpLabel

Stempeln eines QR-Codes auf eine PDF-Datei

Beispiel für die Erstellung und Prägung eines QR-Codes:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-22.cs
BarcodeStamper qrStamp = new BarcodeStamper("IronPDF", BarcodeEncoding.QRCode); qrStamp.Height = 50; // pixels qrStamp.Width = 50; // pixels qrStamp.HorizontalAlignment = HorizontalAlignment.Left; qrStamp.VerticalAlignment = VerticalAlignment.Bottom; var pdf = new PdfDocument("example.pdf"); pdf.ApplyStamp(qrStamp);
Dim qrStamp As New BarcodeStamper("IronPDF", BarcodeEncoding.QRCode) qrStamp.Height = 50 ' pixels qrStamp.Width = 50 ' pixels qrStamp.HorizontalAlignment = HorizontalAlignment.Left qrStamp.VerticalAlignment = VerticalAlignment.Bottom Dim pdf = New PdfDocument("example.pdf") pdf.ApplyStamp(qrStamp)
$vbLabelText   $csharpLabel

Wasserzeichen zu einer PDF-Datei hinzufügen

Wasserzeichen ist eine Art Stempel für jede Seite, der leicht mit der ApplyWatermark-Methode angewendet werden kann:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-23.cs
var pdf = new PdfDocument("/attachments/design.pdf"); string html = "<h1> Example Title <h1/>"; int rotation = 0; int watermarkOpacity = 30; pdf.ApplyWatermark(html, rotation, watermarkOpacity);
Dim pdf = New PdfDocument("/attachments/design.pdf") Dim html As String = "<h1> Example Title <h1/>" Dim rotation As Integer = 0 Dim watermarkOpacity As Integer = 30 pdf.ApplyWatermark(html, rotation, watermarkOpacity)
$vbLabelText   $csharpLabel

Um das Watermarking-Beispiel auf unserer Code-Beispielseite zu sehen, besuchen Sie bitte hier.

Stempel auf eine PDF-Datei anwenden

Es gibt einige Überladungen der ApplyStamp-Methode, die verwendet werden können, um Ihren Stamper auf eine PDF-Datei anzuwenden.

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-24.cs
var pdf = new PdfDocument("/assets/example.pdf"); // Apply one stamp to all pages pdf.ApplyStamp(myStamper); // Apply one stamp to a specific page pdf.ApplyStamp(myStamper, 0); // Apply one stamp to specific pages pdf.ApplyStamp(myStamper, new[] { 0, 3, 5 }); // Apply a stamp array to all pages pdf.ApplyMultipleStamps(stampArray); // Apply a stamp array to a specific page pdf.ApplyMultipleStamps(stampArray, 0); // Apply a stamp array to specific pages pdf.ApplyMultipleStamps(stampArray, new[] { 0, 3, 5 }); // And some Async versions of the above await pdf.ApplyStampAsync(myStamper, 4); await pdf.ApplyMultipleStampsAsync(stampArray); // Additional Watermark apply method string html = "<h1> Example Title <h1/>"; int rotation = 0; int watermarkOpacity = 30; pdf.ApplyWatermark(html, rotation, watermarkOpacity);
Dim pdf = New PdfDocument("/assets/example.pdf") ' Apply one stamp to all pages pdf.ApplyStamp(myStamper) ' Apply one stamp to a specific page pdf.ApplyStamp(myStamper, 0) ' Apply one stamp to specific pages pdf.ApplyStamp(myStamper, { 0, 3, 5 }) ' Apply a stamp array to all pages pdf.ApplyMultipleStamps(stampArray) ' Apply a stamp array to a specific page pdf.ApplyMultipleStamps(stampArray, 0) ' Apply a stamp array to specific pages pdf.ApplyMultipleStamps(stampArray, { 0, 3, 5 }) ' And some Async versions of the above Await pdf.ApplyStampAsync(myStamper, 4) Await pdf.ApplyMultipleStampsAsync(stampArray) ' Additional Watermark apply method Dim html As String = "<h1> Example Title <h1/>" Dim rotation As Integer = 0 Dim watermarkOpacity As Integer = 30 pdf.ApplyWatermark(html, rotation, watermarkOpacity)
$vbLabelText   $csharpLabel

Länge Klasse

Die Length-Klasse hat zwei Eigenschaften: Unit und Value. Nachdem Sie entschieden haben, welche Einheit aus dem MeasurementUnit-Enum verwendet werden soll (der Standard ist ein Percentage der Seite), wählen Sie den Value aus, um die Länge als Vielfaches der Basiseinheit festzulegen.

Eigenschaften der Längenklasse

class Length └─── double : Value (default : 0) └─── MeasurementUnit : Unit Inch Millimeter Centimeter Percentage (default) Pixel Points

Länge Beispiele

Erstellen einer Länge

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-25.cs
new Length(value: 5, unit: MeasurementUnit.Inch); // 5 inches new Length(value: 25, unit: MeasurementUnit.Pixel);// 25px new Length(); // 0% of the page dimension because value is defaulted to zero and unit is defaulted to percentage new Length(value: 20); // 20% of the page dimension
Dim tempVar As New Length(value:= 5, unit:= MeasurementUnit.Inch) ' 5 inches Dim tempVar2 As New Length(value:= 25, unit:= MeasurementUnit.Pixel) ' 25px Dim tempVar3 As New Length() ' 0% of the page dimension because value is defaulted to zero and unit is defaulted to percentage Dim tempVar4 As New Length(value:= 20) ' 20% of the page dimension
$vbLabelText   $csharpLabel

Verwendung der Länge als Parameter

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-26.cs
HtmlStamper logoStamper = new HtmlStamper { VerticalOffset = new Length(15, MeasurementUnit.Percentage), HorizontalOffset = new Length(1, MeasurementUnit.Inch) // set other properties... };
Dim logoStamper As New HtmlStamper With {	.VerticalOffset = New Length(15, MeasurementUnit.Percentage),	.HorizontalOffset = New Length(1, MeasurementUnit.Inch) }
$vbLabelText   $csharpLabel

Formulare in PDFs verwenden

Formulare erstellen und bearbeiten

Verwenden Sie IronPDF, um eine PDF-Datei mit eingebetteten Formularfeldern zu erstellen:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-27.cs
// Step 1. Creating a PDF with editable forms from HTML using form and input tags const string formHtml = @" <html> <body> <h2>Editable PDF Form</h2> <form> First name: <br> <input type='text' name='firstname' value=''> <br> Last name: <br> <input type='text' name='lastname' value=''> </form> </body> </html>"; // Instantiate Renderer var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.CreatePdfFormsFromHtml = true; renderer.RenderHtmlAsPdf(formHtml).SaveAs("BasicForm.pdf"); // Step 2. Reading and Writing PDF form values. var formDocument = PdfDocument.FromFile("BasicForm.pdf"); // Read the value of the "firstname" field var firstNameField = formDocument.Form.FindFormField("firstname"); // Read the value of the "lastname" field var lastNameField = formDocument.Form.FindFormField("lastname");
' Step 1. Creating a PDF with editable forms from HTML using form and input tags Const formHtml As String = " <html> <body> <h2>Editable PDF Form</h2> <form> First name: <br> <input type='text' name='firstname' value=''> <br> Last name: <br> <input type='text' name='lastname' value=''> </form> </body> </html>" ' Instantiate Renderer Dim renderer = New ChromePdfRenderer() renderer.RenderingOptions.CreatePdfFormsFromHtml = True renderer.RenderHtmlAsPdf(formHtml).SaveAs("BasicForm.pdf") ' Step 2. Reading and Writing PDF form values. Dim formDocument = PdfDocument.FromFile("BasicForm.pdf") ' Read the value of the "firstname" field Dim firstNameField = formDocument.Form.FindFormField("firstname") ' Read the value of the "lastname" field Dim lastNameField = formDocument.Form.FindFormField("lastname")
$vbLabelText   $csharpLabel

Um das PDF-Formularbeispiel auf unserer Seite mit Codebeispielen zu sehen, besuchen Sie bitte hier.

Vorhandene Formulare ausfüllen

Mit IronPDF können Sie ganz einfach auf alle vorhandenen Formularfelder in einer PDF-Datei zugreifen und sie für eine erneute Speicherung ausfüllen:

:path=/static-assets/pdf/content-code-examples/tutorials/csharp-edit-pdf-complete-28.cs
var formDocument = PdfDocument.FromFile("BasicForm.pdf"); // Set and Read the value of the "firstname" field var firstNameField = formDocument.Form.FindFormField("firstname"); firstNameField.Value = "Minnie"; Console.WriteLine("FirstNameField value: {0}", firstNameField.Value); // Set and Read the value of the "lastname" field var lastNameField = formDocument.Form.FindFormField("lastname"); lastNameField.Value = "Mouse"; Console.WriteLine("LastNameField value: {0}", lastNameField.Value); formDocument.SaveAs("FilledForm.pdf");
Dim formDocument = PdfDocument.FromFile("BasicForm.pdf") ' Set and Read the value of the "firstname" field Dim firstNameField = formDocument.Form.FindFormField("firstname") firstNameField.Value = "Minnie" Console.WriteLine("FirstNameField value: {0}", firstNameField.Value) ' Set and Read the value of the "lastname" field Dim lastNameField = formDocument.Form.FindFormField("lastname") lastNameField.Value = "Mouse" Console.WriteLine("LastNameField value: {0}", lastNameField.Value) formDocument.SaveAs("FilledForm.pdf")
$vbLabelText   $csharpLabel

Um das PDF-Formularbeispiel auf unserer Seite mit Codebeispielen zu sehen, besuchen Sie bitte hier.

Schlussfolgerung

Die obige Liste von Beispielen zeigt, dass IronPDF über Schlüsselfunktionen verfügt, die bei der Bearbeitung von PDFs sofort einsatzbereit sind.

Wenn Sie eine Funktion anfordern möchten oder allgemeine Fragen zu IronPDF oder Lizenzen haben, wenden Sie sich bitte an unser Support-Team. Wir sind Ihnen gerne behilflich.

Chaknith Bin
Software-Ingenieur
Chaknith arbeitet an IronXL und IronBarcode. Er hat tiefgehende Expertise in C# und .NET und hilft, die Software zu verbessern und Kunden zu unterstützen. Seine Erkenntnisse aus Benutzerinteraktionen tragen zu besseren Produkten, Dokumentation und einem insgesamt besseren Erlebnis bei.