IronPDF ile ASP.NET icinde PDF Dosyalarını Nasıl Yazdırılır
IronPDF, ASP.NET uygulamalarında sunucu tarafı ve istemci tarafı yetenekleriyle güvenilir PDF yazdırma sağlar. Ağ yazıcıları, hata yönetimi ve tam denetim izleriyle uyumluluk hazır belge üretimi gibi kurumsal gereksinimleri ele alır.
ASP.NET PDF yazdırma görevleri genellikle kurumsal mimarilere özgü zorluklar içerir. İster faturalar, raporlar veya gönderim etiketleri için belgeler üretiyor olun, güvenilir yazdırma işlevi uygulamak, güvenlik uyumluluğunu korurken sunucu-istemci mimarisi karmaşıklığını aşmayı gerektirir. IronPDF kutuphanesi dijital imzalar, filigran ekleme, uzun vadeli arşivleme için PDF/A uyumluluğu gibi profesyonel özellikler sağlar.
Bu makale, IronPDF'in .NET PDF kutuphanesini kullanarak PDF yazdırma görevlerinin nasıl ele alınacağını, hem sunucu tarafı otomasyonunu hem de istemci tarafı yazdırma iş akışlarını kapsayarak açıklar. Örnekler, en üst düzeyde ifade tarzıyla ve C# diliyle .NET 10'u hedefler.
ASP.NET'te PDF Yazdırmanın Ana Zorlukları Nelerdir?
Geleneksel masaüstü uygulamaları varsayılan yazıcıya doğrudan erişebilir, ancak ASP.NET Core uygulamaları PDF belgelerini yazdırırken çeşitli engellerle karşılaşır. Sunucu ortamları IIS güvenlik kısıtlamaları nedeniyle doğrudan yazıcı erişiminden yoksundur ve dosya erişimi için süreç başlatmaya çalışmak izin hataları oluşturur. Bu kısıtlamalar, denetim izlerinin ve erişim kontrollerinin korunması gerektiği düzenlenmiş sektörlerde özellikle kritik hale gelir. Ayrıca, web sunucusu işlemleri genellikle fiziksel yazıcı sürücülerine erişimi olmayan kısıtlı servis hesapları altında çalışır, bu da yerel testler geçse bile süreç tabanlı yazdırmayı güvenilmez yapar.
// This fails in ASP.NET -- wrong approach
Process.Start(@"C:\Files\document.pdf"); // Works locally, crashes on server
// This fails in ASP.NET -- wrong approach
Process.Start(@"C:\Files\document.pdf"); // Works locally, crashes on server
Yukarıdaki kod yaygın bir hatayı göstermektedir. Web uygulamaları, veri yerleşikliği gereksinimlerini koruyarak hem sunucu tarafı hem de istemci tarafı yazdırma senaryolarını etkili bir şekilde yönetmelidir. IronPDF, dış süreçlere veya yazıcı sürücülerine bağımlı olmayan tamamen yönetilen bir .NET API sağlayarak bunu çözer.
IronPDF'yi Bir ASP.NET Projesine Nasıl Yüklerim?
IronPDF, harici bağımlılıklar olmadan PDF belgelerini üretmek ve yazdırmak için eksiksiz bir .NET Core çözümü sunar. NuGet paket kurulumu hem .NET Framework hem de .NET Core uygulamaları için gayet basittir.
Paket Yöneticisi Konsolu aracılığıyla yükleyin:
Install-Package IronPdf
Install-Package IronPdf
Veya .NET CLI üzerinden:
dotnet add package IronPdf
dotnet add package IronPdf
IronPDF, diğer kutuphaneleri etkileyen uyumluluk sorununu ortadan kaldırarak Windows Sunucu, Linux dağıtımları ve Docker konteynerleri dahil olmak üzere işletim sistemleri genelinde çalışır. MacOS'ta kutuphane hem Intel hem de Apple Silicon işlemcileri yerel olarak destekler.
Kurulumdan sonra, başlangıçta bir lisans anahtarı ekleyerek tam özellik setini etkinleştirin:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Satın almadan önce tüm özellikleri değerlendirmek için bir ücretsiz deneme lisansı mevcuttur.
Sunucu Tarafında PDF Belgeleri Nasıl Üretilir ve Yazdırılır?
Aşağıdaki örnek, bir ASP.NET denetleyicisi içindeki HTML işaretlemesinden nasıl bir PDF belgesi üreteceğinizi ve yazdıracağınızı gösterir. ChromePdfRenderer, pixel-mükemmel işleme ve tam CSS desteği sağlar. CssMediaType.Print kullanarak, HTML'nizde tanımlanan baskıya özgü stil sayfalarını etkinleştirir, böylece çıktı tarayıcıda bir baskı önizlemesinin göstereceği gibi olur:
using IronPdf;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("print")]
public IActionResult PrintDocument()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749.00</p>");
// Print to default server printer
pdf.Print();
return Ok("Document sent to printer");
}
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("print")]
public IActionResult PrintDocument()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749.00</p>");
// Print to default server printer
pdf.Print();
return Ok("Document sent to printer");
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllers()
Dim app = builder.Build()
app.MapControllers()
app.Run()
<ApiController>
<Route("[controller]")>
Public Class PdfController
Inherits ControllerBase
<HttpGet("print")>
Public Function PrintDocument() As IActionResult
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.MarginBottom = 10
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749.00</p>")
' Print to default server printer
pdf.Print()
Return Ok("Document sent to printer")
End Function
End Class
Bu örnek, işlenen PDF'i doğrudan varsayılan sunucu yazıcısına gönderir. ChromePdfRenderer, CSS stillerini ve yazı tipi formatını korur. JavaScript ağırlıklı sayfalar için, dinamik içeriğin yakalamadan önce yüklenmesini tamamlaması için RenderingOptions.WaitFor kullanarak bir işleme gecikmesi ekleyin.
Sunucu Tarafı Yazdırma Çıktısı Nasıl Görünür?

