C#'da Belgeleri Sessizce Nasıl Yazdırırım?

This article was translated from English: Does it need improvement?
Translated
View the article in English

Sessiz yazdırma, belgeleri koddan doğrudan bir yazıcıya gönderir — diyalog kutuları yok, kullanıcı etkileşimi yok, kesintiler yok. Toplu fatura işleme, kiosk uygulamaları ve Windows Hizmeti arka plan işleri gibi otomatik iş akışları için, yazdırma diyalogunu ortadan kaldırmak zorunlu bir gereksinimdir. Yerel System.Drawing.Printing ad alanı, sessiz yazdırma için bir yol sağlar, ancak ekipler ve projeler arasında ölçeklendirilmesi zor olan olay odaklı şablonlar gerektirir.

IronPrint ile sessiz yazdırma, tek bir metod çağrısına indirgenir. Bir NuGet paketi yükleriz ve Printer.Print() komutunu çağırırız — kütüphane, arka planda yazıcı iletişimi, belge işleme ve yazdırma kuyruğu etkileşimini yönetir.

Hızlı Başlangıç: Sessiz Yazdırma

  1. IronPrint'i NuGet aracılığıyla yükleyin: Install-Package IronPrint
  2. Dosyaya using IronPrint; ekleyin
  3. Belgeyi varsayılan yazıcıya göndermek için Printer.Print("filepath") komutunu çağırın
  4. Yazıcı adını, DPI'yi, kopya sayısını ve kağıt yapılandırmasını kontrol etmek için bir PrintSettings nesnesi geçirin
  5. PRINT işlemi çağıran iş parçacığını engellememesi gerektiğinde Printer.PrintAsync() kullanın
  1. IronPrint aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPrint
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    using IronPrint;
    
    // Silent print — no dialog, no user interaction
    Printer.Print("invoice.pdf");
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPrint kullanmaya başlayın

    arrow pointer

.NET'te Sessiz Yazdırma Nasıl Çalışır?

.NET System.Drawing.Printing ad alanı, yazdırma işlemleri sırasında durum iletişim kutusunu gizleyen bir StandardPrintController sınıfı içerir. Varsayılan olarak, .NET PrintControllerWithStatusDialog kullanır ve bu, "Y sayfasının X'ini PRINT ediyor" açılır penceresini görüntüler. StandardPrintController'ye geçildiğinde bu iletişim kutusu ortadan kalkar, ancak kurulum maliyeti yine de yüksektir.

Yerel yaklaşımla sessizce PRINT etmek için, bir PrintDocument oluşturur, içeriği PRINT grafik yüzeyine çizen bir PrintPage olay işleyicisi ekler, StandardPrintController atar, PrinterSettings yapılandırır ve Print()'yi ç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 biçimi, PrintPage olayında kendi görüntüleme mantığına ihtiyaç duyar. Özellikle PDF işleme, System.Drawing.Printing içine entegre değildir — sayfaları ayıklamak ve Graphics yüzeyine çizmek için ayrı bir PDF ayrıştırma kütüphanesine ihtiyacımız olacaktır.

IronPrint bu tüm boru hattını sabit Printer sınıfına sarmalar. Print() yöntemi bir dosya yolunu veya bayt dizisini kabul eder, dosya biçimini algılar, uygun motor aracılığıyla işler ve varsayılan yazıcıya gönderir — tüm bunlar bir iletişim kutusu gösterilmeden gerçekleşir.

: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
Printer.Print("quarterly-report.pdf");

// Print from a byte array
byte[] pdfData = File.ReadAllBytes("shipping-label.pdf");
Printer.Print(pdfData);
Imports IronPrint

' Print a PDF silently
Printer.Print("quarterly-report.pdf")

' Print from a byte array
Dim pdfData As Byte() = File.ReadAllBytes("shipping-label.pdf")
Printer.Print(pdfData)
$vbLabelText   $csharpLabel

Print() yöntemi PDF, PNG, TIFF, JPEG, GIF, HTML ve BMP dosya formatlarını destekler. Dosya yolunu bir dize olarak veya ham dosya verilerini byte[] olarak aktarıyoruz ve IronPrint, görüntüleme stratejisini otomatik olarak belirliyor.

Sessiz Çıktı İçin Yazdırma Ayarları Nasıl Yapılandırılır?

