C#'da Yazıcı Adını Belirtme
IronPrint'in PrintSettings sınıfı, baskı işlerini belirli bir yazıcıya yönlendiren bir PrinterName özelliğini ortaya çıkarır. Hedef yazıcının tam adını bir dizi olarak atarız, yapılandırılan PrintSettings nesnesini herhangi bir IronPrint baskı yöntemine geçiririz; belge bu durumda aynı sistem varsayılanına gitmek yerine bu yazıcıya gider.
Bu kılavuz, bir yazıcı adı belirlemeyi, çalışırken kullanılabilir yazıcıları keşfetmeyi ve yazıcı seçimini diğer baskı ayarlarıyla birleştirmeyi anlatır.
Hızlı Başlangıç: Yazıcı Adını Belirle
-
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; // Print a document to a specific printer Printer.Print("report.pdf", new PrintSettings { PrinterName = "HP LaserJet Pro M404" }); -
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
- Bir
PrintSettingsnesnesi oluşturun PrinterName'i hedef yazıcının adına ayarlayınPrinter.Print'e ayarları gönderin- Projeyi çalıştırarak belirtilen yazıcıya yazdırın
C#'da Yazıcı Adını Nasıl Belirtirim?
PrinterName özelliğine bir PrintSettings nesnesinin iç adını atayarak belirtilir. Sonra o nesneyi Printer.Print'e geçiririz.
Giriş
Fatura.pdf bir stilize edilmiş A4 B2B faturasını içerir ve satır öğeleri ve toplamlar ile belirli bir ad yazıcıya PrintSettings.PrinterName via Printing edilir.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-set-printer-name.cs
using IronPrint;
// Configure print settings with a target printer
PrintSettings settings = new PrintSettings();
settings.PrinterName = "Microsoft Print to PDF";
// Print to the specified printer
Printer.Print("invoice.pdf", settings);
Imports IronPrint
' Configure print settings with a target printer
Dim settings As New PrintSettings()
settings.PrinterName = "Microsoft Print to PDF"
' Print to the specified printer
Printer.Print("invoice.pdf", settings)
Önceki örnekte PrintSettings başlattık, bu da PrinterName = null başlatılıp işletim sistemi varsayılan yazıcısını işaret eder. Sonra, hedef yazıcının tam dize adını ile PrinterName üzerine yazarız. Printer.Print çağırdığımızda, IronPrint iş yönlendirmesini doğrudan o yazıcının kuyruğuna gönderir.
Çıktı
Fatura doğrudan adlandırılmış yazıcıya gönderilir. İş, sessiz baskı örneğinde görüldüğü gibi yazdırıcı kuyruğunda görünür.
Fatura çıktısı, PrinterName kullanılarak "Microsoft Print to PDF"ye yazdırıldı.
Dikkat edilmesi gereken iki ayrıntı. İlk olarak, yazıcı adı işletim sisteminin rapor ettiğiyle tam olarak eşleşmelidir; Bu karşılaştırma büyük harf duyarlıdır. "hp laserjet" yerine "HP LaserJet" gibi eşleşme yanlışı, sessizce başarısız olur veya bir hata atar. İkincisi, kullanıcı ShowPrintDialog aracılığıyla bir yazdırma diyaloğu açarsa, diyalog seçimi, kullanıcıların nihai kontrol sahibi olmasını sağlayarak kodda ayarlanan PrinterName'yi geçersiz kılar.
Yazıcı adı önceden bilinmiyorsa, değeri sert kodlamak yerine çalışma zamanında yüklenen tüm yazıcıları sorgulayabiliriz.
Kullanılabilir Yazıcıları Nasıl Keşfederim?
Yazıcı adlarını kod içine sabitlemek yerine, çalıştırma sırasında sistemi sorgulamak için Printer.GetPrinterNames kullanabiliriz. Bu metod, bilgisayardaki her kurulan yazıcıyı içeren bir List<string> döndürür.
Giriş
report.pdf, dinamik olarak keşfedilen ilk yazıcıya yazdırılan bir A4 iş raporudur ve özet bölümü ve veri tablosu ile birlikte yazdırılır.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-discover-printers.cs
using IronPrint;
// List every installed printer
List<string> printers = Printer.GetPrinterNames();
// Print each printer name
foreach (string name in printers)
{
Console.WriteLine(name);
}
// Print to the first available printer
if (printers.Count > 0)
{
Printer.Print("report.pdf", new PrintSettings
{
PrinterName = printers[0]
});
}
Imports IronPrint
' List every installed printer
Dim printers As List(Of String) = Printer.GetPrinterNames()
' Print each printer name
For Each name As String In printers
Console.WriteLine(name)
Next
' Print to the first available printer
If printers.Count > 0 Then
Printer.Print("report.pdf", New PrintSettings With {
.PrinterName = printers(0)
})
End If
Aa polikleinikler ve sanal yazıcılar gibi Microsoft Print to PDF gibi yerel, ağ ve sanal yazıcılar dahil, işletim sisteminin bildiği her yazıcıyı geri almak için GetPrinterNames çağırırız. Sonra listeyi döner ve bir yazıcıyı indeks, ad eşleştirme veya uygulamanın gereksinim duyduğu herhangi bir özel mantıkla seçeriz.
Çıktı
Rapor ilk mevcut yazıcıya gönderilir. Yukarıda görüldüğü gibi iş yazıcı kuyruğunda görünür.
Rapor çıktısı, GetPrinterNames ile ilk mevcut yazıcıya yazdırıldı.
Bu keşfet-sonra-yazdır deseni, farklı makinelerde dağıtılan uygulamalar için önemlidir. Bir yazıcı adını sabitlemek, tek makine senaryoları için işe yarar, ancak üretim uygulamaları, kullanılabilir yazıcıları sorgulamalı ve ya kullanıcıya seçim yapmalarını izin vermeli ya da isimlendirme konvansiyonlarına dayalı olarak bir yazıcıyı programatik olarak seçmelidir.
Yazıcı seçimi aynı zamanda tek bir yapılandırma nesnesinde kağıt boyutu, DPI, kopya sayısı ve kenar boşlukları ile eşleştirilebilir.
Yazıcı Adını Diğer Ayarlarla Nasıl Birleştiririm?
PrintSettings sınıfı, kağıt boyutu, yönlendirme, DPI, kenar boşlukları, kopya sayısı ve daha fazlası için özelliklerin yanı sıra PrinterName'nu açığa çıkarır. Tüm ayarları tek bir nesnede yapılandırırız.
Giriş
Çeyrek raporu.pdf, bir PrintSettings nesnesinde birleştirilmiş kağıt boyutu, DPI ve kopya sayısıyla PrinterName ile basılan A4 çeyrek yıllık mali rapor ve KPI kartları ve grafiklerini içerir.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-combined-settings.cs
using IronPrint;
// Configure full print settings with a named printer
PrintSettings settings = new PrintSettings
{
PrinterName = "Office Color Printer",
PaperSize = PaperSize.A4,
PaperOrientation = PaperOrientation.Portrait,
Dpi = 300,
NumberOfCopies = 2,
PaperMargins = new Margins(15, 15, 15, 15),
Grayscale = false
};
// Print the quarterly report
Printer.Print("quarterly-report.pdf", settings);
Imports IronPrint
' Configure full print settings with a named printer
Dim settings As New PrintSettings With {
.PrinterName = "Office Color Printer",
.PaperSize = PaperSize.A4,
.PaperOrientation = PaperOrientation.Portrait,
.Dpi = 300,
.NumberOfCopies = 2,
.PaperMargins = New Margins(15, 15, 15, 15),
.Grayscale = False
}
' Print the quarterly report
Printer.Print("quarterly-report.pdf", settings)
Okunabilirliği artırmak için nesne başlatıcı sözdizimi kullanırız. İş PrinterName tarafından Office Renkli Yazıcıya yönlendirilirken, geri kalan özellikler çıktı formatını kontrol eder. Eski kullanıcılar 300'de çalışan keskin metin ve grafikler. PaperMargins Margins yapıcı ile milimetre değerlerini kabul eder. Kullanılabilir özelliklerin tam listesi için baskı ayarları kılavuzu'na bakın.
Çıktı
Üç aylık rapor, adlandırılmış yazıcı, A4 portre, 300 DPI, 2 kopya ve tek bir işte bir araya getirilen 15 mm kenar boşlukları ile basılır. Yukarıda görüldüğü gibi iş yazıcı kuyruğunda görünür.
PrinterName, A4, 300 DPI, 2 kopya ve 15 mm kenar boşlukları ile üç aylık rapor çıktısı.
IronPrint, bu birimi bir bütün olarak doğrular ve birleşik ayarları yazıcı sürücüsüne tek bir iş olarak gönderir.
Baskı keşfi veya yazdırma sırasında ana dizini engelleyemeyen uygulamalar, her iki işlemin de eşzamansız versiyonlarını kullanabilir.
Yazıcı Seçimi ve Asenkron Yazdırma Nasıl Yapılır?
Ana dizinin engellendiği durumda kullanıcılar için, WPF ve WinForms uygulamalarında Printer.GetPrinterNamesAsync ve Printer.PrintAsync kullanıyoruz. Her iki UI yanıtını koruyarak bir Task döndürür.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-async-printer-select.cs
using IronPrint;
using System.Threading.Tasks;
public class PrintService
{
public async Task PrintToFirstAvailableAsync(string filePath)
{
// Discover available printers asynchronously
List<string> printers = await Printer.GetPrinterNamesAsync();
// Exit if no printers are installed
if (printers.Count == 0)
{
Console.WriteLine("No printers found.");
return;
}
// Configure settings for the first available printer
PrintSettings settings = new PrintSettings
{
PrinterName = printers[0],
Dpi = 300
};
// Print asynchronously
await Printer.PrintAsync(filePath, settings);
}
}
Imports IronPrint
Imports System.Threading.Tasks
Public Class PrintService
Public Async Function PrintToFirstAvailableAsync(filePath As String) As Task
' Discover available printers asynchronously
Dim printers As List(Of String) = Await Printer.GetPrinterNamesAsync()
' Exit if no printers are installed
If printers.Count = 0 Then
Console.WriteLine("No printers found.")
Return
End If
' Configure settings for the first available printer
Dim settings As New PrintSettings With {
.PrinterName = printers(0),
.Dpi = 300
}
' Print asynchronously
Await Printer.PrintAsync(filePath, settings)
End Function
End Class
Bu sınıf tabanlı örnek, yeniden kullanılabilir bir hizmette keşfetme ve yazdırma mantığını sarar. UI'yi dondurmadan yazıcı listesini almak için GetPrinterNamesAsync çağırırız, sonra mevcut ilk yazıcıyı PrinterName'a atarız. await Printer.PrintAsync çağrısı işi eşzamanlı olarak gönderir.
Çıktı
Fatura ilk keşfedilen yazıcıya eşzamansız olarak basılır. Yukarıda görüldüğü gibi iş yazıcı kuyruğunda görünür.
Fatura çıktısı eşzamansız olarak ilk mevcut yazıcıya basıldı.
Üretimde, gönderim etiketleri için mantık veya markalı belgeler için "Etiket" içeren yazıcıları veya "Renk"'i arayan mantık ile printers[0] değiştirilmiş olabilir. IronPrint'in async yöntemleri, tüm PrintSettings nesnesini kabul eder, bu nedenle eşzamanlı ve eşzamansız yollar için PrinterName davranışı aynıdır.
Sabit atama, çalışma zamanı keşfi, birleştirilmiş ayarlar ve eşzamansız iş akışlarını kapsayan her şeyle, bir avuç ilgili kaynak yer işaretçiliğine değer.
Sonraki Adımlarım Neler?
PrintSettings.PrinterName üzerinden bir yazıcı adı belirtilmesini nasıl yaptığımızı ele aldık, sabit bir atamadan dinamik çalışma zamanı keşfine kadar Printer.GetPrinterNames kullanarak. Ana noktalar: yazıcı adları tam olarak eşleşmelidir (büyük harf duyarlı), null işletim sistemi varsayılan yazıcısına varsayılandır ve baskı diyalogları programlanabilir seçimi geçersiz kılar.
get printer names örneği bağımsız bir keşif kesiti sağlar, baskı ayarları kılavuzu ise ayrıntılı olarak ayarlanabilir her özelliği kapsar. Printer class API referansı tüm statik baskı yöntemlerini belgelendirir ve PrintSettings API referansı ise her alan ve varsayılanları listeler. Baştan sona bir tur için Belge Yazdır kılavuzu her şeyi bir araya getirir.
Canlı bir projede yazıcı seçimini test etmek için ücretsiz 30 günlük deneme başlatın. Gönderilmeye hazır olduğunda, lisans seçeneklerine bir bakın, $999'dan başlar.
https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html https://ironsoftware.com/csharp/print/how-to/print-settings/https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html
Sıkça Sorulan Sorular
IronPrint kullanarak C#'da bir yazıcı adını nasıl belirleyebilirim?
IronPrint ile, yazıcı adını C#'da belirleyebilirsiniz, PrinterName özelliğini ayarlayarak yazdırma görevleriniz için belirli bir yazıcıyı hedeflemenize olanak tanır.
IronPrint nedir?
IronPrint, Iron Software'in C# uygulamalarında yazdırma görevlerini yönetmek için geliştiricilere olanak sağlayan bir kütüphanedir, yazıcı adlarını ve diğer yazdırma seçeneklerini belirtme işlevselliği sunar.
C#'da mevcut yazıcıları nasıl keşfedebilirim?
IronPrint kullanarak, ağınızdaki mevcut yazıcıları kolayca keşfedebilirsiniz, yazıcıların listesini erişerek ve yazdırma işiniz için istenen PrinterName'i seçerek.
PrinterName özelliğini dinamik olarak ayarlayabilir miyim?
Evet, IronPrint ile, C# kodunuzda çalışırken seçilen yazıcıyı belirlemek için PrinterName özelliğini dinamik olarak ayarlayabilirsiniz.
IronPrint kullanarak ağ yazıcısına yazdırmak mümkün mü?
Evet, IronPrint, C# uygulamanızda uygun PrinterName özelliğini ayarlayarak ağ yazıcılarına yazdırma işlemini gerçekleştirmenize olanak tanır.