Ağ Yazıcıları ASP.NET'te Nasıl Yapılandırılır?
Uyumluluk takibi ile belirli yazıcı yönlendirmesi gerektiren kurumsal ortamlar için IronPDF, eksiksiz yazdırma belgesi yönetimi sunar. Kutuphane çeşitli kağıt boyutları ve sayfa yönlendirmelerini destekler:
using IronPdf;
using System.Drawing.Printing;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class NetworkPrintController : ControllerBase
{
[HttpPost("print-network")]
public IActionResult PrintToNetworkPrinter(string filePath)
{
try
{
var pdfDocument = PdfDocument.FromFile(filePath);
var printDocument = pdfDocument.GetPrintDocument();
// Specify network printer with failover support
printDocument.PrinterSettings.PrinterName = @"\\server\printer";
printDocument.PrinterSettings.Copies = 2;
printDocument.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169);
var printJobId = Guid.NewGuid().ToString();
printDocument.Print();
return Ok(new
{
success = true,
jobId = printJobId,
message = "Document sent to " + printDocument.PrinterSettings.PrinterName
});
}
catch (Exception ex)
{
return StatusCode(500, new { error = "Print operation failed", details = ex.Message });
}
}
}
using IronPdf;
using System.Drawing.Printing;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class NetworkPrintController : ControllerBase
{
[HttpPost("print-network")]
public IActionResult PrintToNetworkPrinter(string filePath)
{
try
{
var pdfDocument = PdfDocument.FromFile(filePath);
var printDocument = pdfDocument.GetPrintDocument();
// Specify network printer with failover support
printDocument.PrinterSettings.PrinterName = @"\\server\printer";
printDocument.PrinterSettings.Copies = 2;
printDocument.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169);
var printJobId = Guid.NewGuid().ToString();
printDocument.Print();
return Ok(new
{
success = true,
jobId = printJobId,
message = "Document sent to " + printDocument.PrinterSettings.PrinterName
});
}
catch (Exception ex)
{
return StatusCode(500, new { error = "Print operation failed", details = ex.Message });
}
}
}
Imports IronPdf
Imports System.Drawing.Printing
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class NetworkPrintController
Inherits ControllerBase
<HttpPost("print-network")>
Public Function PrintToNetworkPrinter(filePath As String) As IActionResult
Try
Dim pdfDocument = PdfDocument.FromFile(filePath)
Dim printDocument = pdfDocument.GetPrintDocument()
' Specify network printer with failover support
printDocument.PrinterSettings.PrinterName = "\\server\printer"
printDocument.PrinterSettings.Copies = 2
printDocument.DefaultPageSettings.PaperSize = New PaperSize("A4", 827, 1169)
Dim printJobId = Guid.NewGuid().ToString()
printDocument.Print()
Return Ok(New With {
.success = True,
.jobId = printJobId,
.message = "Document sent to " & printDocument.PrinterSettings.PrinterName
})
Catch ex As Exception
Return StatusCode(500, New With {.error = "Print operation failed", .details = ex.Message})
End Try
End Function
End Class
Bu yaklaşım, kağıt formatı ve çözünürlük dahil olmak üzere yazıcı ayarları üzerinde tam kontrol sağlar. Uygulama, uyumluluk çerçeveleri için gerekli olan hata işleme ve iş takibini içerir. Yüksek hacimli yazdırma için, sunucu verimliliğini yüksek tutmak üzere senkron olmayan işlem ve bellek optimizasyonuna yönelik uygulamayı düşünün.
Ağ Yazdırma İçin Güvenlik Dikkate Alınması Gereken Noktalar Nelerdir?

