C# ile Yazıcı Adlarını Nasıl Alırım?
Bir sistemde hangi yazıcıların mevcut olduğunu bilmek, belgeleri yazdıran herhangi bir .NET uygulaması için yaygın bir gerekliliktir. Amaç, kullanıcılara bir açılır listeden bir yazıcı seçme şansı vermek veya yazdırma işleri için belirli bir cihaza otomatik olarak yönlendirmek olsun, yazıcı adlarını programatik olarak almak ilk adımdır.
IronPrint, mevcut Windows makinesinde kurulu olan her yazıcıyı bir List<string> olarak döndüren tek bir statik metot olan Printer.GetPrinterNames() sunar. Kurulumunu, senkron ve asenkron alımını ve seçilen bir yazıcı adının bir yazdırma işine nasıl besleneceğini aşağıda ele alıyoruz.
Hızlı Başlangıç: Yazıcı Adlarını Al
- IronPrint'i NuGet aracılığıyla yükleyin:
Install-Package IronPrint - Dosyaya
using IronPrint;ekleyin - Yazıcı adlarının
List<string>listesini elde etmek içinPrinter.GetPrinterNames()çağırın - Listeyi yineleyin ve her adı gösterin veya saklayın
- Yazdırma sırasında seçili adı
PrintSettings.PrinterName'e iletin
-
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; // Retrieve every printer installed on this machine List<string> printers = Printer.GetPrinterNames(); foreach (var name in printers) { Console.WriteLine(name); } -
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.GetPrinterNames()çağrısı yapın- Dönen
Listüzerinde yineleyin - O yazıcıya hedeflemek için
PrintSettings.PrinterName'e bir ad atayın - Yazdırmak için yapılandırılmış ayarları
Printer.Print()'e iletin
Yüklü Tüm Yazıcı Adlarını Nasıl Listeleyebilirim?
Printer.GetPrinterNames(), işletim sistemine sorgu yapar ve kayıtlı her yazıcıyı bir List<string> olarak döndürür. Bu yöntemi bir kez çağırırız ve sonucu yineleyerek devam ederiz:
:path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-list-all-printers.cs
using IronPrint;
using System;
using System.Collections.Generic;
// Get every printer registered on this Windows machine
List<string> printerNames = Printer.GetPrinterNames();
Console.WriteLine($"Found {printerNames.Count} printer(s):\n");
foreach (string name in printerNames)
{
Console.WriteLine($" • {name}");
}
Imports IronPrint
Imports System
Imports System.Collections.Generic
' Get every printer registered on this Windows machine
Dim printerNames As List(Of String) = Printer.GetPrinterNames()
Console.WriteLine($"Found {printerNames.Count} printer(s):" & vbCrLf)
For Each name As String In printerNames
Console.WriteLine($" • {name}")
Next
Konsol Çıkışı
3 yazıcı bulundu:
• Microsoft Print to PDF
• HP LaserJet Pro MFP M428
• OneNote (Masaüstü)
Dönen liste, yerel yazıcıları, ağ yazıcılarını ve sanal yazıcı sürücülerini içerir. Her dize, Windows Ayarlar > Yazıcılar ve tarayıcılar panelinde gösterilen adı aynen karşılar, bu nedenle doğrudan yazdırma ayarları yapılandırmasında kullanılabilir.
Eğer kurulu bir yazıcı yoksa, yöntem bir istisna fırlatmak yerine boş bir liste döndürür. Kullanıcıya seçenek sunmadan önce hızlı bir printerNames.Count kontrolü yeterlidir.
Yazıcı Adlarını Asenkron Olarak Nasıl Alırım?
UI iş parçacığının bloklanmasının kabul edilemez olduğu uygulamalar için — WPF, MAUI veya ASP.NET web uygulamaları — IronPrint Printer.GetPrinterNamesAsync() sağlar. Metot, bir Task<List<string>> döndürür ve senkron karşılığı ile aynı şekilde çalışır:
:path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-async-printer-names.cs
using IronPrint;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
// Await the async call to avoid blocking the UI thread
List<string> printerNames = await Printer.GetPrinterNamesAsync();
foreach (string name in printerNames)
{
Console.WriteLine(name);
}
Imports IronPrint
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
' Await the async call to avoid blocking the UI thread
Dim printerNames As List(Of String) = Await Printer.GetPrinterNamesAsync()
For Each name As String In printerNames
Console.WriteLine(name)
Next
Çağrıyı, herhangi bir async API gibi await yaparız. Sonuç, GetPrinterNames() tarafından döndürülen aynı List<string>'dir, bu nedenle ek bir ayrıştırmaya veya dönüşüm gereksinimine gerek yoktur. Bu async deseni, async Task denetleyici eylemleri ve async void olay işleyicileri ile doğal olarak entegre olur.
Belirli bir Yazıcıya İsimle Nasıl Yazdırırım?
Yazıcı adına sahip olduğumuzda, onu PrintSettings.PrinterName'e atar ve ayar nesnesini Printer.Print()'e iletiriz. Bu, belgeyi bir iletişim kutusu göstermeden doğrudan seçilen yazıcıya gönderir:
:path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-print-to-specific-printer.cs
using IronPrint;
using System.Collections.Generic;
// Step 1 — Retrieve available printers
List<string> printers = Printer.GetPrinterNames();
// Step 2 — Select a printer (first match containing "LaserJet" as an example)
string targetPrinter = printers.Find(p => p.Contains("LaserJet"))
?? printers[0]; // fallback to first available
// Step 3 — Configure print settings
PrintSettings settings = new PrintSettings
{
PrinterName = targetPrinter,
PaperSize = PaperSize.A4,
NumberOfCopies = 1
};
// Step 4 — Print the document
Printer.Print("invoice.pdf", settings);
Imports IronPrint
Imports System.Collections.Generic
' Step 1 — Retrieve available printers
Dim printers As List(Of String) = Printer.GetPrinterNames()
' Step 2 — Select a printer (first match containing "LaserJet" as an example)
Dim targetPrinter As String = printers.Find(Function(p) p.Contains("LaserJet")) _
OrElse printers(0) ' fallback to first available
' Step 3 — Configure print settings
Dim settings As New PrintSettings With {
.PrinterName = targetPrinter,
.PaperSize = PaperSize.A4,
.NumberOfCopies = 1
}
' Step 4 — Print the document
Printer.Print("invoice.pdf", settings)
PrintSettings, Dpi, PaperOrientation, Grayscale ve PaperMargins gibi ek özellikleri destekler. PrintSettings API referansı ve yazdırma ayarları rehberinde tam listeyi görün.
Yazdırma işinin belirli bir tepsiden kağıt çekmesi gerektiğinde Printer.GetPrinterTrays(printerName) kullanarak verili bir yazıcı için mevcut kağıt tepsilerini de alırız.
Sonraki Adımlarım Neler?
Dört işlemi ele aldık: IronPrint'in yüklenmesi, GetPrinterNames() ile tüm yazıcı adlarının listelenmesi, aynı sorgunun GetPrinterNamesAsync() ile eşzamansız çalıştırılması ve bir belgeyi PrintSettings.PrinterName aracılığıyla belirli bir yazıcıya yönlendirmek.
Daha fazla okuma ve daha derin örnekler için bu kaynakları inceleyin:
- IronPrint Eğitimi — Belge Yazdırma baştan sona baskı adımları için.
- DPI, kenar boşlukları, yönlendirme ve daha fazlasını yapılandırmak için Yazdırma Ayarları Rehberi. Printer Sınıfı API Referansı için tüm statik yöntemler listesi.
Ücretsiz deneme lisansı alın canlı ortamda tüm özellikleri test etmek için veya lisans seçeneklerini görüntüleyin dağıtıma hazır olduğunuzda.

