A Developer's Guide to Digitally Signing PDFs with C
Bu kapsamli rehber, C# geliştiricilerine IronPDF kullanarak PDF'leri dijital olarak imzalamayi gösterir, sertifika tabanli imzalar, görsel damgalar ve etkileşimli form alanlarini kapsayarak dokümanin geçerliliği ve güvenliğini sağlar.
PDF belgeye isigin eklenmesi, birçok uygulamada yaygın bir gereksinimdir, ancak "imzalamak" farklı anlamlara gelebilir. Bazilari icin, guvenlik sertifikasi kullanarak kurcalanamaz bir dijital imza uygulamak anlamina gelir. Baska insanlar içinse bu, belgenin üzerine bir görsel, el yazisi ile imzalanmıs bir imza resmi damgalamayı ya da kullanıcıların elektronik olarak imzalayabilmesi için etkileşimli bir form alanı eklemeyi ifade edebilir.
Bu rehber, IronPDF for .NET kutuphanesini kullanarak tüm bu görevlerin nasıl başarıyla gerçekleştirileceğini C# geliştiricileri için kapsamlı bir yürüyüş sağlar. PDF belgelerinizin özgün, güvenli ve profesyonel olmasını sağlayarak, güvenli bir X509Certificate2 dijital imzadan, grafik imzaların damgalanmasına ve etkileşimli imza alanları oluşturulmasına kadar her şeyi ele alacağız.
Hızlı Başlangıç: IronPDF Kullanarak PDF'yi Kolaylıkla Dijital Olarak İmzala
IronPDF ile PDF belgelerinizi dijital olarak imzalamak için basit, anlaşılır bir süreç kullanarak hızlıca başlayın. Bu örnek, bir PDF dosyasını doğrulamak ve imzalamak için bir .pfx sertifikasını nasıl kullanacağınızı, belge bütünlüğü ve özgünlüğünü garanti etmek için gösterir. Dijital imzalara sorunsuz bir şekilde uygulamanıza entegre etmek için bu adımları izleyin.
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPdf yükleyin
PM > Install-Package IronPdf -
Bu kod parçasını kopyalayıp çalıştırın.
new IronPdf.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronPDF kullanmaya başlayın ücretsiz deneme ile
Minimal Is Akisi (5 adimda)
- IronPDF kutuphanesini .NET için yükleyin.
- Apply a digital signature using an `X509Certificate2` object.
- Dijital imzayı temsil etmek için bir görsel resim ekleyin.
- Bir PDF dosyasına grafiksel ya da el yazisi bir imza damgalayın.
- Elektronik imza için etkileşimli bir imza form alani ekleyin.
Sertifika ile PDF'ye Dijital İmza Nasıl Uygularım?
Bir PDF belgesine dijital imza uygulayarak belgenin özgünlüğünü ve bütünlüğünü sağlamak için dijital sertifika dosyası (örneğin, .pfx veya .p12) kullanabilirsiniz. Bu süreç, belgenin imzalandiğindan beri değişmediğini doğrular. Dijital imzalama yeteneklerinin tam bir görünümü için, kapsamlı dijital imzalar rehberimizi keşfedin.
IronPDF bu amaç için basit bir API sağlar, dijital imza uygulamak için birden çok yolu destekler. Bu işlevselliğin temelinde, sertifikayı ve imzayla ilgili tüm ilişkili metaveriyi kapsayan PdfSignature sınıfı vardır.
| Imzalama Yöntemi | Açıklama |
|---|---|
Sign |
Oluşturduğunuz ve yapılandırdığınız PdfSignature nesnesi ile bir PDF'yi imzalar. |
SignWithFile |
Diskte bulunan bir dijital imza sertifika dosyası (.pfx veya .p12) kullanarak PDF'yi imzalar. |
SignWithStore |
Bilgisayarınızın sertifika deposundan, iz parmağı ID'siyle tanımlanan bir dijital imza ile bir PDF imzalar. |
Bir X509Certificate2 Nesnesi Kullanarak
Maksimum kontrol için, sertifika dosyanızdan bir X509Certificate2 nesnesi oluşturabilirsiniz. IronPDF, dijital imza uygulaması için sağlam ve güvenli bir yöntem sağlayarak, tamamen X509Certificate2 standardına uygundur. Sertifika nesnesini oluştururken, temel kriptografik API'ler tarafından gereksinim duyulduğu için X509KeyStorageFlags ayarının Exportable olarak ayarlandığından emin olun. Kod deposumuzda pratik dijital imzalar örneklerine göz atın.
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")
Yukarıdaki kod önce basit bir PDF oluşturur. Daha sonra, bir .pfx sertifika dosyasını bir X509Certificate2 nesnesine yükler. Bu dijital kimliği temsil eden nesne, PdfSignature yapıcısına geçilir. Son olarak, pdf.Sign metodu, belgeyi kaydetmeden önce bu imzayı belgeye uygular. For more information on the X509Certificate2 class, you can refer to the official Microsoft documentation.
Bir Dijital İmzaya Ayrıntılı Detaylar Ekleme
Bir dijital imza sadece sertifikayla sınırlı olmayabilir; İmzayla ilgili bağlam sağlamak için zengin metadata yerleştirebilirsiniz. Bu, imzalama yeri, nedeni, iletişim bilgileri ve güvenilir bir otoriteden gelen güvenli bir zaman damgasını içerir. Ek belge özellikleri için metadata ayarlayın ve düzenleyin.
Bu detayların eklenmesi, belgenin denetim izini geliştirir ve doğrulayıcılara değerli bilgiler sağlar. IronPDF, modern SHA256 ve SHA512 karma algoritmalarını kullanan zaman damgalama sunucularını da destekler.
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")
İmza sertifikasi sistemin güvenilen mağazasında değilse, bazı PDF görüntüleyicilerde bir uyarı simgesi fark edebilirsiniz. Yeşil onay işareti almak için, sertifikanın görüntüleyicinin güvenilen kimliklerine eklenmesi gerekir.
Bir Dijital İmzanın Görsel Temsilini Nasıl Eklerim?
Bir dijital imza PDF içerisine kriptografik olarak yerleştirilmiş olsa da, sayfada görsel bir temsilin olması genellikle faydalıdır. Bu, şirket logosu, el yazısı imza resmi veya başka grafikler olabilir. IronPDF, bir PdfSignature nesnesine resim eklemeyi kolaylaştırır.
Bir dosyadan veya bir akıştan bir resim yükleyebilir ve PDF'nin herhangi bir sayfasına kesin bir şekilde konumlandırabilirsiniz. Desteklenen resim formatları PNG, JPEG, GIF, BMP, TIFF ve WebP içerir. Bu teknik, PDF belgelerine metin ve resim damgalamaya benzer.
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")
Bu kod, dijital imzaya görsel bir bileşen eklemenin üç eş değer yolunu gösterir. Diskte veya bellekte bir resminiz varsa, bu imzalama sürecinin bir parçası olarak kolayca PDF'ye damgalayabilirsiniz. Bu, görünmez kriptografik güvenlik ile görünür belge onayı arasındaki boşluğu kapatır.
İmzalandıktan Sonra Belge İzinlerini Nasıl Kontrol Ederim?
Bir belgeyi imzaladığınızda, sonrasında hangi değişikliklerin, varsa, izinli olacağına karar vermek isteyebilirsiniz. Örneğin, belgeyi tamamen kilitlemek veya sadece kullanıcıların form alanlarını doldurmasına izin vermek isteyebilirsiniz. IronPDF, bu izinleri SignaturePermissions numaralandırmasını kullanarak ayarlamanıza izin verir. PDF şifreleri ve izinleri ayarlama rehberimize bakarak daha gelişmiş izin kontrolü için.
İmza izinlerini ayarlamak, bir belgenin yaşam döngüsünü yönetmenin önemli bir parçasıdır. Belgenin imzanız uygulandıktan sonra kurallarınıza uygun olarak bütünlüğünü korumasını sağlar. Bir kullanıcı izin verilmeyen bir işlem gerçekleştirirse, imza geçersiz hale gelir.
| `SignaturePermissions` Üyesi | Tanım |
|---|---|
| `NoChangesAllowed` | Herhangi bir türde değişikliğe izin verilmez. Belge etkili bir şekilde kilitlenmiştir. |
| `FormFillingAllowed` | Yalnızca mevcut form alanlarını doldurma ve imzalama izinlidir. |
| `AnnotationsAndFormFillingAllowed` | Form doldurma, imzalama ve açıklamaları oluşturma veya değiştirme izni verir. |
Belirli bir PDF Revizyonunu Kaydetme ve İmzalama
PDF'ler, bir versiyon kontrol sistemi gibi değişikliklerin bir geçmişini depolayabilir. Bu, artımlı kaydetme olarak bilinir. Bir PDF'yi imzaladığınızda, imza belgenin belirli bir revizyonuna uygulanır. Bu, bir belgenin birden fazla onay aşamasından geçtiği iş akışları için çok önemlidir. Ayrıntılı rehberimizde PDF revizyon geçmişi yönetimi hakkında daha fazla bilgi edinin.
Aşağıdaki örnekte, bir PDF yüklüyoruz, düzenlemeler yapıyoruz ve ardından mevcut revizyonu imzalıyoruz, gelecekteki değişiklik olarak yalnızca form doldurmayı sağlıyoruz. Dosyayı kaydetmeden önce belgelerin geçmişine geçerli durumu işlemek için SaveAsRevision kullanıyoruz.
using IronPdf.Signing;
// Load a PDF file with change tracking enabled.
// This enables incremental save functionality for revision management
var pdf = PdfDocument.FromFile("annual_census.pdf", ChangeTrackingModes.EnableChangeTracking);
// Placeholder for edits: You might add text, fill forms, or add annotations here.
// For example: pdf.Annotations.Add(new TextAnnotation(...));
// Or: pdf.Form["fieldName"].Value = "New Value";
// Sign the current state of the document using SignWithFile for convenience.
// We set permissions to allow further signatures and form filling.
pdf.SignWithFile(
"assets/IronSignature.p12",
"password",
SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed);
// Save the current state as a distinct revision within the PDF's history.
// This creates a snapshot that can be referenced later
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
// Save the final PDF with its full revision history to a new file.
pdfWithRevision.SaveAs("annual_census_signed.pdf");
using IronPdf.Signing;
// Load a PDF file with change tracking enabled.
// This enables incremental save functionality for revision management
var pdf = PdfDocument.FromFile("annual_census.pdf", ChangeTrackingModes.EnableChangeTracking);
// Placeholder for edits: You might add text, fill forms, or add annotations here.
// For example: pdf.Annotations.Add(new TextAnnotation(...));
// Or: pdf.Form["fieldName"].Value = "New Value";
// Sign the current state of the document using SignWithFile for convenience.
// We set permissions to allow further signatures and form filling.
pdf.SignWithFile(
"assets/IronSignature.p12",
"password",
SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed);
// Save the current state as a distinct revision within the PDF's history.
// This creates a snapshot that can be referenced later
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
// Save the final PDF with its full revision history to a new file.
pdfWithRevision.SaveAs("annual_census_signed.pdf");
Imports IronPdf.Signing
' Load a PDF file with change tracking enabled.
' This enables incremental save functionality for revision management
Dim pdf = PdfDocument.FromFile("annual_census.pdf", ChangeTrackingModes.EnableChangeTracking)
' Placeholder for edits: You might add text, fill forms, or add annotations here.
' For example: pdf.Annotations.Add(New TextAnnotation(...))
' Or: pdf.Form("fieldName").Value = "New Value"
' Sign the current state of the document using SignWithFile for convenience.
' We set permissions to allow further signatures and form filling.
pdf.SignWithFile(
"assets/IronSignature.p12",
"password",
SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed)
' Save the current state as a distinct revision within the PDF's history.
' This creates a snapshot that can be referenced later
Dim pdfWithRevision As PdfDocument = pdf.SaveAsRevision()
' Save the final PDF with its full revision history to a new file.
pdfWithRevision.SaveAs("annual_census_signed.pdf")
Artımlı kaydetmeleri anlamak, gelişmiş PDF iş akışlarının anahtarıdır. Basit bir görüntüleyici yalnızca en son sürümü gösterebilirken, Adobe Acrobat gibi bir araç tüm revizyon geçmişini göstererek kimin hangi sürümü imzaladığını ve imzalar arasındaki değişiklikleri gösterebilir. IronPDF, bu süreç üzerinde tam programatik kontrol sağlar.
Yüksek güvenlik ve uyumluluk gerektiren karmaşık belge iş akışlarını yöneten işletmeler için kapsamlı bir çözüm gerekebilir. Iron Software, imzalama ve manipülasyon için IronPDF ile birlikte geniş bir belge işleme görev yelpazesi için diğer kütüphaneleri içeren, tek seferlik bir ödeme karşılığında sunulan Iron Suite sunmaktadır.
Revizyonlarda İmzaları Nasıl Yönetebilir ve Doğrulatabilirim?
Bir PDF belgesine çeşitli revizyonlarında birden fazla imza uygulanabilir. IronPDF, bu geçmişi etkili bir şekilde yönetmek için araçlar sunar.
- Önceki Sürüme Geri Dön: Belgeyi
GetRevisionyöntemini kullanarak önceki bir duruma döndürebilirsiniz. Bu, o revizyondan sonra yapılan tüm değişiklikleri ve imzaları siler. - Tüm İmzaları Doğrula:
VerifySignaturesmetodu, belgenin tüm sürümlerindeki tüm imzaların geçerliliğini kontrol eder. Her imza geçerli ise ve yetkisiz bir değişiklik yapılmamışsa yalnızcatruedöner. - İmzaları Kaldır:
RemoveSignaturesmetodu, belgenin her sürümündeki tüm dijital imzaları kaldırarak temiz, imzasız bir sürüm oluşturur.
// 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")
El Yazısı İmzasını Bir PDF'ye Nasıl Damgalarım?
Bazen dijital bir imzanın kriptografik güvenliğine ihtiyaçınız olmaz ancak taranmış bir el yazısı imzası gibi görsel bir elektronik imza uygulamak istersiniz. Bu genellikle damgalama olarak adlandırılır. IronPDF bunu Watermark veya Stamp özelliklerini kullanarak yapabilir. Daha gelişmiş filigran seçenekleri için, özelleştirilmiş filigranlar rehberimizi keşfedin.
Örnek fatura PDF'i ve el yazısıyla imzalanmış bir .png görüntüsüyle başlayalım.
İmza damgalanmadan önceki orijinal fatura PDF'si.
Uygulayacağımız imza resmi işte burada:
Örnek el yazısı imza resmi.
Aşağıdaki kod, bu resmi PDF'in sağ alt köşesine damgalamak için Watermark özelliğini kullanır.
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")
Damgalanmış PDF Sonucu Nasıl Görünür?
Kodu çalıştırdıktan sonra, imza resmi belgeye damgalanır, görünümde imzalı bir fatura oluşturur.
İmzanın sağ alt köşeye damgalandığı nihai PDF.
PDF'ye Etkileşimli İmza Alanı Nasıl Eklerim?
Adobe Acrobat gibi bir PDF görüntüleyicisinde son kullanıcı tarafından imzalanması gereken belgeler için etkileşimli imza form alanı ekleyebilirsiniz. Bu, kullanıcının kendi dijital imzasını uygulamasını isteyen tıklanabilir bir alan oluşturur. PDF formları hakkında eksiksiz bir rehber için PDF formları oluşturma eğitimizmi görün.
Bir SignatureFormField oluşturup, PDF'in form koleksiyonuna ekleyebilirsiniz. Sayfada yerini ve boyutunu kesin olarak kontrol edebilirsiniz. Bu, birden fazla imza gerektiren belgeler veya harici taraflardan imza toplamanız gerektiğinde özellikle faydalıdır.
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")
Bir kullanıcı bu PDF'yi açtığında, kendi dijital kimliğini kullanarak imzalama işlemini tamamlamasını sağlayan bir tıklanabilir alan görürler. Etkileşimli formlar oluşturma ve yönetme hakkında daha fazla bilgi edinebilirsiniz PDF formları oluşturma rehberimizden.
Programatik olarak PDF belgesine eklenmiş imzasız, etkileşimli imza alanı.
Doğrulanmış İmzadan İmzalayan Adını Nasıl Alırım?
Bir imzayı imzalayan sertifika sahibinin ortak adını elde etmek için, VerifiedSignature sınıfını SignerName özelliğine erişmek için kullanabiliriz. Bunu gerçekleştirmeyi gösteren bir kod parçacığı aşağıda bulunmaktadır.
: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)
İmzalı PDF dosyası içe aktarıldıktan sonra, rapordaki VerifiedSignature nesnelerinin listesini almak için GetVerifiedSignatures yöntemini kullanır ve her imza için SignerName yazdırırız.
Bu değerin, sertifikanın Subject Bilinmiş Adı (SubjectDN) alanından çıkarıldığını ve CN alanı mevcut olmadığında null döneceğini lütfen unutmayın.
IronPDF ile PDF İmzalamada Sonraki Adımlar Nelerdir?
Bu rehber IronPDF'nin güçlü ve esnek PDF imzalama yeteneklerini göstermiştir. İster detaylı meta verilerle güvenli dijital imzalar uygulayın, belge revizyonlarını yönetin, görsel imzaları damgalayın, ister etkileşimli formlar oluşturun, IronPDF, işi yapmak için kapsamlı ve geliştirici dostu bir API sunar.
Keşfetmeye devam etmek için, IronPDF kütüphanesini .NET için indirip, projelerinizde tüm özellikleri test etmek için bir ücretsiz deneme lisansı alın. Açıklamaları ekleme ve form alanlarıyla çalışma dahil olmak üzere daha gelişmiş belge işleme teknikleri için kapsamlı belgelerimize ve öğretici yazılarımıza göz atın.
Başka neler yapabileceğinizi görmek için hazır mısınız? Eğitim sayfamıza buradan göz atın: PDF'leri İmzala ve Güvene Al
Sıkça Sorulan Sorular
C#'ta bir sertifika kullanarak bir PDF'yi nasıl dijital olarak imzalarım?
IronPDF ile PdfSignature sınıfını kullanarak yalnızca bir satır kodla PDF'yi dijital olarak imzalayabilirsiniz. Yeni bir PdfSignature nesnesini sertifika dosyanız (.pfx veya .p12) ve şifrenizle oluşturmanız ve sonra SignPdfFile() yöntemini çağırmanız yeterli. Örneğin: new IronPdf.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"). Bu işlem, belgenin kimliğini doğrulamak için X509Certificate2 kullanarak manipülasyona karşı korumalı bir dijital imza uygular.
Hangi tür PDF imzaları destekleniyor?
IronPDF, PDF için üç ana imza türünü destekler: 1) X509Certificate2 sertifikalarını kullanarak kimlik doğrulama ve manipülasyon önleme amaçlı dijital imzalar, 2) Belgelere grafiksel veya el yazısı imza resimleri ekleyen görsel imza damgaları ve 3) Kullanıcıların PDF'leri elektronik olarak imzalamasına olanak tanıyan etkileşimli imza form alanları. Her tür, belge güvenliği ve iş akışı gereksinimleri için farklı amaçlara hizmet eder.
Dijital imzalamada hangi sertifika formatları kullanılabilir?
IronPDF, .pfx (Kişisel Bilgi Değişimi) ve .p12 dosyaları gibi yaygın dijital sertifika formatlarını destekler. Bu sertifika dosyaları, dijital imzalama için gereken hem açık anahtarı hem de özel anahtarı içerir. IronPDF'deki PdfSignature sınıfı, sertifika dosyalarınızı yükleme ve yönetme konusunda esneklik sağlayarak her türlü X509Certificate2 nesnesiyle çalışabilir.
Dijital imzama görsel bir temsil ekleyebilir miyim?
Evet, IronPDF dijital imzalarınıza görsel öğeler eklemenize olanak tanır. Bir grafiksel temsil 포함 연식 veya şirket logosu gibi bir el yazısı imzası görüntüsü veya özel bir damga ekleyebilirsiniz. Bu, imzalanmış dokümanların güvenli ve profesyonel bir şekilde sunulmasını sağlayarak dijital sertifikaların güvenliğini vizyol onayı ile birleştirir.
Kullanıcıların elektronik olarak imzalayabilmesi için etkileşimli bir imza alanı nasıl oluştururum?
IronPDF, PDF belgelerine etkileşimli imza form alanları eklemenizi sağlar. Bu alanlar, kullanıcıların imza imzalarını tıklayıp çizmelerine veya bir imza görüntüsü yüklemelerine olanak tanır. Bu özellik, sözleşmeler ya da çeşitli tarafların imzalaması gereken formlar gibi imza toplama gerektiren belgeler oluşturmak için mükemmeldir.
Bir PDF'yi imzalamak belge bütünlüğünü sağlar mı?
Evet, IronPDF ve X509Certificate2 kullanarak bir PDF'yi dijital olarak imzaladığınızda, belge bütünlüğünü sağlamak için manipülasyona karşı korumalı bir mühür oluşturursunuz. Dijital imza, belgenin imzalandıktan sonra değiştirilmediğini garanti eder. İmzalandıktan sonraki herhangi bir PDF değişikliği imzayı geçersiz kılar ve alıcıları belgenin zarar görmüş olabileceği konusunda uyarır.