Başarılı Yazdırma İşlemleri Nasıl Doğrulanır?

En İyi İstemci Tarafı Yazdırma Stratejisi Nedir?
Tarayıcılar güvenlik nedenleriyle doğrudan yazıcı erişimini kısıtladığından, istemci tarafı yazdırmayı uygun güvenlik başlıklarına sahip PDF dosyası sunarak uygulayın. IronPDF, dosya teslimatını hızlandırmak için çeşitli sıkıştırma seçeneklerini destekler. Bu model, son kullanıcıların tarayıcı yazdırma iletişim kutusundan kendi yazdırma hedeflerini seçmelerini gerektiğinde idealdir:
using IronPdf;
using IronPdf.Rendering;
using Microsoft.AspNetCore.Mvc;
using System.Text;
[ApiController]
[Route("[controller]")]
public class ClientPrintController : ControllerBase
{
[HttpGet("pdf")]
public IActionResult GetRawPrintablePdf()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false;
var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml());
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserEditing = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.ApplyWatermark(
"<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>",
30,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
HttpContext.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf";
HttpContext.Response.Headers["X-Content-Type-Options"] = "nosniff";
return File(pdf.BinaryData, "application/pdf");
}
[HttpGet("print-wrapper")]
public IActionResult PrintUsingClientWrapper()
{
var printUrl = Url.Action(nameof(GetRawPrintablePdf));
var html = new StringBuilder();
html.AppendLine("<!DOCTYPE html><html lang=\"en\"><head><title>Print Document</title></head><body>");
html.AppendLine($"<iframe src='{printUrl}' style='position:absolute;top:0;left:0;width:100%;height:100%;border:none;'></iframe>");
html.AppendLine("<script>window.onload = function() { setTimeout(function() { window.print(); }, 100); };</script>");
html.AppendLine("</body></html>");
return Content(html.ToString(), "text/html");
}
private static string GetInvoiceHtml() => @"
<html><head><style>
body { font-family: Arial, sans-serif; }
.header { font-weight: bold; color: #1e40af; }
@media print { .no-print { display: none; } }
</style></head>
<body>
<div class='header'>Invoice Summary</div>
<p>Total Amount: <b>$749.00</b></p>
</body></html>";
}
using IronPdf;
using IronPdf.Rendering;
using Microsoft.AspNetCore.Mvc;
using System.Text;
[ApiController]
[Route("[controller]")]
public class ClientPrintController : ControllerBase
{
[HttpGet("pdf")]
public IActionResult GetRawPrintablePdf()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false;
var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml());
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserEditing = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.ApplyWatermark(
"<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>",
30,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
HttpContext.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf";
HttpContext.Response.Headers["X-Content-Type-Options"] = "nosniff";
return File(pdf.BinaryData, "application/pdf");
}
[HttpGet("print-wrapper")]
public IActionResult PrintUsingClientWrapper()
{
var printUrl = Url.Action(nameof(GetRawPrintablePdf));
var html = new StringBuilder();
html.AppendLine("<!DOCTYPE html><html lang=\"en\"><head><title>Print Document</title></head><body>");
html.AppendLine($"<iframe src='{printUrl}' style='position:absolute;top:0;left:0;width:100%;height:100%;border:none;'></iframe>");
html.AppendLine("<script>window.onload = function() { setTimeout(function() { window.print(); }, 100); };</script>");
html.AppendLine("</body></html>");
return Content(html.ToString(), "text/html");
}
private static string GetInvoiceHtml() => @"
<html><head><style>
body { font-family: Arial, sans-serif; }
.header { font-weight: bold; color: #1e40af; }
@media print { .no-print { display: none; } }
</style></head>
<body>
<div class='header'>Invoice Summary</div>
<p>Total Amount: <b>$749.00</b></p>
</body></html>";
}
Imports IronPdf
Imports IronPdf.Rendering
Imports Microsoft.AspNetCore.Mvc
Imports System.Text
<ApiController>
<Route("[controller]")>
Public Class ClientPrintController
Inherits ControllerBase
<HttpGet("pdf")>
Public Function GetRawPrintablePdf() As IActionResult
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = False
Dim pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml())
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserEditing = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center)
HttpContext.Response.Headers("Content-Disposition") = "inline; filename=invoice.pdf"
HttpContext.Response.Headers("X-Content-Type-Options") = "nosniff"
Return File(pdf.BinaryData, "application/pdf")
End Function
<HttpGet("print-wrapper")>
Public Function PrintUsingClientWrapper() As IActionResult
Dim printUrl = Url.Action(NameOf(GetRawPrintablePdf))
Dim html As New StringBuilder()
html.AppendLine("<!DOCTYPE html><html lang=""en""><head><title>Print Document</title></head><body>")
html.AppendLine($"<iframe src='{printUrl}' style='position:absolute;top:0;left:0;width:100%;height:100%;border:none;'></iframe>")
html.AppendLine("<script>window.onload = function() { setTimeout(function() { window.print(); }, 100); };</script>")
html.AppendLine("</body></html>")
Return Content(html.ToString(), "text/html")
End Function
Private Shared Function GetInvoiceHtml() As String
Return "
<html><head><style>
body { font-family: Arial, sans-serif; }
.header { font-weight: bold; color: #1e40af; }
@media print { .no-print { display: none; } }
</style></head>
<body>
<div class='header'>Invoice Summary</div>
<p>Total Amount: <b>$749.00</b></p>
</body></html>"
End Function
End Class
PDF, kullanıcıların standart yazdırma iletişim kutusu aracılığıyla yazdırmayı tetiklediği tarayıcıda açılır. Bu yaklaşım, içerik güvenliği politikaları ve filigran ekleme yoluyla güvenliği korurken, sunucu kaynaklarını yazıcı sürücü bağımlılıkları özgür tutar.
İstemci Tarafı Yazdırma Veri Güvenliğini Nasıl Sağlar?

Birden Fazla Giriş Kaynağıyla Nasıl Çalışılır?
IronPDF çeşitli giriş kaynaklarını değerlendirir ve veri egemenliğini korur -- kurumsal ortamlarda dinamik yazdırma iş akışları oluşturan geliştiriciler için önemlidir. Kutuphane HTML dosyaları, URL'ler, HTML dizgeleri ve Markdown içeriğini destekler:
using IronPdf;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class MultiSourcePrintController : ControllerBase
{
[HttpPost("print-multi")]
public async Task<IActionResult> PrintFromMultipleSources()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false;
renderer.RenderingOptions.Timeout = 30;
// From URL with authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "serviceaccount",
NetworkPassword = "securepassword"
};
var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://reports.internal.example.com/report");
// From HTML file template
var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html");
// From sanitized HTML string
var pdfFromString = renderer.RenderHtmlAsPdf("<h2>Summary Report</h2><p>Generated on demand.</p>");
pdfFromUrl.Print();
return Ok(new
{
message = "PDF documents processed and printed.",
sources = new[] { "URL", "File", "HTML string" },
timestamp = DateTime.UtcNow
});
}
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class MultiSourcePrintController : ControllerBase
{
[HttpPost("print-multi")]
public async Task<IActionResult> PrintFromMultipleSources()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false;
renderer.RenderingOptions.Timeout = 30;
// From URL with authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "serviceaccount",
NetworkPassword = "securepassword"
};
var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://reports.internal.example.com/report");
// From HTML file template
var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html");
// From sanitized HTML string
var pdfFromString = renderer.RenderHtmlAsPdf("<h2>Summary Report</h2><p>Generated on demand.</p>");
pdfFromUrl.Print();
return Ok(new
{
message = "PDF documents processed and printed.",
sources = new[] { "URL", "File", "HTML string" },
timestamp = DateTime.UtcNow
});
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class MultiSourcePrintController
Inherits ControllerBase
<HttpPost("print-multi")>
Public Async Function PrintFromMultipleSources() As Task(Of IActionResult)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = False
renderer.RenderingOptions.Timeout = 30
' From URL with authentication
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "serviceaccount",
.NetworkPassword = "securepassword"
}
Dim pdfFromUrl = Await renderer.RenderUrlAsPdfAsync("https://reports.internal.example.com/report")
' From HTML file template
Dim pdfFromFile = renderer.RenderHtmlFileAsPdf("Templates\report.html")
' From sanitized HTML string
Dim pdfFromString = renderer.RenderHtmlAsPdf("<h2>Summary Report</h2><p>Generated on demand.</p>")
pdfFromUrl.Print()
Return Ok(New With {
.message = "PDF documents processed and printed.",
.sources = New String() {"URL", "File", "HTML string"},
.timestamp = DateTime.UtcNow
})
End Function
End Class
Her yöntem belge yapısını ve grafikleri korurken yazdırma kalitesini sürdürür. Uygulama, kimlik doğrulama, giriş doğrulama ve şifreleme desteğini içerir. Ek giriş kaynakları için IronPDF, DOCX dosyalarını, RTF belgelerini ve görüntü formatlarını destekler -- bu da onu tek bir PDF hattı olarak esnek hale getirir ve bir uygulamanın tamamına hizmet etmeye yeterlidir.

