PDFsharp PDF Belgelerini Dijital Olarak İmzala VS IronPDF (Kod Örneği)
Dijital imza, elektronik bir belgenin gerçekliğini ve bütünlüğünü doğrulayan matematiksel bir tekniktir. Çeşitli yargı alanlarında belgeleri dijital olarak imzalamak için bir elektronik imza görevi görür, büyük güvenlik ve yasal geçerlilik sağlar.
Dijital imzalar, yalnızca imzalayan tarafa bilinen özel bir anahtar kullanılarak oluşturulur. Bu özel anahtar, imzalandığında belgeye bağlı benzersiz bir dijital imza oluşturur. İmza, imzalayanın adı, e-posta adresi ve diğer kişisel bilgileri içerir. Dijital olarak imzalanmış bir belgenin gerçekliğini doğrulamak için alıcı, imzalayanın genel anahtarına erişim gerektirir. İmzanın meşruiyeti, genel anahtarla şifre çözülerek doğrulanır.
Bu eğitimde, PDFSharp ve IronPDF kullanarak PDF belgelere dijital imzalar eklemeyi karşılaştırıyoruz. Dijital imzalar, belge gerçekliğini doğrulamak için esastır ve PDF dosyaları, bu tür işlemler için popüler bir formattır.
PDFsharp, PDF oluşturma ve manipülasyonu için iyi bilinen açık kaynaklı bir kütüphanedir, IronPDF ise ek gelişmiş işlevsellikler sunan sağlam bir .NET PDF kütüphanesidir.
Bu kılavuz, özel anahtarla bir PDF belgeyi imzalamayı ve imzayı doğrulamayı kapsar, her iki kütüphane için örnek kaynak kodu ile birlikte.
Dijital İmzalar Neden Önemlidir?
Dijital imzalar, belge bütünlüğünü sağlar ve sağlam güvenlik sunar. Sıkça sözleşmeler, anlaşmalar ve diğer yasal belgeler için kullanılırlar.
Ana faydalar:
- Geleneksel imzalardan daha güvenli ve kurcalanmaya karşı dayanıklıdır.
- Elektronik olarak doğrulanır, manuel doğrulama çabalarını azaltır.
- Belgelerin dünya çapında uzaktan imzalanmasını sağlar.
- Geleneksel imzalara göre daha büyük güvence sunar.
PDFsharp Genel Bakış
PDFSharp, öncelikle PDF belgeleri oluşturma ve manipülasyonu için tasarlanmış bir açık kaynaklı C# kütüphanesidir. Basit PDF dosyaları oluşturma, mevcut belgeleri düzenleme ve grafik işlemleri gibi temel PDF görevleri için yaygın olarak kullanılır. Ancak, dijital imzalar gibi ileri düzey özellikler için yerel desteği sınırlıdır ve geliştiriciler genellikle BouncyCastle gibi üçüncü taraf kütüphanelere bu tür işlevleri entegre etmek için güvenirler. PDFsharp, MIT Lisansı altında açık kaynak olup, maliyetin ve esnekliğin öncelik olduğu projeler için iyi bir seçimdir.
Ana Özellikler
- MIT Lisansı altında açık kaynak ve ücretsiz.
- Temel PDF oluşturma ve düzenleme.
- Dijital imzalar için BouncyCastle gibi harici kütüphanelerle genişletilebilir.
- HTML'den PDF'e dönüştürme ve karmaşık form işleme gibi ileri düzey PDF özellikleri için kutudan çıktığı haliyle destek içermez.
IronPDF Genel Bakış

