
PDF'de Metin Nasıl Düzenlenir (Yeni Başlayanlar için Eğitimi)
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);
}
}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");
}
}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.

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.
İlgili Makaleler