Hata Yönetimi ve Kaydetme Nasıl Uygulanır?
Güvenilir hata yönetimi, uyumluluk kaydı gereksinimleri olan üretim ortamları için gereklidir. IronPDF, yerel istisna yönetimi ve yazdırma hatalarını teşhis etmek için bir sorun giderme kılavuzu sağlar. Bir ilişkilendirme ID modeli, denetim geçmişi gözden geçirilirken belirli yazdırma isteklerini günlük girişleriyle eşleştirmeyi kolaylaştırır.
using IronPdf;
using System.Drawing.Printing;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class SafePrintController : ControllerBase
{
[HttpPost("safe-print")]
public IActionResult SafePrint(string documentId)
{
var correlationId = Guid.NewGuid().ToString();
try
{
var pdf = PdfDocument.FromFile(GetSecureFilePath(documentId));
var availablePrinters = PrinterSettings.InstalledPrinters.Cast<string>().ToList();
var targetPrinter = availablePrinters.FirstOrDefault();
if (string.IsNullOrEmpty(targetPrinter))
{
return BadRequest(new
{
error = "No printer available",
correlationId
});
}
var printDoc = pdf.GetPrintDocument();
printDoc.PrinterSettings.PrinterName = targetPrinter;
printDoc.Print();
return Ok(new
{
message = $"Document {documentId} printed successfully",
printer = targetPrinter,
correlationId,
timestamp = DateTime.UtcNow
});
}
catch (UnauthorizedAccessException)
{
return StatusCode(403, new { error = "Access denied", correlationId });
}
catch (Exception ex)
{
return StatusCode(500, new
{
error = "Printing failed",
correlationId,
message = "Contact support with the correlation ID"
});
}
}
private static string GetSecureFilePath(string documentId) =>
Path.Combine(AppContext.BaseDirectory, "documents", documentId + ".pdf");
}
using IronPdf;
using System.Drawing.Printing;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class SafePrintController : ControllerBase
{
[HttpPost("safe-print")]
public IActionResult SafePrint(string documentId)
{
var correlationId = Guid.NewGuid().ToString();
try
{
var pdf = PdfDocument.FromFile(GetSecureFilePath(documentId));
var availablePrinters = PrinterSettings.InstalledPrinters.Cast<string>().ToList();
var targetPrinter = availablePrinters.FirstOrDefault();
if (string.IsNullOrEmpty(targetPrinter))
{
return BadRequest(new
{
error = "No printer available",
correlationId
});
}
var printDoc = pdf.GetPrintDocument();
printDoc.PrinterSettings.PrinterName = targetPrinter;
printDoc.Print();
return Ok(new
{
message = $"Document {documentId} printed successfully",
printer = targetPrinter,
correlationId,
timestamp = DateTime.UtcNow
});
}
catch (UnauthorizedAccessException)
{
return StatusCode(403, new { error = "Access denied", correlationId });
}
catch (Exception ex)
{
return StatusCode(500, new
{
error = "Printing failed",
correlationId,
message = "Contact support with the correlation ID"
});
}
}
private static string GetSecureFilePath(string documentId) =>
Path.Combine(AppContext.BaseDirectory, "documents", documentId + ".pdf");
}
Imports IronPdf
Imports System.Drawing.Printing
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class SafePrintController
Inherits ControllerBase
<HttpPost("safe-print")>
Public Function SafePrint(documentId As String) As IActionResult
Dim correlationId = Guid.NewGuid().ToString()
Try
Dim pdf = PdfDocument.FromFile(GetSecureFilePath(documentId))
Dim availablePrinters = PrinterSettings.InstalledPrinters.Cast(Of String)().ToList()
Dim targetPrinter = availablePrinters.FirstOrDefault()
If String.IsNullOrEmpty(targetPrinter) Then
Return BadRequest(New With {
.error = "No printer available",
.correlationId = correlationId
})
End If
Dim printDoc = pdf.GetPrintDocument()
printDoc.PrinterSettings.PrinterName = targetPrinter
printDoc.Print()
Return Ok(New With {
.message = $"Document {documentId} printed successfully",
.printer = targetPrinter,
.correlationId = correlationId,
.timestamp = DateTime.UtcNow
})
Catch ex As UnauthorizedAccessException
Return StatusCode(403, New With {.error = "Access denied", .correlationId = correlationId})
Catch ex As Exception
Return StatusCode(500, New With {
.error = "Printing failed",
.correlationId = correlationId,
.message = "Contact support with the correlation ID"
})
End Try
End Function
Private Shared Function GetSecureFilePath(documentId As String) As String
Return Path.Combine(AppContext.BaseDirectory, "documents", documentId & ".pdf")
End Function
End Class
Bu, sistem kaynakları mevcut olmasa bile güvenilir yazdırma işlemlerini garanti eder. İlişkilendirme ID'leri, dağıtık sistemlerde istekleri izlemenize ve günlük girişlerini denetim izlerindeki belirli yazdırma işlerine bağlamanıza olanak tanır. Yapılandırılmış hata yanıtları, çağıran istemcinin uygun eylemi gerçekleştirmesine de izin verir -- örneğin, yedek bir yazıcıyla yeniden denemek veya kullanıcıyı bilgilendirmek gibi.
Yazıcılar Kullanılamadığında Ne Olur?
Koddaki belirtilen yazıcı mevcut değilse, kod yapılandırılmış bir hata yanıtı döndürür:

