A Developer's Guide to Digitally Signing PDFs with C
Ten kompleksowy przewodnik pokazuje programistom C#, jak cyfrowo podpisywać pliki PDF za pomocą IronPDF, obejmując podpisy oparte na certyfikatach, pieczęcie wizualne i interaktywne pola formularzy w celu zapewnienia autentyczności i bezpieczeństwa dokumentów.
Dodanie podpisu do dokumentu PDF jest częstym wymaganiem w wielu aplikacjach, ale "podpisywanie" może oznaczać różne rzeczy. Dla niektórych chodzi o zastosowanie niepodrabialnego podpisu cyfrowego przy użyciu certyfikatu bezpieczeństwa. Dla innych może to oznaczać umieszczenie na dokumencie obrazu wizualnego, odręcznego podpisu lub dodanie interaktywnego pola formularza, w którym użytkownicy mogą złożyć podpis elektroniczny.
Niniejszy przewodnik zawiera kompleksowy opis dla programistów C# dotyczący sposobu realizacji wszystkich tych zadań przy użyciu biblioteki IronPDF for .NET. Omówimy wszystko, od stosowania bezpiecznego podpisu cyfrowego X509Certificate2 po stemplowanie podpisów graficznych i tworzenie interaktywnych pól podpisów, zapewniając autentyczność, bezpieczeństwo i profesjonalizm dokumentów PDF.
Szybki start: Łatwe podpisywanie plików PDF cyfrowo za pomocą IronPDF
Szybko rozpocznij pracę z IronPDF, aby podpisywać cyfrowo dokumenty PDF za pomocą prostego i przejrzystego procesu. Ten przykład pokazuje, jak użyć certyfikatu .pfx do uwierzytelnienia i podpisania pliku PDF, zapewniając integralność i autentyczność dokumentu. Wykonaj poniższe kroki, aby płynnie zintegrować podpis cyfrowy z Twoją aplikacją.
-
Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf -
Skopiuj i uruchom ten fragment kodu.
new IronPdf.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
Minimalny przebieg pracy (5 kroków)
- Zainstaluj bibliotekę IronPDF for .NET.
- Zastosuj podpis cyfrowy przy użyciu obiektu
X509Certificate2obiektu. - Dodaj obrazek przedstawiający podpis cyfrowy.
- Umieść podpis graficzny lub odręczny na pliku PDF.
- Dodaj interaktywne pole formularza podpisu do podpisywania elektronicznego.
Jak zastosować podpis cyfrowy do pliku PDF za pomocą certyfikatu?
Można zastosować podpis cyfrowy do dokumentu PDF przy użyciu pliku certyfikatu cyfrowego (takiego jak .pfx lub .p12), aby zagwarantować autentyczność i integralność dokumentu. Proces ten gwarantuje, że dokument nie został zmieniony od momentu jego podpisania. Aby uzyskać pełny przegląd możliwości podpisów cyfrowych, zapoznaj się z naszym kompleksowym przewodnikiem po podpisach cyfrowych.
IronPDF udostępnia w tym celu proste API, obsługujące wiele sposobów stosowania podpisu cyfrowego. Rdzeniem tej funkcjonalności jest klasa PdfSignature, która hermetyzuje certyfikat i wszystkie powiązane metadane podpisu.
| Metoda podpisywania | Opis |
|---|---|
Zgłoś |
Podpisuje plik PDF za pomocą obiektu `PdfSignature`, który użytkownik tworzy i konfiguruje. |
SignWithFile |
Podpisuje plik PDF przy użyciu pliku certyfikatu podpisu cyfrowego (.pfx lub .p12) znajdującego się na dysku. |
SignWithStore |
Podpisuje plik PDF podpisem cyfrowym z magazynu certyfikatów komputera, identyfikowanym na podstawie identyfikatora odcisku palca. |
Korzystanie z obiektu X509Certificate2
Aby uzyskać maksymalną kontrolę, można utworzyć obiekt X509Certificate2 na podstawie pliku certyfikatu. IronPDF jest w pełni zgodny ze standardem X509Certificate2, zapewniając solidną i bezpieczną metodę wdrażania podpisu cyfrowego. Podczas tworzenia obiektu certyfikatu upewnij się, że X509KeyStorageFlags jest ustawione na Exportable, ponieważ jest to wymagane przez podstawowe interfejsy API kryptograficzne. Zapoznaj się z praktycznymi przykładami podpisów cyfrowych w naszym repozytorium kodu.
Install-Package IronPdf
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create a new PDF from an HTML string for demonstration.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>");
// Load the certificate from a .pfx file with its password.
// The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
var cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create a PdfSignature object using the loaded certificate.
var signature = new PdfSignature(cert);
// Apply the signature to the PDF document.
pdf.Sign(signature);
// Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create a new PDF from an HTML string for demonstration.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>");
// Load the certificate from a .pfx file with its password.
// The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
var cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create a PdfSignature object using the loaded certificate.
var signature = new PdfSignature(cert);
// Apply the signature to the PDF document.
pdf.Sign(signature);
// Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
' Create a new PDF from an HTML string for demonstration.
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>")
' Load the certificate from a .pfx file with its password.
' The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
Private cert = New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
' Create a PdfSignature object using the loaded certificate.
Private signature = New PdfSignature(cert)
' Apply the signature to the PDF document.
pdf.Sign(signature)
' Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf")
Powyższy kod najpierw generuje prosty plik PDF. Następnie ładuje plik certyfikatu .pfx do obiektu X509Certificate2. Ten obiekt, który reprezentuje tożsamość cyfrową, jest przekazywany do konstruktora PdfSignature. Na koniec metoda pdf.Sign stosuje ten podpis do dokumentu przed jego zapisaniem. For more information on the X509Certificate2 class, you can refer to the official Microsoft documentation.
Dodawanie szczegółowych informacji do podpisu cyfrowego
Podpis cyfrowy może zawierać więcej niż tylko certyfikat; można osadzić bogate metadane, aby zapewnić kontekst dotyczący podpisu. Obejmuje to miejsce podpisania, powód, dane kontaktowe oraz bezpieczny znacznik czasu od zaufanego podmiotu. Można również ustawić i edytować metadane dla dodatkowych właściwości dokumentu.
Dodanie tych szczegółów poprawia ścieżkę audytu dokumentu i dostarcza weryfikatorom cennych informacji. IronPDF obsługuje również serwery znakowania czasem, które wykorzystują nowoczesne algorytmy skrótu SHA256 i SHA512.
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using System;
// Load an existing PDF document to be signed.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create a PdfSignature object directly from the certificate file and password.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Add detailed metadata to the signature for a comprehensive audit trail.
// These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now;
signature.SigningContact = "legal@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "Contractual Agreement";
// Add a secure timestamp from a trusted Time Stamp Authority (TSA).
// This provides cryptographic proof of the signing time.
signature.TimeStampUrl = new Uri("[http://timestamp.digicert.com](http://timestamp.digicert.com)");
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
// Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, new Rectangle(350, 750, 200, 100));
// Sign the PDF document with the configured signature object.
pdf.Sign(signature);
// Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf");
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using System;
// Load an existing PDF document to be signed.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create a PdfSignature object directly from the certificate file and password.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Add detailed metadata to the signature for a comprehensive audit trail.
// These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now;
signature.SigningContact = "legal@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "Contractual Agreement";
// Add a secure timestamp from a trusted Time Stamp Authority (TSA).
// This provides cryptographic proof of the signing time.
signature.TimeStampUrl = new Uri("[http://timestamp.digicert.com](http://timestamp.digicert.com)");
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
// Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, new Rectangle(350, 750, 200, 100));
// Sign the PDF document with the configured signature object.
pdf.Sign(signature);
// Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports IronSoftware.Drawing
Imports System
' Load an existing PDF document to be signed.
Dim pdf = PdfDocument.FromFile("invoice.pdf")
' Create a PdfSignature object directly from the certificate file and password.
Dim signature = New PdfSignature("IronSoftware.pfx", "123456")
' Add detailed metadata to the signature for a comprehensive audit trail.
' These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now
signature.SigningContact = "legal@ironsoftware.com"
signature.SigningLocation = "Chicago, USA"
signature.SigningReason = "Contractual Agreement"
' Add a secure timestamp from a trusted Time Stamp Authority (TSA).
' This provides cryptographic proof of the signing time.
signature.TimeStampUrl = New Uri("http://timestamp.digicert.com")
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
' Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = New PdfSignatureImage("assets/visual-signature.png", 0, New Rectangle(350, 750, 200, 100))
' Sign the PDF document with the configured signature object.
pdf.Sign(signature)
' Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf")
W niektórych przeglądarkach plików PDF może pojawić się ikona ostrzegawcza, jeśli certyfikat podpisu nie znajduje się w zaufanym magazynie systemu. Aby uzyskać zielony znacznik wyboru, certyfikat musi zostać dodany do zaufanych identyfikatorów przeglądarki.
Jak mogę dodać wizualną reprezentację do podpisu cyfrowego?
Chociaż podpis cyfrowy jest kryptograficznie osadzony w pliku PDF, często przydatne jest umieszczenie jego wizualnej reprezentacji na stronie. Może to być logo firmy, obraz odręcznego podpisu lub inna grafika. IronPDF ułatwia dodawanie obrazu do obiektu PdfSignature.
Można załadować obraz z pliku lub strumienia i precyzyjnie umieścić go na dowolnej stronie pliku PDF. Obsługiwane formaty obrazów to PNG, JPEG, GIF, BMP, TIFF i WebP. Technika ta przypomina umieszczanie tekstu i obrazów na dokumentach PDF.
using IronPdf.Signing;
using IronSoftware.Drawing;
// This example demonstrates various ways to add a visual image to a PDF signature.
// Create a PdfSignature object.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Define the position and size for the signature image on the first page (index 0).
// Rectangle parameters: x position, y position, width, height
var signatureRectangle = new Rectangle(350, 750, 200, 100);
// Option 1: Set the SignatureImage property directly.
// This is the most straightforward approach
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle);
// Option 2: Use the LoadSignatureImageFromFile method.
// This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle);
// Option 3: Load an image from a stream. This is useful for images generated in memory.
// Perfect for scenarios where images are retrieved from databases or web services
AnyBitmap image = AnyBitmap.FromFile("assets/visual-signature.png");
using (var imageStream = image.ToStream())
{
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle);
}
// After configuring the signature image, apply it to a PDF.
var pdf = PdfDocument.FromFile("invoice.pdf");
pdf.Sign(signature);
pdf.SaveAs("VisualSignature.pdf");
using IronPdf.Signing;
using IronSoftware.Drawing;
// This example demonstrates various ways to add a visual image to a PDF signature.
// Create a PdfSignature object.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Define the position and size for the signature image on the first page (index 0).
// Rectangle parameters: x position, y position, width, height
var signatureRectangle = new Rectangle(350, 750, 200, 100);
// Option 1: Set the SignatureImage property directly.
// This is the most straightforward approach
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle);
// Option 2: Use the LoadSignatureImageFromFile method.
// This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle);
// Option 3: Load an image from a stream. This is useful for images generated in memory.
// Perfect for scenarios where images are retrieved from databases or web services
AnyBitmap image = AnyBitmap.FromFile("assets/visual-signature.png");
using (var imageStream = image.ToStream())
{
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle);
}
// After configuring the signature image, apply it to a PDF.
var pdf = PdfDocument.FromFile("invoice.pdf");
pdf.Sign(signature);
pdf.SaveAs("VisualSignature.pdf");
Imports IronPdf.Signing
Imports IronSoftware.Drawing
' This example demonstrates various ways to add a visual image to a PDF signature.
' Create a PdfSignature object.
Dim signature As New PdfSignature("IronSoftware.pfx", "123456")
' Define the position and size for the signature image on the first page (index 0).
' Rectangle parameters: x position, y position, width, height
Dim signatureRectangle As New Rectangle(350, 750, 200, 100)
' Option 1: Set the SignatureImage property directly.
' This is the most straightforward approach
signature.SignatureImage = New PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle)
' Option 2: Use the LoadSignatureImageFromFile method.
' This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle)
' Option 3: Load an image from a stream. This is useful for images generated in memory.
' Perfect for scenarios where images are retrieved from databases or web services
Dim image As AnyBitmap = AnyBitmap.FromFile("assets/visual-signature.png")
Using imageStream = image.ToStream()
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle)
End Using
' After configuring the signature image, apply it to a PDF.
Dim pdf As PdfDocument = PdfDocument.FromFile("invoice.pdf")
pdf.Sign(signature)
pdf.SaveAs("VisualSignature.pdf")
Ten kod przedstawia trzy równoważne sposoby dodania elementu wizualnego do podpisu cyfrowego. Niezależnie od tego, czy obraz znajduje się na dysku, czy w pamięci, można go łatwo umieścić na pliku PDF w ramach procesu podpisywania. W ten sposób wypełnia się lukę między niewidocznym bezpieczeństwem kryptograficznym a widoczną procedurą zatwierdzania dokumentów.
Jak mogę kontrolować uprawnienia do dokumentów po podpisaniu?
Podpisując dokument, warto określić, jakie zmiany, jeśli w ogóle, są dozwolone po jego podpisaniu. Na przykład możesz chcieć całkowicie zablokować dokument lub zezwolić użytkownikom jedynie na wypełnianie pól formularza. IronPDF pozwala ustawić te uprawnienia za pomocą wyliczenia SignaturePermissions. Aby uzyskać informacje na temat bardziej zaawansowanej kontroli uprawnień, zapoznaj się z naszym przewodnikiem dotyczącym ustawiania haseł i uprawnień w plikach PDF.
Ustawianie uprawnień do podpisywania jest kluczowym elementem zarządzania cyklem życia dokumentu. Gwarantuje to zachowanie integralności dokumentu zgodnie z Twoimi zasadami po złożeniu podpisu. Jeśli użytkownik wykona niedozwoloną czynność, podpis zostanie unieważniony.
| `SignaturePermissions` Członek | Definicja |
|---|---|
| `NoChangesAllowed` | Nie zezwala się na żadne zmiany. Dokument jest praktycznie zablokowany. |
| `FormFillingAllowed` | Dozwolone jest jedynie wypełnienie istniejących pól formularza i złożenie podpisu. |
| `Adnotacje i wypełnianie formularzy dozwolone` | Umożliwia wypełnianie formularzy, podpisywanie oraz tworzenie lub modyfikowanie adnotacji. |
Zapisywanie i podpisywanie konkretnej wersji pliku PDF
Pliki PDF mogą przechowywać historię zmian, podobnie jak system kontroli wersji. Jest to znane jako zapis przyrostowy. Podpisanie pliku PDF powoduje, że podpis odnosi się do konkretnej wersji dokumentu. Ma to kluczowe znaczenie w przypadku procesów, w których dokument przechodzi przez wiele etapów zatwierdzania. Dowiedz się więcej o zarządzaniu historią zmian w plikach PDF w naszym szczegółowym przewodniku.
W poniższym przykładzie wczytujemy plik PDF, wprowadzamy zmiany, a następnie podpisujemy bieżącą wersję, zezwalając jedynie na wypełnianie formularzy jako przyszłą zmianę. Używamy SaveAsRevision, aby przed zapisaniem pliku zatwierdzić aktualny stan w historii dokumentu.
GetRevision
Zrozumienie zapisywania przyrostowego ma kluczowe znaczenie dla zaawansowanych procesów pracy z plikami PDF. Podczas gdy prosta przeglądarka może wyświetlać jedynie najnowszą wersję, narzędzie takie jak Adobe Acrobat pozwala ujawnić całą historię zmian, pokazując, kto podpisał daną wersję oraz jakie zmiany wprowadzono między podpisami. IronPDF zapewnia pełną kontrolę programową nad tym procesem.
W przypadku firm zarządzających złożonymi procesami obiegu dokumentów, które wymagają wysokiego poziomu bezpieczeństwa i zgodności z przepisami, może być potrzebne kompleksowe rozwiązanie. Iron Software oferuje pakiet Iron Suite, który obejmuje IronPDF do podpisywania i edycji dokumentów, a także inne biblioteki do szerokiego zakresu zadań związanych z przetwarzaniem dokumentów, dostępne za jednorazową opłatą.
Jak mogę zarządzać podpisami i weryfikować je w różnych wersjach?
Dokument PDF może zawierać wiele podpisów zastosowanych w różnych wersjach. IronPDF zapewnia narzędzia do efektywnego zarządzania tą historią.
- Powrót do poprzedniej wersji: Możesz przywrócić dokument do wcześniejszego stanu, używając metody
RollBackToRevision. Spowoduje to odrzucenie wszystkich zmian i podpisów dokonanych po tej wersji. - Sprawdź wszystkie podpisy: Metoda
VerifyAllSignaturessprawdza ważność wszystkich podpisów we wszystkich wersjach dokumentu. ZwracaSignatureStatus.Validtylko wtedy, gdy wszystkie podpisy są prawidłowe i nie wprowadzono żadnych nieautoryzowanych zmian. - Usuń podpisy: Metoda
RemoveSignaturesusunie wszystkie podpisy cyfrowe z każdej wersji dokumentu, tworząc czystą, niepodpisaną wersję.
// Load a PDF with a complex signature history.
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Verify all signatures across all revisions.
// This ensures document integrity throughout its entire history
bool allSignaturesValid = pdf.VerifySignatures();
Console.WriteLine($"All signatures are valid: {allSignaturesValid}");
// Roll back to the first revision (index 0).
// Useful for reviewing the original document state
if (pdf.RevisionCount > 1)
{
PdfDocument firstRevision = pdf.GetRevision(0);
firstRevision.SaveAs("report_first_revision.pdf");
}
// Create a completely unsigned version of the document.
// This removes all digital signatures while preserving content
pdf.RemoveSignatures();
pdf.SaveAs("report_unsigned.pdf");
// Load a PDF with a complex signature history.
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Verify all signatures across all revisions.
// This ensures document integrity throughout its entire history
bool allSignaturesValid = pdf.VerifySignatures();
Console.WriteLine($"All signatures are valid: {allSignaturesValid}");
// Roll back to the first revision (index 0).
// Useful for reviewing the original document state
if (pdf.RevisionCount > 1)
{
PdfDocument firstRevision = pdf.GetRevision(0);
firstRevision.SaveAs("report_first_revision.pdf");
}
// Create a completely unsigned version of the document.
// This removes all digital signatures while preserving content
pdf.RemoveSignatures();
pdf.SaveAs("report_unsigned.pdf");
Imports System
' Load a PDF with a complex signature history.
Dim pdf = PdfDocument.FromFile("multi_signed_report.pdf")
' Verify all signatures across all revisions.
' This ensures document integrity throughout its entire history
Dim allSignaturesValid As Boolean = pdf.VerifySignatures()
Console.WriteLine($"All signatures are valid: {allSignaturesValid}")
' Roll back to the first revision (index 0).
' Useful for reviewing the original document state
If pdf.RevisionCount > 1 Then
Dim firstRevision As PdfDocument = pdf.GetRevision(0)
firstRevision.SaveAs("report_first_revision.pdf")
End If
' Create a completely unsigned version of the document.
' This removes all digital signatures while preserving content
pdf.RemoveSignatures()
pdf.SaveAs("report_unsigned.pdf")
Jak umieścić odręczny podpis na pliku PDF?
Czasami nie potrzebujesz kryptograficznego zabezpieczenia podpisu cyfrowego, a po prostu chcesz zastosować wizualny podpis elektroniczny, taki jak zeskanowany podpis odręczny. Często nazywa się to stemplowaniem. IronPDF może to zrobić, korzystając z funkcji Watermark lub Stamp. Aby uzyskać dostęp do bardziej zaawansowanych opcji znaków wodnych, zapoznaj się z naszym przewodnikiem po niestandardowych znakach wodnych.
Zacznijmy od przykładowego pliku PDF z fakturą oraz obrazu .png przedstawiającego odręczny podpis.
VerifySignatures
Oryginalny plik PDF faktury przed złożeniem podpisu.
Oto obrazek podpisu, który zastosujemy:
Przykładowy obrazek odręcznego podpisu.
Poniższy kod wykorzystuje właściwość SignatureImage do umieszczenia tego obrazu w prawym dolnym rogu pliku PDF.
using IronPdf.Editing;
// Load the existing PDF document.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create an HtmlStamp containing our signature image.
// HtmlStamp allows us to position HTML content precisely on the page
var signatureStamp = new HtmlStamp("<img src='assets/signature.png'/>")
{
// Configure the stamp's position and appearance.
VerticalAlignment = VerticalAlignment.Bottom,
HorizontalAlignment = HorizontalAlignment.Right,
Margin = 10, // Add some space from the edge.
Opacity = 90 // Make it slightly transparent for a more authentic look.
};
// Apply the stamp to all pages of the PDF.
// You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp);
// Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf");
using IronPdf.Editing;
// Load the existing PDF document.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create an HtmlStamp containing our signature image.
// HtmlStamp allows us to position HTML content precisely on the page
var signatureStamp = new HtmlStamp("<img src='assets/signature.png'/>")
{
// Configure the stamp's position and appearance.
VerticalAlignment = VerticalAlignment.Bottom,
HorizontalAlignment = HorizontalAlignment.Right,
Margin = 10, // Add some space from the edge.
Opacity = 90 // Make it slightly transparent for a more authentic look.
};
// Apply the stamp to all pages of the PDF.
// You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp);
// Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf");
Imports IronPdf.Editing
' Load the existing PDF document.
Dim pdf = PdfDocument.FromFile("invoice.pdf")
' Create an HtmlStamp containing our signature image.
' HtmlStamp allows us to position HTML content precisely on the page
Dim signatureStamp = New HtmlStamp("<img src='assets/signature.png'/>") With {
' Configure the stamp's position and appearance.
.VerticalAlignment = VerticalAlignment.Bottom,
.HorizontalAlignment = HorizontalAlignment.Right,
.Margin = 10, ' Add some space from the edge.
.Opacity = 90 ' Make it slightly transparent for a more authentic look.
}
' Apply the stamp to all pages of the PDF.
' You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp)
' Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf")
Jak wygląda wynik w postaci pliku PDF z pieczęcią?
Po uruchomieniu kodu obraz podpisu zostaje umieszczony na dokumencie, tworząc wizualnie podpisaną fakturę.
Ostateczny plik PDF z obrazem odręcznego podpisu umieszczonym w prawym dolnym rogu.
Jak dodać interaktywne pole podpisu do pliku PDF?
W przypadku dokumentów, które muszą zostać podpisane przez użytkownika końcowego w przeglądarce plików PDF, takiej jak Adobe Acrobat, można dodać interaktywne pole formularza podpisu. Tworzy to pusty, klikalny obszar, który zachęca użytkownika do zastosowania własnego podpisu cyfrowego. Pełny przewodnik po formularzach PDF znajdziesz w naszym samouczku dotyczącym tworzenia formularzy PDF.
Możesz utworzyć SignatureFormField i dodać go do kolekcji formularzy pliku PDF. Masz precyzyjną kontrolę nad jego położeniem i rozmiarem na stronie. Jest to szczególnie przydatne w przypadku dokumentów wymagających wielu podpisów lub gdy konieczne jest zebranie podpisów od podmiotów zewnętrznych.
true``RemoveSignatures
using IronPdf.Forms;
using IronSoftware.Drawing;
// Create a new PDF to add the signature field to.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>");
// Define the properties for the signature form field.
string fieldName = "ClientSignature"; // Unique identifier for the field
int pageIndex = 0; // Add to the first page (zero-indexed)
var fieldRect = new Rectangle(50, 200, 300, 100); // Position: (x, y), Size: (width, height)
// Create the SignatureFormField object.
// This creates an interactive field that users can click to sign
var signatureField = new SignatureFormField(fieldName, pageIndex, fieldRect);
// Add the signature field to the PDF's form.
pdf.Form.Add(signatureField);
// Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf");
using IronPdf.Forms;
using IronSoftware.Drawing;
// Create a new PDF to add the signature field to.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>");
// Define the properties for the signature form field.
string fieldName = "ClientSignature"; // Unique identifier for the field
int pageIndex = 0; // Add to the first page (zero-indexed)
var fieldRect = new Rectangle(50, 200, 300, 100); // Position: (x, y), Size: (width, height)
// Create the SignatureFormField object.
// This creates an interactive field that users can click to sign
var signatureField = new SignatureFormField(fieldName, pageIndex, fieldRect);
// Add the signature field to the PDF's form.
pdf.Form.Add(signatureField);
// Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf");
Imports IronPdf.Forms
Imports IronSoftware.Drawing
' Create a new PDF to add the signature field to.
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>")
' Define the properties for the signature form field.
Dim fieldName As String = "ClientSignature" ' Unique identifier for the field
Dim pageIndex As Integer = 0 ' Add to the first page (zero-indexed)
Dim fieldRect As New Rectangle(50, 200, 300, 100) ' Position: (x, y), Size: (width, height)
' Create the SignatureFormField object.
' This creates an interactive field that users can click to sign
Dim signatureField As New SignatureFormField(fieldName, pageIndex, fieldRect)
' Add the signature field to the PDF's form.
pdf.Form.Add(signatureField)
' Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf")
Po otwarciu tego pliku PDF użytkownik zobaczy pole, w którym można kliknąć, co pozwoli mu zakończyć proces podpisywania przy użyciu własnego identyfikatora cyfrowego. Więcej informacji na temat tworzenia interaktywnych formularzy i zarządzania nimi można znaleźć w naszym poradniku dotyczącym tworzenia formularzy PDF.
Niepodpisane, interaktywne pole podpisu dodane programowo do dokumentu PDF.
Jak uzyskać nazwisko podpisującego z zweryfikowanych podpisów?
Aby uzyskać imię i nazwisko właściciela certyfikatu, który złożył podpis, możemy użyć klasy VerifiedSignature w celu uzyskania dostępu do właściwości SignerName. Poniżej znajduje się fragment kodu pokazujący, jak to osiągnąć.
:path=/static-assets/pdf/content-code-examples/how-to/signing-find-signer-name.cs
using IronPdf;
using System;
// Import the Signed PDF report
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Using GetVerifiedSignatures() obtain a list of `VerifiedSignature` objects from the PDF
pdf.GetVerifiedSignatures().ForEach(signature =>
{
// Print out the SignerName of each `VerifiedSignature` object
Console.WriteLine($"SignatureName: {signature.SignerName}");
});
Imports IronPdf
Imports System
' Import the Signed PDF report
Dim pdf = PdfDocument.FromFile("multi_signed_report.pdf")
' Using GetVerifiedSignatures() obtain a list of `VerifiedSignature` objects from the PDF
pdf.GetVerifiedSignatures().ForEach(Sub(signature)
' Print out the SignerName of each `VerifiedSignature` object
Console.WriteLine($"SignatureName: {signature.SignerName}")
End Sub)
Po zaimportowaniu podpisanego pliku PDF wykorzystujemy metodę GetSignatures(...), aby pobrać listę obiektów VerifiedSignature w raporcie i wydrukować SignerName dla każdego podpisu.
GetVerifiedSignatures``SignerName
Należy pamiętać, że wartość ta jest pobierana z pola Subject Distinguished Name (SubjectDN) certyfikatu i zwróci wartość null, jeśli pole CN nie istnieje.
Jakie są kolejne kroki w zakresie podpisywania plików PDF za pomocą IronPDF?
W niniejszym przewodniku zaprezentowano potężne i elastyczne możliwości IronPDF w zakresie podpisywania plików PDF. Niezależnie od tego, czy potrzebujesz stosować bezpieczne podpisy cyfrowe ze szczegółowymi metadanymi, zarządzać wersjami dokumentów, stemplować podpisy wizualne czy tworzyć interaktywne formularze, IronPDF zapewnia kompleksowy i przyjazny dla programistów interfejs API, który pozwoli Ci wykonać zadanie.
Aby dowiedzieć się więcej, możesz pobrać bibliotekę IronPDF for .NET i uzyskać bezplatną licencję probną, aby przetestować wszystkie jej funkcje w swoich projektach. Aby zapoznać się z bardziej zaawansowanymi technikami obróbki dokumentów, w tym dodawaniem adnotacji i pracą z polami formularzy, zapoznaj się z naszą obszerną dokumentacją i samouczkami.
Chcesz zobaczyć, co jeszcze możesz zrobić? Zapoznaj się z naszą stroną z samouczkami tutaj: Podpisywanie i zabezpieczanie plików PDF
Często Zadawane Pytania
Jak cyfrowo podpisać PDF przy użyciu certyfikatu w C#?
Z IronPDF możesz cyfrowo podpisać PDF za pomocą jednej linii kodu używając klasy PdfSignature. Po prostu stwórz nowy obiekt PdfSignature z plikiem certyfikatu (.pfx lub .p12) i hasłem, a następnie wywołaj metodę SignPdfFile(). Na przykład: new IronPdf.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"). To stosuje niezmienny podpis cyfrowy używając X509Certificate2, aby zapewnić autentyczność dokumentu.
Jakie typy podpisów PDF są obsługiwane?
IronPDF obsługuje trzy główne typy podpisów PDF: 1) podpisy cyfrowe używające certyfikatów X509Certificate2 do uwierzytelniania i zapobiegania zmianom, 2) wizualne odciski podpisów, które dodają obrazy podpisów graficznych lub odręcznych do dokumentów, i 3) interaktywne pola formularza podpisu, które pozwalają użytkownikom na elektroniczne podpisanie PDF-ów. Każdy typ służy różnym celom zabezpieczeń dokumentu i wymaganiom dotyczącym przepływu pracy.
Jakie formaty certyfikatów można używać do cyfrowego podpisywania?
IronPDF obsługuje popularne formaty cyfrowych certyfikatów, w tym pliki .pfx (Personal Information Exchange) i .p12. Te pliki certyfikatów zawierają zarówno klucz publiczny, jak i prywatny potrzebne do cyfrowego podpisywania. Klasa PdfSignature w IronPDF działa z każdym obiektem X509Certificate2, dając elastyczność w ładowaniu i zarządzaniu certyfikatami podpisywania.
Czy mogę dodać wizualne przedstawienie do mojego podpisu cyfrowego?
Tak, IronPDF pozwala dodać wizualne elementy do twoich podpisów cyfrowych. Możesz dołączyć graficzne przedstawienie takie jak obraz podpisu odręcznego, logo firmy, czy niestandardowy stempel obok podpisu kryptograficznego. To łączy bezpieczeństwo certyfikatów cyfrowych z wizualnym potwierdzeniem, sprawiając, że podpisane dokumenty są zarówno bezpieczne, jak i profesjonalnie prezentowane.
Jak stworzyć interaktywne pole podpisu, aby użytkownicy mogli podpisywać elektronicznie?
IronPDF umożliwia dodawanie interaktywnych pól formularza podpisu do dokumentów PDF. Te pola pozwalają użytkownikom na elektroniczne podpisać dokumenty poprzez kliknięcie i narysowanie ich podpisu lub przesłanie obrazu podpisu. Ta funkcja jest idealna do tworzenia dokumentów wymagających zbierania podpisów, takich jak kontrakty lub formularze, które muszą być podpisane przez wiele stron.
Czy podpisanie PDF zapewnia integralność dokumentu?
Tak, kiedy cyfrowo podpisujesz PDF używając IronPDF z X509Certificate2, tworzy on pieczęć niemożliwą do zmiany, która zapewnia integralność dokumentu. Podpis cyfrowy gwarantuje, że dokument nie został zmieniony od momentu jego podpisania. Jakiekolwiek modyfikacje PDF po podpisaniu unieważnią podpis, ostrzegając odbiorców, że dokument mógł zostać naruszony.