PrintSettings sınıfı, yazdırma işi üzerinde tam kontrol sağlar. Hedef yazıcıyı, kağıt boyutlarını, yönünü, kenar boşluklarını, DPI'yi, renk modunu, kopya sayısını ve çift taraflı yazdırma davranışını yapılandırıyoruz — ardından ayar nesnesini Printer.Print()'ye aktarıyoruz. DPI Grayscale PaperMargins

:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-print-with-settings.cs
using IronPrint;

// Configure print settings
var settings = new PrintSettings
{
    PrinterName = "HP LaserJet Pro",
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    Grayscale = false,
    PaperMargins = new Margins(10, 10, 10, 10)
};

// Print with custom settings
Printer.Print("report.pdf", settings);
Imports IronPrint

' Configure print settings
Dim settings As New PrintSettings With {
    .PrinterName = "HP LaserJet Pro",
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .Grayscale = False,
    .PaperMargins = New Margins(10, 10, 10, 10)
}

' Print with custom settings
Printer.Print("report.pdf", settings)
$vbLabelText   $csharpLabel

Her özellik standart bir yazıcı kuyruğu ayarına denk gelir. Resolution çıktı çözünürlüğünü kontrol eder — 300, iş belgeleri için yaygın bir seçimdir, 150 ise taslaklar için uygundur. ColorMode, renkli baskı gerekmediğinde toner kullanımını azaltır. Margins değerleri milimetre cinsinden belirtilmiştir.

Belirli Bir Yazıcıyı Nasıl Seçerim?

Sistemde kurulu tüm yazıcıları listelemek için Printer.GetPrinterNames() kullanıyoruz, ardından hedef yazıcı adını PrintSettings.PrinterName'ye atıyoruz.

: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"))
};

// Print the document
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"))
}

' Print the document
Printer.Print("document.pdf", settings)
$vbLabelText   $csharpLabel

PrinterName belirtilmediğinde, IronPrint işi işletim sisteminin varsayılan yazıcısına yönlendirir. Birden fazla yazıcılı ortamlarda — ortak ofisler, depolar veya baskı odaları — numaralandırma ve doğru yazıcıyı programatik olarak seçmek, yanlış yönlendirilmiş işlerden kaçınır.

Birçok Belgeyi Toplu Halde Nasıl Yazdırırım?

Toplu yazdırma, basit bir döngü modeli izler. Bir dizi dosya yolunu yineleriz ve her belge için Printer.Print() işlevini çağırırız. Her çağrı sessiz olduğundan, tüm toplu iş 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;

// Collect all PDFs in the batch folder
string[] invoices = Directory.GetFiles(@"C:\Invoices\Pending", "*.pdf");

// Configure print settings for the batch
var settings = new PrintSettings
{
    PrinterName = "Accounting Printer",
    NumberOfCopies = 1,
    Grayscale = true
};

// Print each invoice and track successes
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}");
    }
}

// Report batch results
Console.WriteLine($"Batch complete: {successCount}/{invoices.Length} documents printed.");
Imports IronPrint
Imports System.IO

' Collect all PDFs in the batch folder
Dim invoices As String() = Directory.GetFiles("C:\Invoices\Pending", "*.pdf")

' Configure print settings for the batch
Dim settings As New PrintSettings With {
    .PrinterName = "Accounting Printer",
    .NumberOfCopies = 1,
    .Grayscale = True
}

' Print each invoice and track successes
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

' Report batch results
Console.WriteLine($"Batch complete: {successCount}/{invoices.Length} documents printed.")
$vbLabelText   $csharpLabel

Her Print() çağrısını bir try-catch ile sarmak, tek bir bozuk dosya veya yazıcı zaman aşımının tüm işlemeyi durdurmamasını sağlar. Arka plan hizmetlerinde çalışan büyük toplu işlemler için her sonucu bir veritabanına veya izleme sistemine kaydetmek, operasyon ekiplerinin inceleyebileceği bir denetim izi sağlar.

Dizi Bloke Etmeden Asenkron Yazdırmayı Nasıl Gerçekleştiririm?

Printer.PrintAsync() yöntemi bir Task döndürür, bu da onu await kalıplarıyla uyumlu hale getirir. Bu, bir engelleme baskı çağrısının arayüzü donacağından ve eş zamanlı işlemleri ele alan hizmetler için gereklidir.

:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-async-print.cs
using IronPrint;

// Print asynchronously without blocking the thread
await Printer.PrintAsync("report.pdf");

// Print a batch of reports asynchronously
string[] files = Directory.GetFiles(@"C:\Reports", "*.pdf");
foreach (string file in files)
{
    await Printer.PrintAsync(file);
}
Imports IronPrint

' Print asynchronously without blocking the thread
Await Printer.PrintAsync("report.pdf")

' Print a batch of reports asynchronously
Dim files As String() = Directory.GetFiles("C:\Reports", "*.pdf")
For Each file As String In files
    Await Printer.PrintAsync(file)
Next
$vbLabelText   $csharpLabel

PrintAsync(), Print() ile aynı parametreleri kabul eder — bir dosya yolu veya bayt dizisi ve isteğe bağlı bir PrintSettings nesnesi. Asenkron yük bindirimi, belgelerin aynı anda yazdırma kuyruğuna geçtiği yüksek geçiş hızlarında işleyici yüklü kalabalığını engeller. Bu, modern .NET gelişiminin genelinde önerilen Görev Tabanlı Asenkron Kalıp ile aynı yolu izler.

PlatformKaygıları Nelerdir?

IronPrint, masaüstü ve mobil platformlar arasında sessiz yazdırmayı destekler — davranış, işletim sistemine göre farklılık gösterir.

Platform Sessiz Yazdırma Notlar
Windows (7+) Tam destek Diyalog yok, tam PrintSettings kontrolü
macOS (10+) Desteklenen Yerel macOS yazdırma alt sistemi kullanır
iOS (11+) Diyalog gösteriliyor Print() hala sistem yazdırma iletişim kutusunu görüntülüyor
Android (API 21+) Diyalog gösteriliyor Print() hala sistem yazdırma iletişim kutusunu görüntülüyor

Mobil platformlarda, işletim sistemi kısıtlamaları tamamen sessiz yazdırmayı engeller — Printer.Print() her halükarda yerel PRINT iletişim kutusunu görüntüler. Android için, herhangi bir PRINT işleminden önce Printer.Initialize(Android.Content.Context) çağrısı gereklidir. Masaüstü platformları (Windows ve macOS) tüm müdahalesiz sessiz yazdırmayı hiçbir sınırlama olmaksızın destekler.

Bu Yerel .NET Yazdırma ile Nasıl Karşılaştırılır?

Bir kütüphaneyi benimsemeyi veya yerel System.Drawing.Printing ad alanını kullanmayı değerlendiren mühendislik ekipleri için, artıları ve eksileri şu şekilde özetlenebilir:

PDF/UA-1 PDF/UA-2
Yayımlandı 2012 2024
Temel spesifikasyon PDF 1.7 (ISO 32000-1) PDF 2.0 (ISO 32000-2)
Mevzuat kapsamı Section 508, ADA Başlık II, AB Erişilebilirlik Yasası Aynı yönetmeliklerle ileriye dönük uyumlu
Doğrulama araçları veraPDF, Adobe Acrobat Pro, PAC 2024 veraPDF (gelişen destek)
Form alanı semantikleri Standart Gelişmiş (daha zengin erişilebilirlik meta verileri)
En iyi Bugünkü projelerin çoğu için PDF 2.0 özellikleri gerektiren yeni sistemler için

Yerel yaklaşım, ekipte belge işleme altyapısı zaten varsa basit senaryolar için işe yarar. PDF'leri, görselleri veya HTML'leri mevcut işleme kodu olmadan yazdıran ekipler için IronPrint, haftalar süren geliştirimi ve sürekli bakımları ortadan kaldırır. Mayıs 2025 yayınında gönderilen %30 yazdırma hız artışı, dahili olarak inşa edilse mühendislik döngülerine mal olacak türde bir optimizasyondur.

Sonraki Adımlar

IronPrint ile sessiz yazdırma, üç temel yönteme dayanır: senkronize sessiz çıktı için Printer.Print(), engellemesiz yürütme için Printer.PrintAsync() ve yazdırma işi üzerinde tam kontrol için PrintSettings. Birlikte, masaüstü platformlar arasında tek belge, toplu ve eşzamanlı yazdırma senaryolarını kapsar.