Başarılı Yazdırma İşlemleri Nasıl İzlenir?
Başarılı bir yazdırma işlemi, iş ayrıntılarını içeren bir onay mesajı döndürür:

Hangi Gelişmiş Yapılandırma Seçenekleri Mevcuttur?
IronPDF'in render seçenekleri, kurumsal mimariler gerektiren karmaşık senaryoları destekler. Kutuphane, yüksek doğrulukta belgeler üretirken performans optimizasyonu ve bellek yönetimi ayarları sağlar. DpiResolution ayarını 300'e getirmek, fiziksel belgeler için uygun olan baskı kalitesinde çıktı üretir, @--CODE-405--@@ seçeneği ise kaynağın HTML'sindeki baskıya özgü CSS kurallarını etkinleştirir:
using IronPdf;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class AdvancedPrintController : ControllerBase
{
[HttpGet("advanced")]
public IActionResult ConfigureAdvancedPrinting()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.EnableJavaScript = false;
renderer.RenderingOptions.RenderDelay = 500;
renderer.RenderingOptions.Timeout = 60;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.DpiResolution = 300;
var pdf = renderer.RenderHtmlAsPdf(GetEnterpriseHtml());
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserEditing = false;
pdf.SecuritySettings.OwnerPassword = Guid.NewGuid().ToString();
pdf.MetaData.Author = "Enterprise Document System";
pdf.MetaData.Subject = "Compliance Document";
pdf.MetaData.Keywords = "enterprise,secure,compliant";
pdf.MetaData.CreationDate = DateTime.UtcNow;
// Apply digital signature for document integrity
// pdf.SignWithFile("/path/to/certificate.pfx", "certificatePassword");
return File(pdf.BinaryData, "application/pdf");
}
private static string GetEnterpriseHtml() => @"
<!DOCTYPE html><html><head>
<style>@page { size: A4; margin: 1cm; } body { font-family: Arial, sans-serif; }</style>
</head><body>
<h1>Enterprise Document</h1>
<p>CONFIDENTIAL -- INTERNAL USE ONLY</p>
</body></html>";
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class AdvancedPrintController : ControllerBase
{
[HttpGet("advanced")]
public IActionResult ConfigureAdvancedPrinting()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.EnableJavaScript = false;
renderer.RenderingOptions.RenderDelay = 500;
renderer.RenderingOptions.Timeout = 60;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.DpiResolution = 300;
var pdf = renderer.RenderHtmlAsPdf(GetEnterpriseHtml());
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserEditing = false;
pdf.SecuritySettings.OwnerPassword = Guid.NewGuid().ToString();
pdf.MetaData.Author = "Enterprise Document System";
pdf.MetaData.Subject = "Compliance Document";
pdf.MetaData.Keywords = "enterprise,secure,compliant";
pdf.MetaData.CreationDate = DateTime.UtcNow;
// Apply digital signature for document integrity
// pdf.SignWithFile("/path/to/certificate.pfx", "certificatePassword");
return File(pdf.BinaryData, "application/pdf");
}
private static string GetEnterpriseHtml() => @"
<!DOCTYPE html><html><head>
<style>@page { size: A4; margin: 1cm; } body { font-family: Arial, sans-serif; }</style>
</head><body>
<h1>Enterprise Document</h1>
<p>CONFIDENTIAL -- INTERNAL USE ONLY</p>
</body></html>";
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class AdvancedPrintController
Inherits ControllerBase
<HttpGet("advanced")>
Public Function ConfigureAdvancedPrinting() As IActionResult
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.EnableJavaScript = False
renderer.RenderingOptions.RenderDelay = 500
renderer.RenderingOptions.Timeout = 60
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.DpiResolution = 300
Dim pdf = renderer.RenderHtmlAsPdf(GetEnterpriseHtml())
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserEditing = False
pdf.SecuritySettings.OwnerPassword = Guid.NewGuid().ToString()
pdf.MetaData.Author = "Enterprise Document System"
pdf.MetaData.Subject = "Compliance Document"
pdf.MetaData.Keywords = "enterprise,secure,compliant"
pdf.MetaData.CreationDate = DateTime.UtcNow
' Apply digital signature for document integrity
' pdf.SignWithFile("/path/to/certificate.pfx", "certificatePassword")
Return File(pdf.BinaryData, "application/pdf")
End Function
Private Shared Function GetEnterpriseHtml() As String
Return "
<!DOCTYPE html><html><head>
<style>@page { size: A4; margin: 1cm; } body { font-family: Arial, sans-serif; }</style>
</head><body>
<h1>Enterprise Document</h1>
<p>CONFIDENTIAL -- INTERNAL USE ONLY</p>
</body></html>"
End Function
End Class
Tüm güvenlik yapılandırmaları uygulandıktan sonra oluşturulduğunda, pdf.Print() belgeyi yazıcıya gönderir. Bu yaklaşım, dijital imzalar ve şifreleme yoluyla belge bütünlüğünü korurken, işletme güvenlik standartları ile uyumluluğu sağlar. Uzun vadeli arşivleme için, PDF belgelerinin on yıllarca okunabilir ve tekrarlanabilir kalmasını sağlamak amacıyla PDF/A uyumluluğunu düşünün.
Sunucu Tarafı ve İstemci Tarafı Yazdırma Nasıl Karşılaştırılır?
Sunucu tarafı ve istemci tarafı yazdırma arasında seçim yapmak sizin kullanım durumunuza bağlıdır. Aşağıdaki tablo, ana ticaret-off'ları özetler:
| Aspekt | Sunucu Tarafı Yazdırma | İstemci Tarafı Yazdırma |
|---|---|---|
| Yazıcı erişimi | Sunucudaki ağ ve yerel yazıcılar | Kullanıcının yerel olarak bağlı yazıcıları |
| Kullanıcı etkileşimi | Hiçbiri -- tamamen otomatik | Tarayıcı yazdırma iletişim kutusu görüntülenir |
| Uyum günlüğü | Tam sunucu tarafı denetim izi | Sadece istemci tarafı konsol günlüğü |
| Güvenlik kontrolü | Sunucu tüm kısıtlamaları uygular | Tarayıcı içerik güvenlik politikasını uygular |
| En uygun | Batch işleri, faturalar, düzenlenen endüstriler | Talep üzerine kullanıcı tetiklemeli yazdırma |
Belgelendirilmiş denetim izlerine ihtiyaç duyan düzenlenen endüstriler için sunucu tarafı yazdırma tercihen seçilir. İstemci tarafı yazdırma, son kullanıcıların yazdırma hedefi üzerinde kontrol sahibi olduğu senaryolara uygundur.
ASP.NET'de PDF Yazdırmak için Neden IronPDF Seçmelisiniz?
IronPDF, ASP.NET PDF yazdırmayı karmaşık bir zorluktan doğrudan bir uygulamaya dönüştürürken, kurumsal güvenlik standartlarını korur. Adobe Reader veya harici bağımlılıklar gerektirmeden kütüphane, SOC2, HIPAA ve endüstri özelindeki düzenlemelere uygunluğu sağlarken, PDF dosyaları oluşturur ve yazdırır.
Tam API, çeşitli giriş formatlarını, düzenleme yeteneklerini, güvenlik özelliklerini ve tam PDF yönetimi için organizasyon araçlarını destekler. Kütüphanenin geniş kapsamlı eğitimleri, kod örnekleri ve sorun giderme kaynakları mevcut altyapıya sorunsuz entegrasyonu garanti eder.
PDF oluşturmanın ötesine geçen yazdırma gereksinimleri için - örneğin görsellerin veya Office dosyalarının doğrudan yazdırılması gibi - Iron Software ayrıca IronPrint sunar, bu bir adanmış .NET yazdırma kütüphanesidir. IronPDF'nin aksine, PDF içeriği oluşturmaya ve manipüle etmeye odaklanan IronPrint, ara dönüşüm olmadan dosyaları doğrudan yazdırma uzmanıdır. Microsoft'un ASP.NET dökümantasyonu'na göre, sunucu tarafı yazdırma işlemleri IIS uygulama havuzu kimlik kısıtlamalarına tabidir, böylece bir kütüphane yaklaşımı herhangi bir üretim dağıtımı için doğru mimari seçilim olur.
ücretsiz denemeyi bugün başlayın ve IronPDF'nin ASP.NET uygulamalarında belge işlemeyi nasıl basitleştirdiğini deneyimleyin. tam dökümantasyon, doğrudan mühendislik desteği ve kanıtlanmış uyum sertifikaları ile üretime hazır PDF yazdırma dakikalar içinde çalışır hale gelebilir. Ek okuma için, Iron Software'in PDF belge güvenliği kılavuzuna ve W3C PDF erişilebilirlik spesifikasyonuna bakın.
Sıkça Sorulan Sorular
Bir ASP.NET uygulamasından doğrudan bir PDF nasıl yazdırabilirim?
IronPDF kullanarak, HTML dosyalarını PDF'ye dönüştürerek ve ardından bunları yazıcıya göndererek bir ASP.NET uygulamasından doğrudan PDF yazdırabilirsiniz. IronPDF, bu süreci yerleşik yöntemleriyle basitleştirir.
ASP.NET'te PDF yazdırmak için IronPDF kullanmanın faydaları nelerdir?
IronPDF, ASP.NET'te PDF yazdırmak için kolay entegrasyon, yüksek kaliteli işleme ve HTML içeriğini kesinlikle PDF'ye dönüştürme yeteneği dahil birçok avantaj sunar.
IronPDF kullanarak yazdırmadan önce PDF üzerinde özelleştirme yapmak mümkün mü?
Evet, IronPDF başlıklar, altbilgiler ve filigranlar ekleyerek, ayrıca sayfa boyutları ve kenar boşlukları ayarlayarak yazdırmadan önce PDF'leri özelleştirmenize olanak tanır.
IronPDF, yazdırmak için büyük PDF dosyalarını yönetebilir mi?
IronPDF, büyük PDF dosyalarını verimli bir şekilde yönetebilir ve ASP.NET uygulamanızdan karmaşık belgelerin bile doğru ve hızlı bir şekilde yazdırılmasını sağlar.
IronPDF, PDF yazdırma için farklı yazıcı ayarlarını destekliyor mu?
IronPDF çeşitli yazıcı ayarlarını destekler, bu sayede ihtiyaçlarınızı karşılayacak şekilde kağıt boyutunu, yönlendirmesini ve yazdırma kalitesini belirtebilirsiniz.
ASP.NET'te yazdırmadan önce PDF'leri önizlemenin bir yolu var mı?
IronPDF ile, kullanıcılara yazdırma komutunu başlatmadan önce belgeyi gözden geçirme olanağı tanıyan ASP.NET uygulamanız içinde PDF önizlemesi oluşturabilir ve gösterebilirsiniz.
IronPDF, yazdırmak için hangi formatları PDF'ye dönüştürebilir?
IronPDF, HTML, ASPX ve resim dosyaları dahil olmak üzere çok çeşitli formatları PDF'ye dönüştürebilir, bu da onu çeşitli uygulama ihtiyaçları için çok yönlü hale getirir.
IronPDF, basılı PDF belgelerinin kalitesini nasıl garanti ediyor?
IronPDF, basılı PDF belgelerinin orijinal içeriğe yüksek sadakatle, keskin metinler ve net resimlerle uygun olmasını sağlamak için gelişmiş bir işleme teknolojisi kullanır.
IronPDF, şifreli veya parola korumalı PDF'leri yazdırmak için kullanılabilir mi?
Evet, IronPDF, ASP.NET uygulamanızda gerekli kimlik bilgilerini sağlayarak, şifreli veya parola korumalı PDF'leri güvenli bir şekilde yazdırmanıza olanak tanır.
IronPDF'u mevcut bir ASP.NET uygulamasına entegre etmek ne kadar kolay?
IronPDF'u mevcut bir ASP.NET uygulamasına entegre etmek, kapsamlı belgeleri ve çeşitli geliştirme ortamlarını desteklemesi nedeniyle oldukça kolaydır.




