PDFsharp PDF'den Metin Çıkarma vs IronPDF (Örnek)
Dijital imza, bir elektronik belgenin bütünlüğünü ve özgünlüğünü doğrulayan matematiksel bir tekniktir. Birçok yargı alanında, belgeleri dijital olarak imzalamak için bir elektronik imza olarak hizmet eder, mükemmel güvenlik ve yasal geçerlilik sağlar.
Dijital imzalar, yalnızca imzalayan kişi tarafından 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ını, e-posta adresini ve diğer kişisel bilgilerini içerir. Dijital olarak imzalanmış bir belgenin özgünlüğünü doğrulamak için alıcının imzalayanın genel anahtarına erişimi gereklidir. İmzanın geçerliliği, genel anahtarı kullanarak deşifre edilerek doğrulanır.
Bu eğitimde, PDFSharp ve IronPDF kullanarak PDF belgelerine nasıl dijital imzalar ekleyebileceğinizi karşılaştırıyoruz. Dijital imzalar, belge özgünlüğünü doğrulamak için gereklidir ve PDF dosyaları, bu tür işlemler için popüler bir formattır.
PDFSharp, PDF oluşturma ve işleme için tanınmış bir açık kaynaklı kütüphanedir, IronPDF ise benzer özellikler sunan ancak ek gelişmiş işlevsellikler ile birlikte gelen güçlü bir .NET PDF kütüphanesidir.
Bu kılavuz, bir özel anahtar ile bir PDF belgesini imzalamayı ve imzayı doğrulamayı, her iki kütüphane için örnek kaynak kodla kapsar.
Dijital İmzaların Önemi Nedir?
Dijital imzalar, belge bütünlüğünü sağlayarak güçlü güvenlik sağlar. Genellikle, sözleşmeler, anlaşmalar ve diğer yasal belgeler için kullanılırlar.
Anahtar faydalar:
- Geleneksel imzalardan daha güvenli ve tahrifata dayanıklıdır.
- Elektronik olarak doğrulanır, manuel doğrulama çabalarını azaltır.
- Tüm dünyada belgelerin uzaktan imzalanmasına olanak tanır.
- Geleneksel imzalardan daha fazla güvence sağlar.
PDFSharp Geneli
PDFSharp, öncelikle PDF belgeleri oluşturma ve düzenleme için tasarlanmış bir açık kaynaklı C# kütüphanesidir. Temel PDF görevleri için yaygın olarak kullanılır, basit PDF dosyaları oluşturma, mevcut belgeleri düzenleme ve grafikler oluşturma gibi. Ancak, dijital imzalar gibi ileri düzey özellikler için yerel desteği sınırlıdır ve genellikle böyle işlevsellikleri entegre etmek için BouncyCastle gibi üçüncü taraf kütüphanelere bağımlı olunması gerekir. PDFSharp, MIT Lisansı altında açık kaynaklıdır ve maliyet ve esnekliğin öncelikli olduğu projeler için iyi bir seçimdir.
Ana Özellikler
- MIT Lisansı altında açık kaynaklı ve ücretsiz.
- Temel PDF oluşturma ve düzenleme.
- Dijital imzalar için BouncyCastle gibi harici kütüphanelerle genişletilebilir.
- HTML'den PDF'ye dönüştürme ve karmaşık form işleme gibi ileri düzey PDF özellikleri için kutudan çıkma desteği yoktur.
IronPDF Genel Bakış
IronPDF, PDF'leri oluşturma, düzenleme ve işleme için basit ve güçlü bir API sunan sağlam bir .NET PDF kütüphanesidir. Öne çıkan özelliklerinden biri, geliştiricilerin belge özgünlüğünü doğrulamak için gerekli olan dijital imzaları uygulamayı kolaylaştırmasıdır. Dijital imzaların yanı sıra, IronPDF HTML'den PDF'ye dönüştürme, filigranlama ve form işleme gibi ileri düzey işlevsellikleri destekler. Hızlı uygulama ve sağlam özelliklerin öncelikli olduğu ticari projelerde çalışan geliştiriciler için özellikle değerlidir.
Ana Özellikler
- Ticari lisans ile ücretli destek ve ücretsiz deneme mevcuttur.
- dijital imza atma ve belge düzenleme için modern özelliklerle kolay kullanımlı API.
- HTML'den PDF'ye format dönüştürme, form işleme ve PDF notları (örneğin, ek açıklamalar) 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 Programlı Olarak Dijital İmza Ekleme
PDFSharp, C# dilinde PDF oluşturma ve işleme için tasarlanmış bir açık-kaynak kütüphanedir. Ancak, bir imza eklemek için destek sağlasa da, PDF belgelerinin güvenli, doğru bir şekilde dijital imzalanmasını sağlamak için BouncyCastle gibi üçüncü taraf bir araç entegre etmeniz gerekecektir.
PDFSharp ile Dijital İmza Eklemek için Adımlar
- PDFSharp ve BouncyCastle'ı NuGet ile Yükleyin.
- X509Certificate2 kullanarak dijital bir sertifika oluştur.
- BouncyCastle ile PDF'yi imzala.
Ö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örebileceğiniz gibi, yeni belgemize dijital bir imza alanı oluşturup sertifikayı uygulamak mümkün olmasına rağmen, süreç kapsamlı, manuel ve IronPDF gibi kütüphanelerle karşılaştırıldığında uygulaması pek verimli değildir.
IronPDF ile Dijital İmza Ekleme
IronPDF, geliştiricilere PDF belgelerini dijital olarak imzalamak için özlü 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österir. Program, önce bir .pfx sertifika dosyasının konumu ve şifresi belirtilerek bir PdfSignature nesnesi oluşturur. 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 yöntemi, dijital imzayı PDF belgesine uygulamak ve output.pdf olarak kaydetmek için çağrılır. Bu süreç, dijital imzayı bir zaman damgası ve görsel bir resim ile birlikte gömerek PDF'nin bütünlüğünü ve özgünlüğünü sağlar.
PDFSharp:
- MIT Lisansı altında açık kaynaklı.
- Dijital imzalama gibi ileri düzey özellikler için harici kütüphaneler (örneğin, BouncyCastle) gerektirir.
IronPDF:
- Ticari lisans geliştiricilere ve dağıtım örneklerine göre fiyatlandırılır.
- Ücretsiz deneme mevcut
- Geliştirme amaçlı kullanım için ücretsiz
Sonuç: C#'ta Dijital İmzalar için IronPDF vs PDFSharp
IronPDF ve PDFSharp'ın C#'ta PDF'lere dijital imzalar eklemede karşılaştırılması, her iki kütüphane de projenizin ihtiyaçlarına bağlı olarak farklı avantajlar sunar.
-
IronPDF, ister bağımsız bir serbest yazılım geliştiricisi, ister bir şirkette çalışan bir geliştirici olsun, geliştiriciler için ideal olup, PDF'lere dijital imzalar uygulamak için basit, kullanımı kolay bir API arayanlara ve modern özelliklerle birlikte gelir. Dijital imza uygulaması, HTML'den PDF'ye dönüştürme ve diğer PDF işlevsellikleri ile sorunsuz entegrasyonu, hızlı uygulama ve kullanım kolaylığı öncelikli olan ticari projeler için harika bir seçim yapar. Ücretli destek ve net ticari lisans yapısıyla, IronPDF, basit, güvenilir bir çözüm gerektiren işletmeler için uygun bir seçenektir.
- PDFSharp temel PDF oluşturma ve işleme konularında mükemmeldir, ancak IronPDF'nin sunduğu gelişmiş özellikler ve dijital imzalar için doğrudan destek eksikliği vardır. PDFSharp açık kaynaklı ve kullanımı ücretsizken, API'si IronPDF'ye kıyasla dijital imzalarla çalışmak için daha az sezgiseldir ve bu özellikleri ele almak için ek çözümler veya üçüncü taraf kütüphaneler kullanmanız gerekebilir.
Özetlemek gerekirse, IronPDF, ticari ortamlarda 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 daha temel PDF görevleri için uygundur, ancak kullanım kolaylığı ve dijital imzalar için aynı özellik setine sahip değildir. Bu da onu ek özelleştirme gereksinimlerine sahip daha basit projeler için daha uygun kılar.
Sıkça Sorulan Sorular
Dijital imzalar, PDF belgelerinin özgünlüğünü ve bütünlüğünü nasıl sağlar?
Dijital imzalar, bir PDF belgesinin imzalandıktan sonra değiştirilmediğini doğrulayan kriptografik teknikler kullanır. İmzalayanın kimliğini doğrularlar ve belgenin içeriğinin değişmeden kaldığını garanti ederek güvenlik ve yasal geçerlilik sağlarlar.
Geliştiriciler, PDFsharp kullanarak dijital imzalar eklerken hangi zorluklarla karşılaşabilir?
PDFsharp kullanarak dijital imzalar eklerken, geliştiricilerin genellikle BouncyCastle gibi üçüncü taraf kütüphanelerle entegrasyon sağlaması gerekir. Bu gereklilik, geliştiricilerin dijital sertifikalar oluşturmak ve PDF'leri imzalamak için ek bağımlılıkları yönetmeleri gerektiğinden, uygulama sürecini karmaşıklaştırabilir.
Bir geliştirici, dijital imzalama için neden açık kaynaklı bir PDF kütüphanesi yerine ticari bir kütüphaneyi tercih edebilir?
Ticari bir PDF kütüphanesi, gelişmiş özellikler, dijital imzalar için yerleşik destek ve kullanıcı dostu bir API sunar. Bu özellikler, zaman ve verimliliğin önemli olduğu ticari projelerde hızlı ve güvenilir bir çözüm arayan geliştiriciler için daha uygun hale getirir.
.NET uygulamasında HTML nasıl PDF'ye dönüştürülebilir?
HTML, IronPDF gibi bir kütüphane kullanılarak .NET uygulamasında bir PDF'ye dönüştürülebilir, RenderHtmlAsPdf gibi yöntemler sunarak doğrudan HTML dizelerini veya dosyalarını PDF belgelerine dönüştürülebilir ve çeşitli stil ve betik seçeneklerini destekler.
Ticari projelerde PDF'leri ele almak için IronPDF kullanmanın avantajları nelerdir?
IronPDF, PDF'ler için dijital imzalar, HTML'den PDF'ye dönüştürme ve form işleme gibi kapsamlı bir özellik seti sunar. Güçlü desteği ve kullanıcı dostu API'si, gelişmiş işlevselliği ve hızlı dağıtımı önceliklendiren ticari projeler için idealdir.
.NET kütüphanesi kullanarak bir PDF dijital imzasına zaman damgası ekleyebilir misiniz?
Evet, IronPDF gibi bir kütüphane ile imza yapılandırmasında zaman damgası sunucu URL'sini belirterek bir PDF dijital imzasına zaman damgası ekleyebilirsiniz. Bu özellik, imzalanan belgenin güvenilirliğini ve yasal uyumluluğunu artırır.
Dijital imza uygulaması için bir PDF kütüphanesi seçerken nelere dikkat edilmelidir?
Dijital imzalar için bir PDF kütüphanesi seçerken, kullanım kolaylığı, gelişmiş özellikler için destek, üçüncü taraf araçlarla entegrasyon yetenekleri ve adanmış müşteri desteğinin mevcudiyeti gibi faktörlere dikkat edin. Bunlar genellikle IronPDF gibi ticari kütüphanelerde daha kapsamlıdır.