IronPDF, PDF'leri oluşturma, düzenleme ve manipüle etme için basit ve güçlü bir API sağlayan sağlam bir .NET PDF kütüphanesidir. Öne çıkan özelliklerinden biri, belgelerin otantikliğini doğrulamada önemli olan dijital imzaların kolayca uygulanabilmesidir. Dijital imzaların yanı sıra IronPDF, HTML'den PDF'e dönüştürme, filigran ekleme ve form işleme gibi ileri düzey işlevsellikleri destekler. Özellikle hızlı uygulama ve sağlam özelliklerin öncelikli olduğu ticari projelerde çalışan geliştiriciler için değerlidir.
Ana Özellikler
- Ücretli destekle ticari lisans ve ücretsiz deneme sunar.
- Dijital imzalama ve belge düzenleme için modern özelliklere sahip kullanımı kolay API.
- HTML'den PDF formatına dönüştürme, form işleme ve PDF ek açıklamaları (ek açıklama gibi) için yerleşik destek içerir.
- Zaman damgalama, görsel imza resimleri ve şifreleme gibi ileri düzey işlevselliklerle sorunsuz entegrasyon.
PDFsharp ile Programatik Olarak Dijital İmza Ekleme
PDFsharp, C#'da PDF oluşturma ve düzenleme amaçlı tasarlanmış açık kaynak bir kütüphanedir. Ancak, imza ekleme desteği sunmasına rağmen, PDF belgelerinin güvenli ve doğru bir şekilde dijital imza atılmasını sağlamak için BouncyCastle gibi bir üçüncü taraf aracını entegre etmeniz gerekecek.
PDFsharp ile Dijital İmza Eklemek İçin Adımlar
- NuGet aracılığıyla PDFsharp ve BouncyCastle yükleyin.
- X509Certificate2 kullanarak dijital sertifika oluşturun.
- BouncyCastle ile PDF'yi imzalayın.
Örnek Kod
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using BouncyCastleSigner; // Hypothetical namespace for illustration
// Ensure that you have the appropriate namespaces added
class Program
{
static void Main(string[] args)
{
// Create a font for the appearance of the signature
var font = new XFont("Verdana", 10.0, XFontStyle.Regular);
// Create a new PDF document
var document = new PdfDocument();
var pdfPage = document.AddPage();
// Prepare graphics for drawing on the PDF page
var xGraphics = XGraphics.FromPdfPage(pdfPage);
var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
// Add some text to the page
xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
// Define digital signature appearance options
var options = new DigitalSignatureOptions
{
ContactInfo = "John Doe",
Location = "Seattle",
Reason = "License Agreement",
Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
AppearanceHandler = new SignatureAppearanceHandler()
};
// Sign the document using BouncyCastle signer
var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
// Save the signed document
document.Save("PdfSharpSignature.pdf");
}
static (X509Certificate2, X509Certificate2Collection) GetCertificate()
{
// Locate the certificate file and read its data
var certFolder = "C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security";
var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
var rawData = File.ReadAllBytes(pfxFile);
// Load the certificate using its password (example password)
var certificatePassword = "Passw0rd";
var certificate = new X509Certificate2(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
// Create and return the certificate collection
var collection = new X509Certificate2Collection();
collection.Import(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
return (certificate, collection);
}
}
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using BouncyCastleSigner; // Hypothetical namespace for illustration
// Ensure that you have the appropriate namespaces added
class Program
{
static void Main(string[] args)
{
// Create a font for the appearance of the signature
var font = new XFont("Verdana", 10.0, XFontStyle.Regular);
// Create a new PDF document
var document = new PdfDocument();
var pdfPage = document.AddPage();
// Prepare graphics for drawing on the PDF page
var xGraphics = XGraphics.FromPdfPage(pdfPage);
var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
// Add some text to the page
xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
// Define digital signature appearance options
var options = new DigitalSignatureOptions
{
ContactInfo = "John Doe",
Location = "Seattle",
Reason = "License Agreement",
Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
AppearanceHandler = new SignatureAppearanceHandler()
};
// Sign the document using BouncyCastle signer
var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
// Save the signed document
document.Save("PdfSharpSignature.pdf");
}
static (X509Certificate2, X509Certificate2Collection) GetCertificate()
{
// Locate the certificate file and read its data
var certFolder = "C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security";
var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
var rawData = File.ReadAllBytes(pfxFile);
// Load the certificate using its password (example password)
var certificatePassword = "Passw0rd";
var certificate = new X509Certificate2(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
// Create and return the certificate collection
var collection = new X509Certificate2Collection();
collection.Import(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
return (certificate, collection);
}
}
Imports System
Imports System.IO
Imports System.Security.Cryptography.X509Certificates
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Imports BouncyCastleSigner ' Hypothetical namespace for illustration
' Ensure that you have the appropriate namespaces added
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create a font for the appearance of the signature
Dim font = New XFont("Verdana", 10.0, XFontStyle.Regular)
' Create a new PDF document
Dim document = New PdfDocument()
Dim pdfPage = document.AddPage()
' Prepare graphics for drawing on the PDF page
Dim xGraphics = XGraphics.FromPdfPage(pdfPage)
Dim layoutRectangle = New XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point)
' Add some text to the page
xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter)
' Define digital signature appearance options
Dim options = New DigitalSignatureOptions With {
.ContactInfo = "John Doe",
.Location = "Seattle",
.Reason = "License Agreement",
.Rectangle = New XRect(36.0, 700.0, 400.0, 50.0),
.AppearanceHandler = New SignatureAppearanceHandler()
}
' Sign the document using BouncyCastle signer
Dim pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document, New PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options)
' Save the signed document
document.Save("PdfSharpSignature.pdf")
End Sub
Private Shared Function GetCertificate() As (X509Certificate2, X509Certificate2Collection)
' Locate the certificate file and read its data
Dim certFolder = "C:\Users\kyess\AppData\Roaming\Adobe\Acrobat\DC\Security"
Dim pfxFile = Path.Combine(certFolder, "IronSoftware.pfx")
Dim rawData = File.ReadAllBytes(pfxFile)
' Load the certificate using its password (example password)
Dim certificatePassword = "Passw0rd"
Dim certificate = New X509Certificate2(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)
' Create and return the certificate collection
Dim collection = New X509Certificate2Collection()
collection.Import(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)
Return (certificate, collection)
End Function
End Class
Çıktı

Burada gördüğünüz gibi, yeni belgemize bir dijital imza alanı oluşturarak ve sertifikayı uygulayarak başarılı olmuş olsa da, süreç oldukça kapsamlı, elle yapılması gerekiyor ve IronPDF gibi kütüphanelerle karşılaştırıldığında uygulaması fazla verimli değil.
IronPDF ile Dijital İmza Ekleme
IronPDF, geliştiricilere PDF belgelerini dijital olarak imzalamak için kısa ve öz bir yöntem sunar.
using IronPdf;
using System.Security.Cryptography.X509Certificates;
public class Program
{
static void Main(string[] args)
{
// Load the certificate with its password
var sig = new PdfSignature("IronSoftware.pfx", "your-password");
// Configure additional signature details
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
sig.TimestampUrl = "http://timestamp.digicert.com";
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));
// Sign and save the PDF document
sig.SignPdfFile("output.pdf");
}
}
using IronPdf;
using System.Security.Cryptography.X509Certificates;
public class Program
{
static void Main(string[] args)
{
// Load the certificate with its password
var sig = new PdfSignature("IronSoftware.pfx", "your-password");
// Configure additional signature details
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
sig.TimestampUrl = "http://timestamp.digicert.com";
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));
// Sign and save the PDF document
sig.SignPdfFile("output.pdf");
}
}
Imports IronPdf
Imports System.Security.Cryptography.X509Certificates
Public Class Program
Shared Sub Main(ByVal args() As String)
' Load the certificate with its password
Dim sig = New PdfSignature("IronSoftware.pfx", "your-password")
' Configure additional signature details
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
sig.TimestampUrl = "http://timestamp.digicert.com"
sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 200, 200))
' Sign and save the PDF document
sig.SignPdfFile("output.pdf")
End Sub
End Class
Çıktı

