Belgeleri C#'ta Sessizce Nasıl Yazdırabilirim
Sessiz yazdırma, koddan doğrudan bir yazıcıya dokümanlar gönderir - ne diyalog kutuları ne de kullanıcı etkileşimi, kesintiler olmaz. Toplu fatura işleme, kiosk uygulamaları ve Windows Hizmeti arka plan işleri gibi otomatikleştirilmiş iş akışları için yazdırma diyaloğunu ortadan kaldırmak zorunludur. Yerel System.Drawing.Printing ad alanı sessiz yazdırmaya bir yol sunar, ancak ekipler ve projeler arasında zayıf biçimde ölçeklenen olaya dayalı şablon kodu gerektirir.
IronPrint bunu tek bir yöntem çağrısına indirger. Bir NuGet paketi kurarız ve Printer.Print() çağırırız — kütüphane arka planda yazıcı iletişimi, belge render etme ve yazıcı işleme kuyruğu etkileşimini yönetir.
Hızlı Başlangıç: Sessiz Yazdırma
- NuGet aracılığıyla IronPrint kurun:
Install-Package IronPrint - Dosyaya
using IronPrint;ekleyin - Belgeyi varsayılan yazıcıya göndermek için
Printer.Print("filepath")çağırın - Yazıcı adını, DPI'ı, kopyaları ve kağıt yapılandırmasını kontrol etmek için bir
PrintSettingsnesnesi geçirin - Yazdırma işlemi çağrıyı engellemesini istemediğinizde
Printer.PrintAsync()kullanın
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPrint yükleyin
PM > Install-Package IronPrint -
Bu kod parçasını kopyalayıp çalıştırın.
using IronPrint; // Silent print — no dialog, no user interaction Printer.Print("invoice.pdf"); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronPrint kullanmaya başlayın ücretsiz deneme ile
Minimal İş Akışı (5 adımda)
- IronPrint C# yazdırma kütüphanesini yükleyin
Printer.Print("dosya yolu")ile sessiz çıktıyı çağırın- Özel yapılandırma için bir
PrintSettingsnesnesi iletin - Engellenmeyen yürütme için
Printer.PrintAsync()kullanın - Herhangi bir diyalog olmadan sessizce yazdırmak için projeyi çalıştırın
.NET'te Sessiz Baskı Nasıl Çalışır?
.NET System.Drawing.Printing ad alanı, yazdırma işlemleri sırasında durum diyaloğunu bastıran bir StandardPrintController sınıfını içerir. Varsayılan olarak .NET PrintControllerWithStatusDialog kullanır; bu "X sayfası Y sayfası yazdırılıyor" açılır penceresini gösterir. StandardPrintController'a geçmek bu diyaloğu ortadan kaldırır — ama kurulum maliyeti önemli olmaya devam eder.
Yerel yaklaşımla sessizce yazdırmak için bir PrintDocument oluştururuz, içeriği yazdırma grafik yüzeyine çizen bir PrintPage olay işleyicisi ekleriz, StandardPrintController atarız, PrinterSettings yapılandırırız ve Print() çağırırız. Bu, tek bir belge için yaklaşık 15-25 satırlık kurulum kodu gerektirir ve her yeni belge türü veya formatı, PrintPage olayında kendi render mantığına ihtiyaç duyar. PDF render özellikle System.Drawing.Printing içinde yerleşik değildir — sayfaları ve içerdiklerini ayrıştırıp Graphics yüzeyine çizmek için ayrı bir PDF ayrıştırma kütüphanesine ihtiyacımız olacak.
IronPrint bu tüm hattı statik Printer sınıfına sarar. Print() metodu bir dosya yolu veya byte dizisi kabul eder, dosya formatını tespit eder, uygun motor ile render eder ve varsayılan yazıcıya yollar — hepsi diyalog göstermeden.
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-print-pdf-and-byte-array.cs
using IronPrint;
// Print a PDF silently to the default printer
Printer.Print("quarterly-report.pdf");
// Print from a byte array (e.g., retrieved from a database or API)
byte[] pdfData = File.ReadAllBytes("shipping-label.pdf");
Printer.Print(pdfData);
Imports IronPrint
' Print a PDF silently to the default printer
Printer.Print("quarterly-report.pdf")
' Print from a byte array (e.g., retrieved from a database or API)
Dim pdfData As Byte() = File.ReadAllBytes("shipping-label.pdf")
Printer.Print(pdfData)
Print() metodu PDF, PNG, TIFF, JPEG, GIF, HTML ve BMP dosya formatlarini destekler. Dosya yolunu bir string olarak veya ham dosya verileri olarak bir byte[] ile geçiririz ve IronPrint otomatik olarak render stratejisini belirler.
Görsel Çıktı Ayarlarını Nasıl Ayarlayabilirim?
PrintSettings sınıfı, baskı işi üzerinde tam kontrol sağlar. Hedef yazıcıyı, kağıt boyutlarını, yönü, kenarları, DPI'ı, renk modunu, kopya sayısını ve çift taraflı davranışı yapılandırırız — ardından ayarlar nesnesini Printer.Print()'e aktarırız.
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-print-with-settings.cs
using IronPrint;
// Configure detailed print settings
var settings = new PrintSettings
{
PrinterName = "HP LaserJet Pro",
PaperSize = PaperSize.A4,
Orientation = PaperOrientation.Portrait,
DPI = 300,
NumberOfCopies = 2,
Grayscale = false,
PaperMargins = new Margins(10, 10, 10, 10)
};
// Print with custom settings — still silent, no dialog
Printer.Print("monthly-summary.pdf", settings);
Imports IronPrint
' Configure detailed print settings
Dim settings As New PrintSettings With {
.PrinterName = "HP LaserJet Pro",
.PaperSize = PaperSize.A4,
.Orientation = PaperOrientation.Portrait,
.DPI = 300,
.NumberOfCopies = 2,
.Grayscale = False,
.PaperMargins = New Margins(10, 10, 10, 10)
}
' Print with custom settings — still silent, no dialog
Printer.Print("monthly-summary.pdf", settings)
Her özellik, standart bir yazdırma sırası ayarına karşılık gelir. Dpi çıkış çözünürlüğünü kontrol eder — 300 iş belgeleri için yaygın bir seçimken, 150 taslaklar için uygun çalışır. Grayscale rengin gereksiz olduğu durumlarda toner kullanımını azaltır. PaperMargins değerleri milimetre olarak belirtilir.
Belirli Bir Yazıcıyı Nasıl Seçerim?
Sistemde kurulu tüm yazıcıları numaralandırmak için Printer.GetPrinterNames() kullanırız ve ardından hedef yazıcı adını PrintSettings.PrinterName'e atarız.
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-select-specific-printer.cs
using IronPrint;
// List all available printers
List<string> printers = Printer.GetPrinterNames();
foreach (string name in printers)
{
Console.WriteLine(name);
}
// Target a specific network printer
var settings = new PrintSettings
{
PrinterName = printers.First(p => p.Contains("LaserJet"))
};
Printer.Print("document.pdf", settings);
Imports IronPrint
' List all available printers
Dim printers As List(Of String) = Printer.GetPrinterNames()
For Each name As String In printers
Console.WriteLine(name)
Next
' Target a specific network printer
Dim settings As New PrintSettings With {
.PrinterName = printers.First(Function(p) p.Contains("LaserJet"))
}
Printer.Print("document.pdf", settings)
PrinterName belirtilmediğinde, IronPrint işi işletim sisteminin varsayılan yazıcısına yönlendirir. Birden çok yazıcının olduğu ortamlar için — paylaşılmış ofisler, depolar veya baskı odaları — doğru yazıcıyı programatik olarak seçmek yanlış yönlendirilmiş işleri önler.
Toplu Halde Birden Fazla Belgeyi Nasıl Yazdırabilirim?
Toplu yazdırma, basit bir döngü modeli izler. Bir dosya yolu koleksiyonu üzerinde yineleme yaparız ve her belge için Printer.Print() çağırırız. Her çağrı sessiz olduğundan, tüm toplu işlem tek bir diyalog istemi olmadan tamamlanır.
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-batch-print.cs
using IronPrint;
string[] invoices = Directory.GetFiles(@"C:\Invoices\Pending", "*.pdf");
var settings = new PrintSettings
{
PrinterName = "Accounting Printer",
NumberOfCopies = 1,
Grayscale = true
};
int successCount = 0;
foreach (string invoice in invoices)
{
try
{
Printer.Print(invoice, settings);
successCount++;
Console.WriteLine($"Printed: {Path.GetFileName(invoice)}");
}
catch (Exception ex)
{
Console.WriteLine($"Failed: {Path.GetFileName(invoice)} — {ex.Message}");
}
}
Console.WriteLine($"Batch complete: {successCount}/{invoices.Length} documents printed.");
Imports IronPrint
Dim invoices As String() = Directory.GetFiles("C:\Invoices\Pending", "*.pdf")
Dim settings As New PrintSettings With {
.PrinterName = "Accounting Printer",
.NumberOfCopies = 1,
.Grayscale = True
}
Dim successCount As Integer = 0
For Each invoice As String In invoices
Try
Printer.Print(invoice, settings)
successCount += 1
Console.WriteLine($"Printed: {Path.GetFileName(invoice)}")
Catch ex As Exception
Console.WriteLine($"Failed: {Path.GetFileName(invoice)} — {ex.Message}")
End Try
Next
Console.WriteLine($"Batch complete: {successCount}/{invoices.Length} documents printed.")
Her Print() aramasını bir try/catch içinde sararak, tek bir bozuk dosya veya yazıcı zaman aşımı bütün seriyi durdurmaz. Arka plan hizmetlerinde çalışan büyük partiler için, her sonucun bir veritabanına veya izleme sistemine günlüklenmesi, operasyon ekiplerinin inceleyebileceği bir denetim izi sağlar.
Bir İş Parçacığını Engellemeden Asenkron Yazdırmayı Nasıl Yapabilirim?
Printer.PrintAsync() metodu bir Task döndürür, böylece await desenleri ile uyumlu hale gelir. Bu, bir engelleyici yazdırma çağrısının arayüzü donma durumuna getireceği UI uygulamaları ve eşzamanlı işlemleri yöneten hizmetler için gereklidir.
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-async-print.cs
using IronPrint;
// Non-blocking silent print
await Printer.PrintAsync("report.pdf");
// Async batch printing
string[] files = Directory.GetFiles(@"C:\Reports", "*.pdf");
foreach (string file in files)
{
await Printer.PrintAsync(file);
}
Imports IronPrint
' Non-blocking silent print
Await Printer.PrintAsync("report.pdf")
' Async batch printing
Dim files As String() = Directory.GetFiles("C:\Reports", "*.pdf")
For Each file As String In files
Await Printer.PrintAsync(file)
Next
PrintAsync(), Print() ile aynı parametreleri kabul eder — bir dosya yolu veya byte array ve isteğe bağlı bir PrintSettings nesnesi. Asenkron yükleme, aynı anda yazdırma kuyruğuna giren onlarca belgenin olduğu yüksek aktarım hızına sahip senaryolarda iş parçacığı havuzu tükenmesini önler. Bu, modern .NET geliştirme süresince önerilen Görev Tabanlı Asenkron Şablon ile aynı yolu izler.
Platform Değerlendirmeleri Nelerdir?
IronPrint, masaüstü ve mobil platformlarda sessiz yazdırmayı destekler, ancak davranış işletim sistemine göre değişir.
| Platform | Sessiz Yazdırma | Notlar |
|---|---|---|
| Windows (7+) | Tam destek | Diyalog yok, tam PrintSettings kontrolü |
| macOS (10+) | Desteklenir | Yerel macOS yazdırma alt sistemini kullanır |
| iOS (11+) | Diyalog gösterilir | Print() hala sistem yazıcı diyalogunu gösterir |
| Android (API 21+) | Diyalog gösterilir | Print() hala sistem yazıcı diyalogunu gösterir |
Mobil platformlarda, işletim sistemi kısıtlamaları tamamen sessiz yazdırma işlemlerini engeller — Printer.Print() yerel yazdırma diyaloğunu her durumda gösterir. Android için, herhangi bir yazdırma işlemi öncesinde Printer.Initialize(Android.Content.Context) çağrısı gereklidir. Masaüstü platformları (Windows ve macOS), tamamen gözetimsiz sessiz yazdırmayı herhangi bir uyarı olmaksızın destekler.
Bu, Yerel .NET Yazdırma ile Nasıl Karşılaştırılır?
Bir kütüphaneyi benimseyip benimsememeye veya yerel System.Drawing.Printing ad alanını geliştirmeye karar veren mühendislik ekipleri için denge şu şekilde ayrılır:
| IronPrint | Yerel System.Drawing.Printing | |
|---|---|---|
| Kurulum | NuGet paketi, tek satır | 15-25 satır şablon kodu |
| PDF desteği | Yerleşik | Ayrı PDF kütüphanesi gerektirir |
| Görüntü desteği | PNG, TIFF, JPEG, GIF, BMP | Elle çizme gerektirir |
| Sessiz yazdırma | Printer.Print() |
StandardPrintController kurulumu |
| Asenkron destek | PrintAsync() |
Manuel iş parçacığı yönetimi |
| En iyi seçim | PDF/görüntü/HTML yazdıran ekipler | Yerleşik render altyapısına sahip ekipler |
Yerel yaklaşım, belge görüntüleme altyapısına zaten sahip olan ekipler için basit senaryolarda çalışır. PDF, görüntü veya HTML yazdıran ancak mevcut render kodu olmayan ekipler için IronPrint, haftalarca süren geliştirme ve devam eden bakımı ortadan kaldırır. Mayıs 2025'te sunulan %30 yazdırma hızı iyileştirmesi, dahili olarak inşa edilse mühendislik zaman kaynaklarını tüketecek türde bir optimizasyondur.
Sonraki Adımlar
IronPrint ile sessiz yazdırma üç temel metoda dayanıyor: Printer.Print() senkron sessiz çıkış için, Printer.PrintAsync() bloklanmayan yürütme için ve PrintSettings yazdırma işi üzerinde tam kontrol için. Birlikte, tek belgeli, toplu ve eşzamanlı yazdırma senaryolarını masaüstü platformlarda kapsar.
IronPrint eğitimlerini derinlemesine incelemek için keşfedin veya Yazıcı sınıf API referansını inceleyerek tam yöntem yüzeyini gözden geçirin. nasıl yapılır baskı ayarları tepsi seçimi ve düzleştirme gibi ek yapılandırma seçeneklerini kapsar.
Canlı bir ortamda sessiz yazdırmayı test etmek için ücretsiz 30 günlük deneme başlatın — kredi kartı gerekmez. Dağıtıma hazır olduğunuzda, lisanslama seçeneklerini konuşun $749'den başlayarak.
Belirli dağıtım senaryolarında yardım almak için bir Iron Software mühendisiyle sohbet edin.

