Altbilgi içeriğine atla
IRONPDF KULLANARAK

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
$vbLabelText   $csharpLabel

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
SHELL

Veya .NET CLI üzerinden:

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

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"
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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?

Windows 'Baskı Çıktısını Farklı Kaydet' iletişim kutusu, dosya sistemi klasörlerini ve sürücüleri gösterir ve kaydetme türü olarak PDF formatı seçilmiştir

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
$vbLabelText   $csharpLabel

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?

Windows Baskı Çıktısını PDF olarak kaydet iletişim kutusu, klasörler ve sürücü depolama bilgileri ile dosya sistemi gezinimini gösteriyor

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

Tarayıcı konsolu çıktısı, 'başarı: true' içeren bir JSON yanıtı ve belgenin Microsoft Print to PDF'ye gönderildiğine dair onay mesajı ile başarılı bir baskı işlemi gösteriyor

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
$vbLabelText   $csharpLabel

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?

Microsoft Edge print dialog showing a PDF invoice preview with $749.00 total and various print settings on the right side

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
$vbLabelText   $csharpLabel

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.

PDF belgeleri işlendikten sonra Windows, belgelerin varsayılan yazıcıya gönderildiğini onaylayarak baskı çıktısını kaydetmeye olanak tanıyan bu kaydet iletişim kutusunu görüntüler

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
$vbLabelText   $csharpLabel

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:

Kullanıcıların belgeleri yazdırmaya çalışırken karşılaşabilecekleri yaygın bir yazıcı hata mesajı

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:

Windows komut istemi, iç içe geçmiş bir Masaüstü klasör yapısında bulunan bir dosya için başarılı PDF yazdırma onayını gösteriyor

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
$vbLabelText   $csharpLabel

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:

ASP.NET'te Sunucu Tarafı vs. İstemci Tarafı PDF Yazdırma
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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara