C#'de Yazıcı Adları Nasıl Alınır
Bir sistemde hangi yazıcıların mevcut olduğunu bilmek, belgeleri yazdırmak için gönderen herhangi bir .NET uygulaması için yaygın bir ön koşuldur. İster kullanıcıların açılır menüden bir yazıcı seçmesine izin vermek olsun, ister baskı işlerini belirli bir cihaza otomatik olarak yönlendirmek olsun, yazıcı adlarını programlı olarak almak ilk adımdır.
IronPrint, mevcut Windows makinesindeki her yüklü yazıcıyı bir List<string> olarak döndüren tek bir statik yöntem olan Printer.GetPrinterNames() gösterir. Kurulum, senkron ve asenkron alma ve seçilen bir yazıcı adını bir yazdırma işine nasıl besleyeceğimizi 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 bir
List<string>almak içinPrinter.GetPrinterNames()çağırın - Liste üzerinden iterasyon yapın ve her adı görüntüleyin veya saklayın
- Yazdırma sırasında seçilen bir adı
PrintSettings.PrinterName'e iletin
-
IronPrint aşağıdaki NuGet Paket Yöneticisi ile yükleyin
-
Bu kod parçacığını kopyalayın ve ç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 için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronPrint kullanmaya başlayın
Asgari İş Akışı (5 adım)
- IronPrint C# yazdırma kütüphanesini yükleyin
Printer.GetPrinterNames()çağırın- Döndürülen
List<string>üzerinde iterasyon yapın - O yazıcıyı hedeflemek için bir adı
PrintSettings.PrinterNameolarak atayın - Yazdırmak için yapılandırılmış ayarları
Printer.Print()'e iletin
Kurulu Tüm Yazıcı Adlarını Nasıl Listeleyebilirim?
Printer.GetPrinterNames() işletim sistemini sorgular ve her kayıtlı yazıcıyı bir List<string> olarak döndürür. Bu yöntemi bir kez çağırıyoruz ve sonucun üzerinden iterasyon yapıyoruz:
: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;
// List every installed printer
List<string> printerNames = Printer.GetPrinterNames();
Console.WriteLine($"Found {printerNames.Count} printer(s):\n");
// Print each printer name
foreach (string name in printerNames)
{
Console.WriteLine($" • {name}");
}
Imports IronPrint
Imports System
Imports System.Collections.Generic
' List every installed printer
Dim printerNames As List(Of String) = Printer.GetPrinterNames()
Console.WriteLine($"Found {printerNames.Count} printer(s):" & vbCrLf)
' Print each printer name
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ı ve sanal yazdırma sürücülerini içerir. Her dize, Windows Ayarlar > Yazıcılar ve tarayıcılar panelinde gösterilen kesin adı eşleşir, böylece yazdırma ayarları yapılandırmasında doğrudan kullanılabilir.
Hiç yazıcı kurulmadıysa, yöntem bir istisna atmadan boş bir liste döndürür. Kullanıcıya seçenekler 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ı engellemenin kabul edilebilir olmadığı uygulamalar için — WPF, MAUI veya ASP.NET web uygulamaları — IronPrint, Printer.GetPrinterNamesAsync() sağlar. Yöntem bir Task<List<string>> döndürür ve senkron karşıtıyla 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;
// Retrieve printer names asynchronously
List<string> printerNames = await Printer.GetPrinterNamesAsync();
// Print each printer name
foreach (string name in printerNames)
{
Console.WriteLine(name);
}
Imports IronPrint
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
' Retrieve printer names asynchronously
Dim printerNames As List(Of String) = Await Printer.GetPrinterNamesAsync()
' Print each printer name
For Each name As String In printerNames
Console.WriteLine(name)
Next
Herhangi bir diğer asenkron API gibi, aramayı await. Sonuç, GetPrinterNames() tarafından döndürülen aynı List<string>'dir, dolayısıyla ek bir ayrıştırma veya dönüştürme gerekli değildir. Bu asenkron desen, async Task denetleyici eylemleri ve async void olay işleyicileriyle doğal olarak entegre olur.
Belirli Bir Yazıcıya Adına Göre Nasıl Yazdırırım?
Yazıcı adını aldıktan sonra, onu PrintSettings.PrinterName'e atayarak ve ayar nesnesini Printer.Print()'e geçiririz. Bu, belgeyi diyalog kutusu görüntülemeden 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;
// Retrieve available printers
List<string> printers = Printer.GetPrinterNames();
// Select a printer matching "LaserJet", or fall back to the first available
string targetPrinter = printers.Find(p => p.Contains("LaserJet"))
?? printers[0];
// Configure print settings
PrintSettings settings = new PrintSettings
{
PrinterName = targetPrinter,
PaperSize = PaperSize.A4,
NumberOfCopies = 1
};
// Print the document
Printer.Print("invoice.pdf", settings);
Imports IronPrint
Imports System.Collections.Generic
' Retrieve available printers
Dim printers As List(Of String) = Printer.GetPrinterNames()
' Select a printer matching "LaserJet", or fall back to the first available
Dim targetPrinter As String = printers.Find(Function(p) p.Contains("LaserJet")) _
OrElse printers(0)
' Configure print settings
Dim settings As New PrintSettings With {
.PrinterName = targetPrinter,
.PaperSize = PaperSize.A4,
.NumberOfCopies = 1
}
' Print the document
Printer.Print("invoice.pdf", settings)
PrintSettings, Dpi, PaperOrientation, Grayscale ve PaperMargins gibi ek özellikleri destekler. Tam listeyi PrintSettings API referansı ve yazdırma ayarları nasıl yapılır kılavuzu adresinde inceleyin.
Ayrıca, belirli bir tepsiden kağıt çekilmesi gerektiğinde, bir yazıcı için mevcut kağıt tepsilerini Printer.GetPrinterTrays(printerName) kullanarak alırız.
Sonraki Adımlarım Neler?
Dört işlemi ele aldık: IronPrint'i yükleme, GetPrinterNames() ile tüm yazıcı adlarını listeleme, aynı sorguyu GetPrinterNamesAsync() ile eşzamanlı olarak çalıştırma ve bir belgeyi PrintSettings.PrinterName aracılığıyla belirli bir yazıcıya yönlendirme.
Daha fazla okuma ve daha derin örnekler için bu kaynakları keşfedin:
- Uçtan uca yazdırma kılavuzları için IronPrint Eğitimleri — Belge Yazdırma. DPI, kenar boşlukları, yönlendirme ve daha fazlasını yapılandırma için PrintSettings Nasıl Yapılır.
- Statik yöntemlerin tam listesi için Printer Sınıfı API Referansı.
Canlı bir ortamda her özelliği test etmek için ücretsiz deneme lisansı alın veya kullanıma hazır olduğunuzda lisans seçeneklerini görüntüleyin.
Sıkça Sorulan Sorular
C#'ta yazıcı adlarını almanın en kolay yolu nedir?
C#'ta yazıcı adlarını almanın en kolay yolu, tek bir yöntem çağrısıyla kurulu yazıcıları almanıza olanak tanıyan IronPrint .NET kullanmaktır.
IronPrint kullanarak yazıcı adlarını asenkron olarak alabilir miyim?
Evet, IronPrint .NET asenkron işlemleri destekler, böylece ana thread'i engellemeden yazıcı adlarını alabilirsiniz.
IronPrint kullanarak isimle belirlenen bir yazıcıya yazdırmak mümkün mü?
Kesinlikle, IronPrint .NET, belgeleri tercihinize göre, kurulu herhangi bir yazıcıya doğrudan yazdırabilmeniz için yazıcı adını belirtmenize olanak tanır.
IronPrint tüm .NET platformlarında yazıcı adlarını almayı destekler mi?
IronPrint .NET, çeşitli .NET platformlarıyla çalışmak üzere tasarlanmıştır, farklı ortamlarda yazıcı adlarını sorunsuzca almanıza imkan tanır.
IronPrint, ağ ortamında yazıcı adlarını nasıl yönetir?
IronPrint .NET, hem yerel hem de ağ üzerindeki yazıcılardan yazıcı adlarını alabilir, farklı ağ yapılandırmaları için esnek kullanım imkanı sağlar.

