.NET Çözümlerde IronPDF Ile PDF API Nasıl Kullanilir
ASP.NET Core'da bir PDF'ye dijital imza eklemek, belge bütünlüğünü korur, imzalayanın kimliğini doğrular ve dosyayı çoğu yargı yetkisinde hukuki olarak savunulabilir hale getirir. IronPDF ile, birkaç satır C# kod içinde sertifika dosyalarını kullanarak sunucu tarafında PDF'leri imzalayabilir, görünür imza görselleri ekleyebilir ve etkileşimli imza formu alanlarını gömebilirsiniz.
Kütüphaneyi NuGet'ten yükleyin, .pfx sertifikanızı alın ve aşağıdaki örnekleri izleyerek üretim için hazır bir belge imzalama iş akışı oluşturun.
Install-Package IronPdf
Ayrıca Visual Studio içinde NuGet Paket Yöneticisi aracılığıyla da yükleyebilir veya doğrudan IronPDF ürün sayfasından indirebilirsiniz. Ücretsiz deneme başlatın ve bağlı kalmadan tüm imzalama özelliklerini test edin.
Dijital PDF İmzası Nedir ve Neden Önemlidir?
Dijital imza, imzalayan kişinin kimliğini bir belgenin belirli bir sürümüyle bağlayan kriptografik bir mekanizmadır. Basit bir elektronik imzadan -- örneğin yazılmış bir isim veya taranmış bir görüntü -- farklıdır çünkü doğrulanabilir, değiştirilmediği belli bir mühür oluşturmak için açık anahtar kriptografisini kullanır.
Birisi bir PDF'yi dijital olarak imzaladığında, imzalama yazılımı belge içeriğinin bir özetini oluşturur ve bu özeti imzalayanın özel anahtarıyla şifreler. Ortaya çıkan imza, PDF'ye imzalayanın kamu sertifikası ile birlikte gömülür. Dijital imzaları destekleyen herhangi bir PDF okuyucu -- Adobe Acrobat Reader ve modern tarayıcılara yerleşik PDF görüntüleyiciler dahil -- özetin şifresini açık anahtar ile açabilir ve belgeyi yeni hesaplanmış bir özetle karşılaştırabilir. Eğer özetler eşleşirse, belge gerçek ve değişmemiştir.
Dijital İmzaların Hukuki Önemi Neden Var?
Çoğu ülkede, dijital olarak imzalanmış belgeler el ile imzalanmış kağıt sözleşmeleri ile aynı yasal ağırlığa sahiptir. Avrupa Birliği'ndeki eIDAS düzenlemesi ve Amerika Birleşik Devletleri'ndeki ESIGN Yasası belirli koşullar altında elektronik imzaları yasal olarak bağlayıcı tanır. Sertifika tabanlı dijital imzalar bu gereksinimlerin en güçlü düzeyini karşılar.
ASP.NET Core'da Dijital İmzalar Nerede Kullanılır?
ASP.NET Core uygulaması içerisinde sunucu tarafında imzalama, işlemler sırasında belgeleri otomatik olarak imzalamanıza olanak tanır -- istemci yazılımı gerektirmez. Sözleşmeler, faturalar, uyumluluk raporları ve gizlilik anlaşmaları tümü oluşturuldukları anda imzalanabilir ve imzalı dosya kullanıcıya doğrudan geri döndürülebilir veya bir belge yönetim sisteminde saklanabilir. IronPDF, HTML'den PDF'ye işlem hattını kriptografik imzalamaya kadar tümünü ele alır, bu yüzden iş akışını uygularken düşük seviyeli PDF spesifikasyon detaylarına dokunmanıza gerek kalmaz.
[30] ## IronPDF'i bir ASP.NET Core Projesinde Nasıl Kurarsınız?
Çalışan bir imzalama ortamına ulaşmanın en hızlı yolu NuGet paketidir. Visual Studio'da Paket Yöneticisi Konsolunu açın ve şu komutu çalıştırın:
Install-Package IronPdf
Alternatif olarak, Çözüm Gezgini'nde projeye sağ tıklayın, "NuGet Paketlerini Yönet"i seçin, IronPdf arayın ve Yükle'ye tıklayın. Kurulum sonrası, denetleyici veya servis sınıfınızın en üstüne şu using yönergelerini ekleyin:
using IronPdf;
using IronPdf.Signing;
using IronPdf;
using IronPdf.Signing;
Imports IronPdf
Imports IronPdf.Signing
IronPDF, .NET 8 ve .NET 9/10 hedefler, bu yüzden modern ASP.NET Core projelerine doğal olarak uyar. İlk kurulumun ayrıntılı bir incelemesi için, IronPDF hızlı başlangıç kılavuzuna bakın.
ASP.NET Core'da Bir Sertifika Dosyası ile PDF Nasıl İmzalanır?
En yaygın imzalama yöntemi bir .pfx veya .p12 sertifika dosyasını kullanır. Bu dosyalar özel anahtar ve genel sertifika zincirini tek bir şifre korumalı arşivde birleştirir. Bir DigiCert veya GlobalSign gibi güvenilir bir sertifika otoritesinden (CA) temin edebilir veya geliştirme ve test için kendi kendine imzalanmış bir sertifika oluşturabilirsiniz.
Aşağıdaki örnek, HTML'den bir PDF oluşturur ve sertifika tabanlı bir dijital imza uygular:
using IronPdf;
using IronPdf.Signing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-certificate", (IWebHostEnvironment env) =>
{
// Generate a PDF from HTML content
var renderer = new ChromePdfRenderer();
var document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions...</p>");
// Locate the PFX certificate on the server
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
// Build the signature object
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningContact = "legal@yourcompany.com",
SigningLocation = "Chicago, IL, USA",
SigningReason = "Document Approval"
};
// Apply the signature and save
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-contract.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-contract.pdf");
});
app.Run();
using IronPdf;
using IronPdf.Signing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-certificate", (IWebHostEnvironment env) =>
{
// Generate a PDF from HTML content
var renderer = new ChromePdfRenderer();
var document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions...</p>");
// Locate the PFX certificate on the server
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
// Build the signature object
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningContact = "legal@yourcompany.com",
SigningLocation = "Chicago, IL, USA",
SigningReason = "Document Approval"
};
// Apply the signature and save
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-contract.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-contract.pdf");
});
app.Run();
Imports IronPdf
Imports IronPdf.Signing
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapPost("/sign-with-certificate", Function(env As IWebHostEnvironment)
' Generate a PDF from HTML content
Dim renderer = New ChromePdfRenderer()
Dim document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions...</p>")
' Locate the PFX certificate on the server
Dim certPath As String = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx")
' Build the signature object
Dim signature = New PdfSignature(certPath, "yourPassword") With {
.SigningContact = "legal@yourcompany.com",
.SigningLocation = "Chicago, IL, USA",
.SigningReason = "Document Approval"
}
' Apply the signature and save
document.Sign(signature)
Dim outputPath As String = Path.Combine(Path.GetTempPath(), "signed-contract.pdf")
document.SaveAs(outputPath)
Return Results.File(outputPath, "application/pdf", "signed-contract.pdf")
End Function)
app.Run()
ChromePdfRenderer geçerli herhangi bir HTML dizesini veya URL'yi PDF'e dönüştürür. PdfSignature yapıcı, sertifika yolunu ve şifresini kabul eder ve isteğe bağlı özellikler (SigningContact, SigningLocation, SigningReason) PDF görüntüleyicilerinin imza panelinde göstereceği metadatalar ekler. Sign metodu kriptografik imzayı gömer ve SaveAs imzalanmış dosyayı diske yazar.
İmzalı Dosyayı Hafızadan Döndürme
Geçici bir dosyayı diske yazmak istemediğinizde, PDF'i bir MemoryStream olarak kaydedin ve doğrudan denetleyici eyleminden geri döndürün:
var stream = new MemoryStream();
document.SaveAs(stream);
stream.Position = 0;
return Results.File(stream, "application/pdf", "signed-contract.pdf");
var stream = new MemoryStream();
document.SaveAs(stream);
stream.Position = 0;
return Results.File(stream, "application/pdf", "signed-contract.pdf");
Dim stream As New MemoryStream()
document.SaveAs(stream)
stream.Position = 0
Return Results.File(stream, "application/pdf", "signed-contract.pdf")
Bu yaklaşım, geçici dosya yönetiminin gereksiz yere yavaşlatma etkisi yaratacağı yüksek verimli API'lere uygundur.
Tam bir özellik referansı için PdfSignature API dokümantasyonuna bakın.
Bir PDF'ye Görünür İmza Görüntüsü Nasıl Eklenir?
Kriptografik imzalar belge bütünlüğünü korur, ancak görüntülenen PDF'de görünmezdir. Birçok iş akışı -- özellikle sözleşmeler veya mektuplar gibi -- ayrıca sayfaya basılan, taranmış el yazısı imza veya şirket mührü gibi görünür bir temsil gerektirir.
IronPDF, bunu LoadSignatureImageFromFile yöntemi aracılığıyla destekler. Yöntem, bir resim yolu, bir sayfa indeksi ve görünür imzanın konum ve boyutlarını tanımlayan bir IronSoftware.Drawing.Rectangle kabul eder:
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-visible-image", (IWebHostEnvironment env) =>
{
// Load an existing PDF (for example, an invoice template)
string pdfPath = Path.Combine(env.ContentRootPath, "Documents", "invoice.pdf");
var document = PdfDocument.FromFile(pdfPath);
// Paths to the certificate and the signature image
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
string imagePath = Path.Combine(env.ContentRootPath, "Images", "signature.png");
// Define where the visible signature appears (x, y, width, height in points)
var signatureArea = new Rectangle(50, 680, 200, 80);
var signature = new PdfSignature(certPath, "yourPassword");
signature.LoadSignatureImageFromFile(imagePath, pageIndex: 0, signatureArea);
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-invoice.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-invoice.pdf");
});
app.Run();
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-visible-image", (IWebHostEnvironment env) =>
{
// Load an existing PDF (for example, an invoice template)
string pdfPath = Path.Combine(env.ContentRootPath, "Documents", "invoice.pdf");
var document = PdfDocument.FromFile(pdfPath);
// Paths to the certificate and the signature image
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
string imagePath = Path.Combine(env.ContentRootPath, "Images", "signature.png");
// Define where the visible signature appears (x, y, width, height in points)
var signatureArea = new Rectangle(50, 680, 200, 80);
var signature = new PdfSignature(certPath, "yourPassword");
signature.LoadSignatureImageFromFile(imagePath, pageIndex: 0, signatureArea);
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-invoice.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-invoice.pdf");
});
app.Run();
Imports IronPdf
Imports IronPdf.Signing
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapPost("/sign-with-visible-image", Function(env As IWebHostEnvironment)
' Load an existing PDF (for example, an invoice template)
Dim pdfPath As String = Path.Combine(env.ContentRootPath, "Documents", "invoice.pdf")
Dim document = PdfDocument.FromFile(pdfPath)
' Paths to the certificate and the signature image
Dim certPath As String = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx")
Dim imagePath As String = Path.Combine(env.ContentRootPath, "Images", "signature.png")
' Define where the visible signature appears (x, y, width, height in points)
Dim signatureArea As New Rectangle(50, 680, 200, 80)
Dim signature As New PdfSignature(certPath, "yourPassword")
signature.LoadSignatureImageFromFile(imagePath, pageIndex:=0, signatureArea)
document.Sign(signature)
Dim outputPath As String = Path.Combine(Path.GetTempPath(), "signed-invoice.pdf")
document.SaveAs(outputPath)
Return Results.File(outputPath, "application/pdf", "signed-invoice.pdf")
End Function)
app.Run()
Görünür imaj, sağladığınız koordinatlarda belirtilen sayfaya birleştirilir. Kriptografik imza aynı anda tüm belgeye uygulanır, böylece tek bir işlemde hem güvenlik hem de görsel onay alırsınız.
Resim bellekte yaşıyorsa (örneğin bir veritabanından veya bulut deposundan alınmışsa), bunun yerine LoadSignatureImageFromStream kullanın. Görsel imzalama seçeneklerine daha derin bir bakış için, PDF imzalama kılavuzuna bakın.
Dış İmzalayanlar İçin İmza Formu Alanları Nasıl Oluşturulur?
Bazı iş akışlarında, belge sisteminiz tarafından oluşturulur ancak bir müşteri, bir ortak veya bir düzenleyici kuruluş gibi dış bir taraf tarafından imzalanması gerekir. Bu tarafdan önceden bir sertifika toplamak yerine, PDF'ye özel bir imza form alanı ekleyip belgeyi onlara gönderirsiniz. Alıcılar, PDF'yi Adobe Acrobat Reader veya başka bir uyumlu görüntüleyicide açarlar, imza alanına tıklarlar ve kendi sertifikalarını veya elektronik imzalarını uygularlar.
using IronPdf;
using IronPdf.Forms;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/generate-signable-form", (IWebHostEnvironment env) =>
{
// Render the document that requires a client signature
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<h1>Client Service Agreement</h1>
<p>Please review the terms below and sign in the field provided.</p>
<p>By signing, you confirm acceptance of all listed terms and conditions.</p>
");
// Define the signature field: name, page, x, y, width, height (in points)
var signatureField = new SignatureFormField(
"ClientSignature",
pageIndex: 0,
x: 50,
y: 600,
width: 300,
height: 100
);
pdf.Form.Add(signatureField);
string outputPath = Path.Combine(Path.GetTempPath(), "client-agreement.pdf");
pdf.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "client-agreement.pdf");
});
app.Run();
using IronPdf;
using IronPdf.Forms;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/generate-signable-form", (IWebHostEnvironment env) =>
{
// Render the document that requires a client signature
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<h1>Client Service Agreement</h1>
<p>Please review the terms below and sign in the field provided.</p>
<p>By signing, you confirm acceptance of all listed terms and conditions.</p>
");
// Define the signature field: name, page, x, y, width, height (in points)
var signatureField = new SignatureFormField(
"ClientSignature",
pageIndex: 0,
x: 50,
y: 600,
width: 300,
height: 100
);
pdf.Form.Add(signatureField);
string outputPath = Path.Combine(Path.GetTempPath(), "client-agreement.pdf");
pdf.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "client-agreement.pdf");
});
app.Run();
Imports IronPdf
Imports IronPdf.Forms
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.Hosting
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapGet("/generate-signable-form", Function(env As IWebHostEnvironment)
' Render the document that requires a client signature
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("
<h1>Client Service Agreement</h1>
<p>Please review the terms below and sign in the field provided.</p>
<p>By signing, you confirm acceptance of all listed terms and conditions.</p>
")
' Define the signature field: name, page, x, y, width, height (in points)
Dim signatureField = New SignatureFormField(
"ClientSignature",
pageIndex:=0,
x:=50,
y:=600,
width:=300,
height:=100
)
pdf.Form.Add(signatureField)
Dim outputPath As String = Path.Combine(Path.GetTempPath(), "client-agreement.pdf")
pdf.SaveAs(outputPath)
Return Results.File(outputPath, "application/pdf", "client-agreement.pdf")
End Function)
app.Run()
SignatureFormField yapıcı parametreleri alanın sayfa üzerindeki konumuna doğrudan eşlenir. Alıcı PDF'yi açtığında, imzalarının gideceği yeri açıkça belirlenmiş bir kutu görürler. Tamamlanmış form daha sonra sisteminize geri dönebilir, içinde gömülü imzayı yükler, doğrulayabilir ve arşivleyebilirsiniz.
PDF formu işlemeleri hakkında daha fazla bilgi için -- gönderilen form verilerinin geri okunması da dahil -- PDF formu düzenleme kılavuzuna bakın.
Dijital İmzayı Programlı Olarak Nasıl Doğrularsınız?
Bir belge imzalandı ve geri geldiğinde, imzanın hala geçerli olduğunu ve belgenin değiştirilmediğini doğrulamanız gerekebilir. IronPDF, PdfDocument nesnesi aracılığıyla imza doğrulaması sağlayarak açığa çıkarır:
using IronPdf;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/verify-signature", (IWebHostEnvironment env) =>
{
string signedPath = Path.Combine(env.ContentRootPath, "Documents", "signed-contract.pdf");
var document = PdfDocument.FromFile(signedPath);
// Retrieve all embedded signatures
var signatures = document.GetSignatures();
foreach (var sig in signatures)
{
bool isValid = sig.VerifySignature();
string status = isValid
? $"Valid -- signed by {sig.SignerName} on {sig.SigningTime:D}"
: "INVALID -- document may have been tampered with";
Console.WriteLine(status);
}
return Results.Ok(new { SignatureCount = signatures.Count });
});
app.Run();
using IronPdf;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/verify-signature", (IWebHostEnvironment env) =>
{
string signedPath = Path.Combine(env.ContentRootPath, "Documents", "signed-contract.pdf");
var document = PdfDocument.FromFile(signedPath);
// Retrieve all embedded signatures
var signatures = document.GetSignatures();
foreach (var sig in signatures)
{
bool isValid = sig.VerifySignature();
string status = isValid
? $"Valid -- signed by {sig.SignerName} on {sig.SigningTime:D}"
: "INVALID -- document may have been tampered with";
Console.WriteLine(status);
}
return Results.Ok(new { SignatureCount = signatures.Count });
});
app.Run();
Imports IronPdf
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.Hosting
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapGet("/verify-signature", Function(env As IWebHostEnvironment)
Dim signedPath As String = Path.Combine(env.ContentRootPath, "Documents", "signed-contract.pdf")
Dim document = PdfDocument.FromFile(signedPath)
' Retrieve all embedded signatures
Dim signatures = document.GetSignatures()
For Each sig In signatures
Dim isValid As Boolean = sig.VerifySignature()
Dim status As String = If(isValid,
$"Valid -- signed by {sig.SignerName} on {sig.SigningTime:D}",
"INVALID -- document may have been tampered with")
Console.WriteLine(status)
Next
Return Results.Ok(New With {.SignatureCount = signatures.Count})
End Function)
app.Run()
GetSignatures(), PDF'e gömülü tüm dijital imzaların bir listesini döndürür. Her PdfDigitalSignature nesnesi, VerifySignature(), imzalayanın adını, imzalama zaman damgasını ve sertifika zincirini açığa çıkarır. Bu bilgi, değiştirilen veya süresi dolmuş imzalı PDF dosyalarını işaretleyen bir denetim izi veya belge yönetim panosu oluşturmak için yeterlidir.
Üretimde Sertifika Yönetimini Nasıl Ele Alırsınız?
Bir .pfx dosyasını dosya sisteminde depolamak geliştirme sırasında işe yarar ancak üretim için uygun değildir. Sertifika dosyaları özel anahtarları içerir ve eğer dosya tehlikeye girerse, o anahtarla imzalanmış her belge risk altındadır.
Azure Anahtar Kasası Kullanımı
Azure Anahtar Kasası, sertifikaları özel anahtar asla kasadan çıkmadan saklamanıza ve kullanmanıza olanak tanır. .NET SDK, kamuya açık sertifika bilgilerini indiren bir CertificateClient sağlar. Özel anahtarı Anahtar Kasası içinde tutan gerçek imzalama işlemleri için, Azure.Security.KeyVault.Keys paketini kullanarak kriptografik işlemi sunucu tarafında gerçekleştirebilirsiniz.
Çevresel Değişkenler ve Sırlar Kullanımı
Daha küçük projeler için, sertifikayı bir çevresel değişken veya ASP.NET Core Secrets Manager içinde Base64 kodlanmış bir dize olarak saklayın ve çalışma zamanında çözün:
string certBase64 = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT")
?? throw new InvalidOperationException("PDF_SIGNING_CERT environment variable is not set.");
byte[] certBytes = Convert.FromBase64String(certBase64);
string certPassword = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT_PASSWORD")
?? throw new InvalidOperationException("PDF_SIGNING_CERT_PASSWORD environment variable is not set.");
var signature = new PdfSignature(certBytes, certPassword);
string certBase64 = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT")
?? throw new InvalidOperationException("PDF_SIGNING_CERT environment variable is not set.");
byte[] certBytes = Convert.FromBase64String(certBase64);
string certPassword = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT_PASSWORD")
?? throw new InvalidOperationException("PDF_SIGNING_CERT_PASSWORD environment variable is not set.");
var signature = new PdfSignature(certBytes, certPassword);
Imports System
Dim certBase64 As String = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT")
If certBase64 Is Nothing Then
Throw New InvalidOperationException("PDF_SIGNING_CERT environment variable is not set.")
End If
Dim certBytes As Byte() = Convert.FromBase64String(certBase64)
Dim certPassword As String = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT_PASSWORD")
If certPassword Is Nothing Then
Throw New InvalidOperationException("PDF_SIGNING_CERT_PASSWORD environment variable is not set.")
End If
Dim signature = New PdfSignature(certBytes, certPassword)
Bu desen, kimlik bilgilerini kaynak kontrolünden uzak tutar ve dönüşümünü kolaylaştırır -- çevresel değişkeni güncelleyin ve hizmeti yeniden başlatın.
Birden Çok PDF'yi Verimli Şekilde Nasıl Toplu İmzalarsınız?
Bir işlemde onlarca veya yüzlerce belgeyi imzalamanız gerektiğinde - örneğin ay sonu tüm faturaları imzalama - sertifikayı bir kez yüklemek ve tüm belgeler arasında PdfSignature nesnesini yeniden kullanmak aşırı yükü azaltır:
using IronPdf;
using IronPdf.Signing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/batch-sign", (IWebHostEnvironment env) =>
{
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningReason = "Batch Invoice Approval"
};
string[] invoicePaths = Directory.GetFiles(
Path.Combine(env.ContentRootPath, "Invoices"),
"*.pdf"
);
string outputDir = Path.Combine(env.ContentRootPath, "Signed");
Directory.CreateDirectory(outputDir);
foreach (string invoicePath in invoicePaths)
{
var doc = PdfDocument.FromFile(invoicePath);
doc.Sign(signature);
string outputFile = Path.Combine(outputDir, Path.GetFileName(invoicePath));
doc.SaveAs(outputFile);
}
return Results.Ok(new { SignedCount = invoicePaths.Length });
});
app.Run();
using IronPdf;
using IronPdf.Signing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/batch-sign", (IWebHostEnvironment env) =>
{
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningReason = "Batch Invoice Approval"
};
string[] invoicePaths = Directory.GetFiles(
Path.Combine(env.ContentRootPath, "Invoices"),
"*.pdf"
);
string outputDir = Path.Combine(env.ContentRootPath, "Signed");
Directory.CreateDirectory(outputDir);
foreach (string invoicePath in invoicePaths)
{
var doc = PdfDocument.FromFile(invoicePath);
doc.Sign(signature);
string outputFile = Path.Combine(outputDir, Path.GetFileName(invoicePath));
doc.SaveAs(outputFile);
}
return Results.Ok(new { SignedCount = invoicePaths.Length });
});
app.Run();
Imports IronPdf
Imports IronPdf.Signing
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapPost("/batch-sign", Function(env As IWebHostEnvironment)
Dim certPath As String = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx")
Dim signature As New PdfSignature(certPath, "yourPassword") With {
.SigningReason = "Batch Invoice Approval"
}
Dim invoicePaths As String() = Directory.GetFiles(
Path.Combine(env.ContentRootPath, "Invoices"),
"*.pdf"
)
Dim outputDir As String = Path.Combine(env.ContentRootPath, "Signed")
Directory.CreateDirectory(outputDir)
For Each invoicePath As String In invoicePaths
Dim doc = PdfDocument.FromFile(invoicePath)
doc.Sign(signature)
Dim outputFile As String = Path.Combine(outputDir, Path.GetFileName(invoicePath))
doc.SaveAs(outputFile)
Next
Return Results.Ok(New With {.SignedCount = invoicePaths.Length})
End Function)
app.Run()
Döngü dışında bir kez PdfSignature nesnesi yaratmak, sertifika dosyasının yalnızca bir kez okunup ayrıştırıldığı anlamına gelir. Her yineleme, bir bireysel PDF'yi yükler, imza atar ve kaydeder. Çok büyük partiler için, belgeleri paralel işlemek üzere Parallel.ForEach kullanmayı düşünün - IronPDF'in imzalama işlemleri, her PdfDocument örneği tek bir iş parçacığı ile izole edildiğinde iş parçacığı güvenlidir.
Yaygın İmzalama Hataları Nasıl Giderilir?
"Sertifika bulunamadı" veya "Geçersiz şifre"
Sertifika yolunu File.Exists(certPath) kullanarak, PdfSignature çağrılmadan önce bir kez daha kontrol edin. Sertifika şifreleri büyük/küçük harf duyarlıdır ve tam olarak eşleşmelidir. Geliştirme ortamında, basit bir şifre ile kendinden imzalanmış bir sertifika oluşturmak yaygındır; üretimde, şifreyi bir sır olarak ele alın ve sır yöneticisinden yükleyin.
PDF Görüntüleyicide "İmza geçersiz"
Adobe Acrobat'teki bir "geçersiz imza" uyarısı çoğunlukla üç şey anlamına gelir: (1) sertifika görüntüleyicinin sertifika deposu tarafından güvenilir değil, (2) imzadan sonra belge değiştirildi, veya (3) imzalama sertifikasının süresi doldu. Üretim için, güvenilir bir sertifika otoritesinden sertifika almanız ve sistem saatinin senkronize olduğundan emin olmanız gerekmektedir. Geliştirme için, Adobe kendi imzalı sertifikaları geçici olarak güvenilir hale getirme talimatları sağlıyor.
Sign() çağrısı sonrası "Belge imzalanmamış"
document.Sign(signature) çağrılması belgeyi imzalama için işaretler, ancak imza yalnızca SaveAs çağrıldığında veya bir akışa kaydedildiğinde tamamlanır. Sign sonrası kaydetme yöntemini çağırdığınızdan emin olun ve çıktı dosya yolunun yazılabilir olduğunu doğrulayın.
Tüm API detayları ve sorun giderme kaynakları için IronPDF dokümantasyon merkezi ve IronPDF nesne referansını ziyaret edin. Desteğe ihtiyacınız varsa, IronPDF destek sayfası sizi mühendislik ekibiyle buluşturur.
Sonraki Adımlarınız Neler?
ASP.NET Core'da dijital PDF imzalama, bir sertifika yükleme, Sign çağrısı yapma ve sonucu kaydetme şeklindeki üç temel işlemi anladığınızda kolaylaşır. IronPDF, kriptografik ağır yükü kaldırır böylece siz uygulamanızın iş mantığına odaklanabilirsiniz.
Belge iş akışınızı geliştirmeye devam etmek için, bu ilgili konuları keşfedin:
- ASP.NET Core'da HTML'den PDF oluşturma -- en çok imzalama iş akışlarının temelidir
- PDF şifreleri ve izinleri ekleme -- maksimum güvenlik için imzalama ve şifrelemeyi birleştirin
- PDF'leri birleştirme ve ayırma -- imzalamadan önce çok belgeli paketleri düzenleyin
- IronPDF lisanslama seçenekleri -- dağıtımınıza en uygun planı seçin
- IronPDF NuGet paketi -- en son sürümü ve değişim günlüğünü kontrol edin
ücretsiz IronPDF denemesi ile başlayın ve bir saatten kısa bir sürede ilk imzalı PDF'nizi çalıştırın. Sorularınız varsa veya sınır durumlarına rastlarsanız, Iron Software destek ekibi güvenilir, yasalara uygun bir belge imzalama iş akışınızın gönderilmesine yardımcı olmaya hazırdır.
Sıkça Sorulan Sorular
ASP.NET Core'da dijital imza nedir?
ASP.NET Core'da dijital imza, PDF belgelerinin özgünlüğünü ve bütünlüğünü doğrulamak için kullanılan dijital bir mühür gibidir. Belgelerin yasal geçerli olduğunu ve değiştirilmediğini sağlar.
IronPDF kullanarak bir PDF belgesine dijital imza nasıl ekleyebilirim?
PDF belgesine dijital imza eklemek için, belgeyi imzalayacak şekilde bir sertifika ekleyerek IronPDF kullanabilirsiniz, böylece hem güvenli hem de doğrulanabilir olur.
İş belgelerim için dijital imzalar neden önemlidir?
Dijital imzalar, belgelerin (örneğin sözleşmeler veya faturalar) sahte olmadığını ve değiştirildiğini doğruladığı için ö crucial önem taşır, böylece işinizi potansiyel yasal risklerden korur.
IronPDF ile PDF'lerde etkileşimli form alanları oluşturabilir miyim?
Evet, IronPDF, ASP.NET Core uygulamalarında kullanıcı etkileşimini artıran ve belge süreçlerini basitleştiren PDF'lerde etkileşimli form alanları oluşturmanıza olanak tanır.
PDF belgelerime görünür imza eklemek mümkün mü?
Evet, IronPDF ile, PDF belgelerinize görünür imzalar ekleyebilir, böylece alıcıların belgenin güvenli bir şekilde imzalandığı ve doğrulandığı konusunda açık hale gelebilir.
PDF'lerde dijital imzalar için hangi tür sertifikalar kullanılabilir?
Şirket içi kullanımlar veya daha yüksek güvenlik seviyesi gereklilikleri için güvenilir bir Sertifikasyon Otoritesi tarafından verilen sertifikalarla, öz imzalı sertifikalar da dahil olmak üzere PDF'lerde dijital imzalar için çeşitli türde sertifikalar kullanılabilir.
IronPDF, PDF belgesinin değiştirilmediğinden nasıl emin olur?
IronPDF, bir PDF belgesinin değiştirilmediğinden emin olmak için belgenin bütünlüğünü ve özgünlüğünü doğrulayan dijital imzaları kullanır, alıcılara belgenin imzalandıktan sonra değişiklik yapıldıysa uyarır.
ASP.NET Core uygulamalarında dijital imzalama sürecini otomatikleştirebilir miyim?
Evet, IronPDF kullanarak ASP.NET Core uygulamalarında dijital imzalama sürecini otomatikleştirebilirsiniz, bu da toplu işleme ve mevcut iş akışlarına entegrasyon sağlar.

