C# .NET'te JPG'yi PDF'ye Dönüştürme Nasıl Yapılır
IronPDF, ASP.NET uygulamalarında güvenilir PDF yazdırmayı sunar, sunucu tarafı ve müşteri tarafı yetenekleri ile. Ağ yazıcıları, hata işlemleri ve tam denetim izleri ile uyumlu belge oluşturma dahil kurumsal gereksinimleri karşılar.
ASP.NET PDF yazdırma görevleri genellikle kurumsal mimarilere özgü zorluklar içerir. Faturalar, raporlar veya gönderim etiketleri için belgeler oluşturulursa, güvenilir yazdırma işlevselliğini uygulamak, sunucu-müşteri mimarisi karmaşıklıklarında gezinmeyi ve güvenlik uyumluluğunu sağlamayı gerektirir. IronPDF kütüphanesi, uzun süreli arşivleme için dijital imzalar, filigranlama ve PDF/A uygunluğu gibi profesyonel özellikler sağlar.
Bu makale, IronPDF'nin .NET PDF kütüphanesini kullanarak hem sunucu tarafı otomasyon hem de müşteri tarafı yazdırma iş akışlarını kapsayan PDF yazdırma görevlerini nasıl ele alacağınızı açıklamaktadır. Örnekler, en üst düzeyde ifade stilini ve C# ile yazılmış .NET 10'u hedeflemektedir.
ASP.NET'te PDF Yazdırmanın Temel Zorlukları Nelerdir?
Geleneksel masaüstü uygulamaları doğrudan varsayılan yazıcıya erişebilir, ancak ASP.NET Core uygulamaları PDF belgeleri yazdırırken birkaç engelle karşılaşır. Sunucu ortamları, IIS güvenlik sınırlamaları nedeniyle doğrudan yazıcı erişimine sahip değildir ve dosya erişimi için süreç başlatmaya teşebbüs edildiğinde izin hataları atar. Bu sınırlamalar, denetim izlerinin ve erişim kontrollerinin korunması gereken düzenlenmiş endüstrilerde özellikle kritik öneme sahiptir. Ek olarak, web sunucu süreçleri genellikle fiziksel yazıcı sürücülerine erişimi olmayan kısıtlı hizmet hesapları altında çalışır, bu da yerel testler geçtiğinde bile süreç tabanlı yazdırmayı güvenilmez hale getirir.
// 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ı, hem sunucu tarafı hem de müşteri tarafı yazdırma senaryolarını etkili bir şekilde ele almalı ve veri yerleşim gerekliliklerini korumalıdır. IronPDF, harici süreçlere veya yazıcı sürücülerine bağımlı olmayan tamamen yönetilen bir .NET API sağlayarak bu sorunu çözer.
IronPDF'yi Bir ASP.NET Projesine Nasıl Yüklersiniz?
IronPDF, harici bağımlılıklar olmadan PDF belgeleri oluşturma ve yazdırma için eksiksiz bir .NET Core çözümü sunar. NuGet paketi kurulumu hem .NET Framework hem de .NET Core uygulamaları için basittir.
Paket Yöneticisi Konsolu üzerinden kurulum:
Install-Package IronPdf
Veya .NET CLI ile:
dotnet add package IronPdf
IronPDF, diğer kütüphaneleri etkileyen uyumluluk sorunlarını ortadan kaldırarak Windows Server, Linux dağıtımları ve Docker konteynerleri dahil olmak üzere işletim sistemleri arasında çalışır. MacOS'da, kütüphane hem Intel hem de Apple Silicon işlemcilerini yerel olarak destekler.
Kurulumdan sonra, tam özellik kümesini etkinleştirmek için başlangıçta bir lisans anahtarı ekleyin:
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 Oluşturur ve Yazdırırsınız?
Aşağıdaki örnek, bir ASP.NET denetleyici içinde HTML işaretlemesinden bir PDF belgesini nasıl oluşturup yazdıracağınızı gösterir. ChromePdfRenderer, tam CSS desteği ile piksel mükemmelliğinde bir render sağlar. CssMediaType.Print kullanarak HTML'nizde tanımlanmış baskıya özel stil sayfalarını etkin hale getirir, böylece çıktı tarayıcıda bir baskı önizlemesi gösterisine tam olarak uyacak şekilde eşleşir:
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: $999</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: $999</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: $999</p>")
' Print to default server printer
pdf.Print()
Return Ok("Document sent to printer")
End Function
End Class
Bu örnek, render edilen PDF'yi doğrudan varsayılan sunucu yazıcısına gönderir. ChromePdfRenderer, CSS stilini ve yazı tipi formatlamasını korur. JavaScript ağırlıklı sayfalar için, dinamik içeriğin yüklenmesini tamamlaması için yakalama öncesinde RenderingOptions.WaitFor ile bir render gecikmesi ekleyin.
Sunucu Tarafı Yazdırma Çıkışı Neye Benzemektedir?