Bu kod, IronPDF'nin PdfSignature sınıfını kullanarak bir PDF belgesini nasıl imzalayacağınızı göstermektedir. Program ilk olarak bir PdfSignature nesnesi oluşturur ve bir .pfx sertifika dosyasının yerini ve şifresini belirtir. Ardından, hash algoritması (SHA256), zaman damgası URL'si ve imza için özel bir resim (IronPdf.png) gibi ek imza özelliklerini ayarlar.
Son olarak, SignPdfFile metodu çağrılarak dijital imza PDF belgesine uygulanır ve output.pdf olarak kaydedilir. Bu süreç, dijital imza ile birlikte bir zaman damgası ve görsel resim ekleyerek PDF'nin bütünlüğünü ve otantikliğini sağlar.
PDFSharp:
- MIT Lisansı altında açık kaynak.
- Gelişmiş özellikler ve dijital imzalama gibi ileri düzey işlevsellikler için harici kütüphaneler (örneğin, BouncyCastle) gerektirir.
IronPDF:
- Geliştiriciler ve dağıtım örneklerine dayalı fiyatlandırma ile ticari lisans.
- Ücretsiz deneme mevcuttur.
- Geliştirme amacıyla ücretsizdir.
Sonuç: C#'da Dijital İmzalar İçin IronPDF vs PDFsharp
IronPDF ve PDFsharp kütüphanelerini C#'da PDF'lere dijital imzalar eklemek için karşılarken, her iki kütüphane de proje ihtiyaçlarınıza bağlı olarak belirgin avantajlar sunar.
-
IronPDF, PDF'lere dijital imzalar uygulamak için basit, kullanımı kolay bir API arayan bağımsız serbest yazılım geliştiriciler veya bir şirkette çalışan geliştiriciler için idealdir ve modern özelliklerle birlikte gelir. Dijital imza uygulaması ile sorunsuz entegrasyonu, HTML'den PDF'e dönüştürme ve diğer PDF işlevsellikleri ile ticari projelerde kolay kullanım ve hızlı uygulama önceliklenerse harika bir seçimdir. Ücretli destek ve net bir ticari lisans yapısıyla, IronPDF, basit, güvenilir bir çözüme ihtiyaç duyan işletmeler için çok uygundur.
- PDFsharp, temel PDF oluşturma ve düzenleme konusunda iyi olsa da, IronPDF'nin sunduğu ileri düzey özellikler ve dijital imzalar için doğrudan destekten yoksundur. PDFsharp açık kaynak ve kullanımı ücretsiz olsa da, dijital imzalarla çalışmak için API'si IronPDF'e kıyasla daha az sezgiseldir ve bu özellikleri ele almak için ek çözümler veya üçüncü taraf kütüphaneler kullanılabilir.
Özetle, IronPDF , ticari ortamlar başta olmak üzere, dijital imzalar ve ilgili PDF görevleri için basit, hızlı bir çözüm arayan geliştiriciler için en iyi seçimdir. PDFsharp , temel PDF görevleri için daha uygundur, ancak dijital imzalar için aynı kullanım kolaylığı ve özellik setine sahip değildir, bu da onu daha basit projeler veya ek özelleştirme gereksinimleri olanlar için daha uygun hale getirir.
Sıkça Sorulan Sorular
Dijital imzalar, PDF belgelerinin doğrulugunu ve butunlugunu nasıl guvence altina alir?
Dijital imzalar, bir PDF belgesinin imzalandiktan sonra değiştirilmedigini doğrulamak için kriptografik teknikler kullanir. İmzalayanin kimligini doğrular ve belge iceriginin degismeden kalmasini saglayarak güvenlik ve yasal gecerlilik sunar.
PDFsharp kullanarak dijital imza eklerken geliştiricilerin karsilasabilecegi zorluklar nelerdir?
PDFsharp'u dijital imza eklemek için kullanirken, geliştiriciler genellikle BouncyCastle gibi ucuncu taraf kütüphaneleri entegre etmeleri gerekir. Bu gereklilik, dijital sertifika oluşturma ve PDF imzalama için ek bagimlilikleri yönetmeleri gerektigi için uygulama süreçini karmaşık hale getirebilir.
Neden bir geliştirici, dijital imza için açık kaynak bir kütüphane yerine ticari bir PDF kütüphanesi tercih edebilir?
Ticari bir PDF kütüphanesi, gelişmiş özellikler, dijital imzalar için dahili destek ve kullanici dostu bir API sunar. Bu özellikler, özel destek arayan geliştiriciler için daha uygun hale gelir, özellikle ticari projelerde zaman ve verimliligin önemli oldugu durumlarda.
Bir .NET uygulamasinda HTML nasıl PDF'e dönüştürulebilir?
HTML, IronPDF gibi bir kütüphane kullanilarak .NET uygulamasi icinde PDF'e dönüştürulebilir; bu, HTML dizelerinizi veya dosyalarinizi doğrudan PDF belgesine dönüştürmek için RenderHtmlAsPdf gibi metodlar sunar, çeşitli stil ve betik seçeneklerini destekler.
Ticari projelerde PDF işlemi için IronPDF kullanmanin faydaları nelerdir?
IronPDF, PDF işlem için gelişmiş özellikler suiti sunar, bu özellikler; dijital imzalar, HTML'den PDF'e dönüşüm ve form işleme dahildir. Kapsamli destek ve kullanici dostu API'siyle, gelişmiş fonksiyonellik ve hizli dağıtim onceligi olan ticari projeler için idealdir.
.NET kütüphanesi kullanarak bir PDF dijital imzasina zaman damgasi ekleyebilir misiniz?
Evet, IronPDF gibi bir kütüphane ile imza konfigürasyonunda zaman damgasi sunucu URL'sini belirterek bir PDF dijital imzasına zaman damgasi ekleyebilirsiniz. Bu özellik, imzalanan belgenin güvenilirligini ve yasal uyumunu arttirir.
Dijital imza uygulamasi için bir PDF kütüphanesi secilirken nelere dikkat edilmelidir?
Dijital imzalar için bir PDF kütüphanesi secinirken, kullanilabilirlik, gelişmiş özellikler için destek, ucuncu taraf araçlar ile entegrasyon yetenekleri ve ticari kütüphanelerde daha kapsayici olan müşteri desteginin mevcut olup olmadigi gibi faktorleri goz onunde bulundurun.