Derinlemesine bilgi almak için IronPrint öğreticilerini inceleyin veya Yazıcı sınıfı API referansı'nı tam method yüzeyleri için gözden geçirin. Yazdırma ayarları nasıl yapılır talimatları, tepsi seçimi gibi ek yapılandırma seçeneklerini kapsar.

Canlı bir ortamda sessiz baskı test etmek için ücretsiz 30 günlük deneme başlatın — kredi kartı gerektirmez. Dağıtım için hazır olduğunuzda, $999 adresinden başlayan lisans seçeneklerini inceleyin.

Özel dağıtım senaryolarında yardım için bir Iron Software mühendisi ile sohbet edin.

Sıkça Sorulan Sorular

C#'da sessiz yazdırma nedir?

C#'da sessiz yazdırma, herhangi bir yazdırma iletişim kutusu veya kullanıcı etkileşim istemleri göstermeden belgeleri doğrudan bir yazıcıya yazdırma yeteneğini ifade eder. IronPrint, geliştiricilerin yazdırma ayarlarını programatik olarak yapılandırmalarına izin vererek bu işlevselliği etkinleştirir.

IronPrint ile sessiz yazdırmayı nasıl yapabilirim?

IronPrint ile, DPI, kopya sayısı gibi yazıcı yapılandırmalarını ayarlayarak ve C# kodunuzda zaman uyumsuz yığın yazdırmayı etkinleştirerek, böylece herhangi bir yazdırma iletişim kutusu atlanarak sessiz yazdırma yapabilirsiniz.

IronPrint, PDF dosyalarını sessiz yazdırmak için yönetebilir mi?

Evet, IronPrint, PDF dosyalarını sessiz yazdırmak için özel olarak tasarlanmıştır, böylece PDF belgelerini kesintisiz olarak yazdırabilirsiniz.

IronPrint kullanarak yazıcı ayarlarını yapılandırmak mümkün mü?

Kesinlikle. IronPrint, çeşitli yazıcı ayarlarını yapılandırmanızı sağlar, örneğin yazıcıyı seçmek, DPI ayarlamak ve kopya sayısını belirlemek, tümü kullanıcı müdahalesi olmadan kod aracılığıyla yapılır.

IronPrint zaman uyumsuz yığın yazdırma desteği sağlıyor mu?

Evet, IronPrint, zaman uyumsuz yığın yazdırma desteği sağlar, bu da birden fazla baskı işini sıraya almanıza ve bunları arka planda çalıştırarak C# uygulamalarınızda verimliliği ve performansı artırmanıza olanak tanır.

IronPrint hangi programlama dili ile uyumludur?

IronPrint, .NET framework içinde güçlü sessiz yazdırma yeteneklerine ihtiyaç duyan geliştiriciler için mükemmel bir seçim yaparak C# ile uyumludur.

IronPrint herhangi bir yazdırma iletişim kutusu açmadan yazdırabilir mi?

Evet, IronPrint özel olarak sessiz yazdırma için tasarlanmıştır, bu da belgeleri doğrudan yazıcıya gönderdiği ve herhangi bir yazdırma iletişim kutusunu açmadığı veya kullanıcı girdisi gerektirmediği anlamına gelir.

IronPrint ile hangi tür belgeler yazdırılabilir?

IronPrint, yazdırma için öncelikle PDF belgelerini destekler ve C# uygulamalarınızdan doğrudan kesinti olmadan sorunsuz bir yazdırma deneyimi sunar.

IronPrint ile sessiz yazdırma grup işleme için uygun mudur?

Evet, IronPrint ile sessiz yazdırma, birçok baskı işini zaman uyumsuz olarak yönetmenize ve yürütmenize olanak tanıdığından, grup işleme için idealdir, verimliliği artırır ve iş akışını düzene sokar.

IronPrint, C# uygulamalarında baskı sürecini nasıl iyileştirir?

IronPrint, diyalogsuz baskı çözümü sağlayarak, geliştiricilerin yazdırma yapılandırmalarını programatik şekilde kontrol etmelerine olanak tanır ve etkili grup işleme için zaman uyumsuz işlemleri destekleyerek C# uygulamalarında baskı sürecini iyileştirir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 41,154 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPrint
bir örnek çalıştır belgenizin yazıcıya ulaşmasını izleyin.