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 makinesinde kurulu tüm yazıcıları List<string> olarak döndüren tek bir statik yöntem (Printer.GetPrinterNames()) sunar. 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
- NuGet aracılığıyla IronPrint'i yükleyin:
Install-Package IronPrint - Dosyaya
using IronPrint;ekleyin - Yazıcı adlarının
List<string>'sini almak içinPrinter.GetPrinterNames()'yi çağırın - Liste üzerinden iterasyon yapın ve her adı görüntüleyin veya saklayın
- PRINT sırasında seçilen adı
PrintSettings.PrinterName'ye aktarın
-
IronPrint aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package IronPrint -
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ü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 sistemine sorgu gönderir ve kayıtlı tüm yazıcıları 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çenekleri 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 engellenmesinin kabul edilemez olduğu uygulamalar için (WPF, MAUI veya ASP.NET web uygulamaları), IronPrint Printer.GetPrinterNamesAsync() sağlar. Yöntem, Task<List<string>> değerini döndürür ve eşzamanlı karşılığı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
Diğer tüm asenkron API'ler gibi await çağrısını kullanıyoruz. Sonuç, GetPrinterNames() tarafından döndürülen List<string> ile aynıdır, bu nedenle ek bir ayrıştırma veya dönüştürme işlemi gerekmez. Bu asenkron desen, async Task denetleyici eylemleri ve async void olay işleyicileriyle doğal bir şekilde bütünleşir.
Belirli Bir Yazıcıya Adına Göre Nasıl Yazdırırım?
Yazıcı adını aldıktan sonra, bunu PrintSettings.PrinterName'ye atar ve ayarlar nesnesini Printer.Print()'ye aktarırız. 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, Printer.GetPrinterTrays(printerName) kullanarak belirli bir yazıcı için kullanılabilir kağıt tepsilerini de alırız; bu, bir PRINT işinin belirli bir tepsiden kağıt alması gerektiğinde kullanışlıdır.
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, GetPrinterNamesAsync() ile aynı sorguyu eşzamansız olarak çalıştırma ve PrintSettings.PrinterName aracılığıyla bir belgeyi 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.