ASP.NET'te Ağ Yazıcılarını Nasıl Yapılandırırsınız?
Uyum izleme ile belirli yazıcı yönlendirmesi gerektiren kurumlar için, IronPDF, baskı belge yönetimini tamamen sağlar. Kütüphane, ç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, uyum çerçeveleri için gerekli hata işleme ve iş izlemeyi içerir. Yüksek hacimli yazdırma için, sunucu verimliliğini yüksek tutmak için paralel işlem ve bellek optimizasyonu uygulamayı düşünün.
Ağ Yazdırma için Güvenlik Düşünceleri Nelerdir?

Başarılı Yazdırma İşlerini Nasıl Doğruluyorsunuz?

En İyi Müşteri Tarafı Yazdırma Stratejisi Nedir?
Tarayıcılar güvenlik nedenleriyle doğrudan yazıcı erişimini sınırladığından, PDF dosyasını uygun güvenlik başlıklarıyla sunarak müşteri tarafında yazdırmayı uygulayın. IronPDF, dosya teslimatını hızlandırmak için çeşitli sıkıştırma seçeneklerini destekler. Bu desen, nihai kullanıcıların kendi yazdırma hedeflerini tarayıcı yazdırma diyalogundan seçmeleri 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>$999</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>$999</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>$999</b></p>
</body></html>"
End Function
End Class
PDF, kullanıcıların standart yazdırma diyaloglarını kullandığı tarayıcıda açılır. Bu yaklaşım, içerik güvenlik politikaları ve filigranlama ile güvenliği korurken sunucu kaynaklarını yazıcı sürücü bağımlılıklarından uzak tutar.
İstemci Taraflı Baskı Veri Güvenliğini Nasıl Sağlar?

Birden Fazla Giriş Kaynağıyla Nasıl Çalışırsınız?
IronPDF, veri egemenliğini korurken çeşitli giriş kaynaklarını işler -- kurumsal ortamlardaki dinamik baskı iş akışlarını oluşturan geliştiriciler için önemlidir. Kütüphane, HTML dosyaları, URL'ler, HTML dizeleri 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 bir yöntem, baskı kalitesini korurken belge yapısını ve grafikleri muhafaza eder. Uygulama, kimlik doğrulama, giriş doğrulama ve şifreleme desteği içerir. Ek giriş kaynakları için, IronPDF DOCX dosyalarını, RTF belgelerini ve görüntü formatlarını destekler -- bu da onu tüm bir uygulama boyunca tek bir PDF hattı olarak hizmet edecek kadar esnek hale getirir.

Hata Yönetimi ve Günlük Kaydı Nasıl Uygulanır?
Güvenilir hata yönetimi, uyumluluk günlükleri gereksinimleri olan üretim ortamları için esastır. IronPDF, yerel istisna yönetimi ve baskı hatalarını teşhis etmek için bir sorun giderme kılavuzu sunar. Bir korelasyon kimliği deseni, günlük girişlerini denetim geçmişi incelenirken belirli baskı istekleriyle 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 olmadığında bile güvenilir baskıyı garanti eder. Korelasyon kimlikleri, istekleri dağıtılmış sistemler boyunca izlemenizi ve günlük girişlerini denetim izlerindeki belirli baskı işleriyle ilişkilendirmenizi sağlar. Yapılandırılmış hata yanıtları ayrıca çağıran istemcinin uygun eylemi almasına izin verir -- örneğin, bir geri dönüş yazıcısı ile yeniden denemek veya kullanıcıyı bilgilendirmek gibi.
Yazıcılar Kullanılamadığında Ne Olur?
Kodda belirtilen yazıcı mevcut değilse, kod yapılandırılmış bir hata yanıtı döndürür:

Başarılı Baskı İşlerini Nasıl İzlersiniz?
Başarılı bir baskı işi, iş ayrıntıları ile birlikte bir onay mesajı döndürür:

Hangi Gelişmiş Yapılandırma Seçenekleri Mevcuttur?
IronPDF'nin işleme seçenekleri, kurumsal mimariler tarafından gerekli olan karmaşık senaryoları destekler. Kütüphane, yüksek sadakatli belgeler üretirken performans optimizasyonu ve bellek yönetimi için ayarlar sağlar. DpiResolution'i 300'e ayarlamak fiziksel belgeler için uygun baskı kalitesinde bir çıktı oluşturur, CssMediaType.Print seçeneği ise kaynak HTML'de tanımlanmış herhangi bir baskı özel CSS kuralı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 pdf.Print() çağrılarak belge yazıcıya gönderilir. Bu yaklaşım, dijital imzalar ve şifreleme yoluyla belge bütünlüğünü korurken kurumsal güvenlik standartlarına uyumu sağlar. Uzun dönemli arşivleme için, on yıllar boyunca okunur ve çoğaltılabilir kalması gereken belgeler için özel olarak tasarlanmış olan PDF/A uyumluluğunu dikkate alın.
Sunucu Taraflı ve İstemci Taraflı Baskı Nasıl Karşılaştırılır?
Sunucu taraflı ve istemci taraflı baskı arasında seçim yapmak kullanım senaryonuza bağlıdır. Aşağıdaki tablo, başlıca karşılaştırmalı özellikleri özetlemektedir:
| Boyut | Sunucu Taraflı Baskı | İstemci Taraflı Baskı |
|---|---|---|
| Yazıcı erişimi | Sunucudaki ağ ve yerel yazıcılar | Kullanıcının yerel bağlı yazıcıları |
| Kullanıcı etkileşimi | Hiçbiri -- tamamen otomatik | Tarayıcı yazdırma diyalogu görünür |
| Uyumluluk günlüğü | Tam sunucu taraflı denetim izi | Sadece istemci taraflı konsol günlüğü |
| Güvenlik kontrolü | Sunucu tüm kısıtlamaları uygular | Tarayıcı içerik güvenlik politikasını uygular |
| En iyi | Toplu işler, faturalar, düzenlenen endüstriler | İsteyen kullanıcı tarafından tetiklenen baskı |
Belgelendirilmiş denetim yolları gerektiren düzenlenen endüstriler için sunucu taraflı baskı tercih edilen seçimdir. İstemci taraflı baskı, son kullanıcıların baskı hedefi üzerinde kontrol sahibi olması gereken senaryolara uyar.
ASP.NET'te PDF Baskı için Neden IronPDF Tercih Edilmeli?
IronPDF, ASP.NET PDF baskısını karmaşık bir zorluktan basit bir uygulamaya dönüştürürken kurumsal güvenlik standartlarını korur. Adobe Reader veya dış bağımlılıklar gerektirmeden, kütüphane, minimal kodla PDF dosyalarını oluşturur ve yazdırır ve SOC2, HIPAA ve sektöre özgü düzenlemelere uyum sağlar.
Eksiksiz API, çeşitli giriş formatları, düzenleme yetenekleri, güvenlik özellikleri ve tam PDF yönetimi için organizasyon araçlarını destekler. Kütüphanenin geniş eğitimleri, kod örnekleri ve sorun giderme kaynakları mevcut altyapıya kolay entegrasyon sağlar.
PDF oluşturmanın ötesine geçen baskı gereksinimleri için -- örneğin resimlerin veya Office dosyalarının doğrudan yazdırılması gibi -- Iron Software ayrıca IronPrint adlı özel bir .NET yazdırma kütüphanesi sunar. IronPDF'nin PDF içeriği oluşturma ve düzenlemeye odaklanmasının aksine, IronPrint, ara dönüştürme yapmadan doğrudan dosya yazdırmada uzmanlaşır. Microsoft'un ASP.NET belgelerine göre, sunucu taraflı baskı işlemlerine IIS uygulama havuzu kimlik kısıtlamaları uygulanır, bu da bir kütüphane yaklaşımını her türlü üretim dağıtımı için doğru mimari seçim yapar.
Ücretsiz deneme ile bugün başlayın ve IronPDF'nin ASP.NET uygulamalarında belge işlemlerini nasıl basitleştirdiğini deneyimleyin. Tam belgeler, doğrudan mühendislik desteği ve kanıtlanmış uyum sertifikaları ile, üretime hazır PDF baskıyı dakikalar içinde çalışır hale getirebilirsiniz. Daha fazla bilgi için Iron Software'in PDF belge güvenliği kılavuzu ve W3C PDF erişilebilirlik spesifikasyonu sayfasına bakın.
Sıkça Sorulan Sorular
ASP.NET uygulamasından doğrudan bir PDF nasıl yazdırabilirim?
IronPDF'i kullanarak ASP.NET uygulamasından doğrudan bir PDF yazdırabilirsiniz, HTML dosyalarını PDF'ye dönüştürerek ve ardından bir yazıcıya göndererek. IronPDF, bu işlemi yerleşik yöntemleriyle basitleştirir.
ASP.NET içinde PDF yazdırmak için IronPDF kullanmanın avantajları nelerdir?
IronPDF, ASP.NET içinde PDF yazdırmak için kolay entegrasyon, yüksek kaliteli işleme ve HTML içeriğini PDF'ye dönüştürme yeteneği gibi birçok avantaj sunar.
IronPDF kullanarak yazdırmadan önce PDF'yi özelleştirmek mümkün mü?
Evet, IronPDF, başlıklar, altbilgiler ve filigranlar ekleyerek, sayfa boyutlarını ve kenar boşluklarını ayarlayarak PDF'leri yazdırmadan önce özelleştirmenizi sağlar.
IronPDF, büyük PDF dosyalarını yazdırabilir mi?
IronPDF, büyük PDF dosyalarını verimli bir şekilde işleyebilir ve ASP.NET uygulamanızdan bile karmaşık belgelerin doğru ve hızlı bir şekilde yazdırılmasını sağlar.
IronPDF, PDF yazdırma için farklı yazıcı ayarlarını destekler mi?
IronPDF, ihtiyaçlarınıza uyacak şekilde kağıt boyutu, yönlendirme ve yazdırma kalitesini belirtmenize olanak tanıyan çeşitli yazıcı ayarlarını destekler.
ASP.NET içinde yazdırmadan önce PDF'leri ön izleme imkanı var mı?
IronPDF ile, yazdırma komutunu başlatmadan önce kullanıcıların belgeyi gözden geçirmelerine olanak tanıyan bir PDF önizlemesi oluşturabilir ve ASP.NET uygulamanızda görüntüleyebilirsiniz.
IronPDF, hangi formatları yazdırmak için PDF'ye dönüştürebilir?
IronPDF, geniş bir uygulama ihtiyacına uygun hale getirerek, HTML, ASPX ve resim dosyaları da dahil olmak üzere çeşitli formatları yazdırmak için PDF'ye dönüştürebilir.
IronPDF, basılan PDF belgelerinin kalitesini nasıl sağlar?
IronPDF, basılan PDF belgelerinin keskin metin ve net resimlerle orijinal içeriğe yüksek sadakat ile uyduğunu sağlamak için gelişmiş işleme teknolojisini kullanır.
IronPDF, şifrelenmiş veya parola korumalı PDF'leri yazdırmak için kullanılabilir mi?
Evet, IronPDF, ASP.NET uygulamanızda gerekli kimlik bilgilerini sağlayarak güvenli bir şekilde şifrelenmiş veya parola korumalı PDF'leri ele alabilir ve yazdırabilirsiniz.
IronPDF'i mevcut bir ASP.NET uygulamasına entegre etmesi ne kadar kolaydır?
IronPDF'in kapsamlı belgeleri ve çeşitli geliştirme ortamlarını desteklemesi nedeniyle mevcut bir ASP.NET uygulamasına entegre edilmesi oldukça basittir.

