Klasa PrintSettings w IronPrint udostępnia właściwość PrinterName, która kieruje zadania drukowania do określonej drukarki. Przypisujemy dokładną nazwę docelowej drukarki jako ciąg znaków, przekazujemy skonfigurowany obiekt PrintSettings do dowolnej metody drukowania IronPrint, a dokument trafia do tej drukarki zamiast do domyślnej drukarki systemowej.
W tym przewodniku omówiono ustawianie nazwy drukarki, wykrywanie dostępnych drukarek w czasie wykonywania oraz łączenie wyboru drukarki z innymi ustawieniami drukowania.
Uruchom projekt, aby wydrukować na wskazanej drukarce PRINT
Jak określić nazwę drukarki w języku C#?
Określamy docelową drukarkę, przypisując jej nazwę do właściwości PrinterName obiektu PrintSettings. Następnie przekazujemy ten obiekt do Printer.Print.
Dane wejściowe
invoice.pdf to stylizowana faktura B2B w formacie A4 z pozycjami i sumami, drukowana na konkretnej drukarce o nazwie PrintSettings.PrinterName.
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)
$vbLabelText $csharpLabel
Najpierw instancjonujemy PrintSettings, co inicjuje PrinterName = null, czyli domyślną drukarkę systemu operacyjnego. Następnie zastępujemy PrinterName dokładną nazwą docelowej drukarki. Kiedy wywołujemy Printer.Print, IronPrint wysyła zadanie bezpośrednio do kolejki tej drukarki.
Wynik
Faktura jest wysyłana bezpośrednio do nazwanej drukarki. Zadanie pojawia się w kolejce drukarki, jak pokazano w przykładzie cichego drukowania.
Wydruk faktury wykonano na "Microsoft Print to PDF" używając PrinterName.
Dwie szczegóły do zapamiętania. Po pierwsze, nazwa drukarki musi dokładnie pasować do tego, co podaje system operacyjny; to porównanie rozróżnia wielkość liter. Niezgodność, taka jak "hp laserjet" zamiast "HP LaserJet", zakończy się niepowodzeniem bez komunikatu lub wygeneruje błąd. Po drugie, jeśli użytkownik otworzy okno dialogowe drukowania za pomocą ShowPrintDialog, wybór w tym oknie zastępuje ustawienia PrinterName z kodu, dając użytkownikom ostateczną kontrolę.
Jeśli nazwa drukarki nie jest znana z góry, możemy zapytać o wszystkie zainstalowane drukarki w czasie uruchomienia zamiast twardo kodować wartość.
Jak sprawdzić dostępne drukarki?
Zamiast na stałe wpisywać nazwy drukarek, możemy wysłać zapytanie do systemu w czasie wykonywania za pomocą Printer.GetPrinterNames. Ta metoda zwraca List<string> zawierający wszystkie drukarki zainstalowane na komputerze.
Dane wejściowe
report.pdf to raport biznesowy A4 z sekcją podsumowania i tabelą danych, wydrukowany na pierwszej dynamicznie odkrytej drukarce.
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
$vbLabelText $csharpLabel
Wywołujemy GetPrinterNames, aby pobrać wszystkie drukarki znane systemowi operacyjnemu, w tym drukarki lokalne, sieciowe i wirtualne, takie jak "Microsoft Print to PDF". Następnie przeglądamy listę i wybieramy drukarkę na podstawie indeksu, dopasowania nazwy lub dowolnej niestandardowej logiki wymaganej przez aplikację.
Wynik
Raport jest wysyłany do pierwszej dostępnej drukarki. Zadanie pojawia się w kolejce drukarki, jak pokazano powyżej.
Wydruk raportu wykonany na pierwszej dostępnej drukarce przy użyciu GetPrinterNames.
Ten wzorzec "znajdz i wydrukuj" jest istotny dla aplikacji wdrazanych na różnych maszynach. Hardcoding nazwy drukarki działa dla scenariuszy jednomezynowych, ale aplikacje produkcyjne powinny zapytac o dostępne drukarki i albo pozwolić użytkownikówi wybrac, albo wybrac jedna programowo na podstawie konwencji nazw.
Wybór drukarki można również sparować z rozmiarem papieru, DPI, liczba kopii i marginesami w jednym obiekcie konfiguracji.
Jak połączyć nazwę drukarki z innymi ustawieniami?
Klasa PrintSettings udostępnia PrinterName wraz z właściwościami dotyczącymi rozmiaru papieru, orientacji, DPI, marginesów, liczby kopii i innych parametrów. Konfigurujemy wszystko w jednym obiekcie.
Dane wejściowe
quarterly-report.pdf to kwartalny raport finansowy w formacie A4 zawierający karty KPI i wykresy, wydrukowany przy użyciu PrinterName w połączeniu z rozmiarem papieru, rozdzielczością DPI i liczbą kopii w jednym obiekcie PrintSettings.
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)
$vbLabelText $csharpLabel
Używamy składni inicjalizacji obiektu dla czytelności. PrinterName kieruje zadanie do "Office Color Printer", podczas gdy pozostałe właściwości kontrolują format wyjściowy. Dpi przy rozdzielczości 300 zapewnia ostry tekst i grafikę. PaperMargins akceptuje wartości w milimetrach poprzez konstruktor Margins. Dla pełnej listy dostępnych właściwości, zobacz przewodnik dotyczący ustawień drukowania.
Wynik
Kwartalny raport drukuje się z nazwanej drukarki, A4 pionowy, 300 DPI, 2 kopie, i 15 mm marginesy połączone w jedno zadanie. Zadanie pojawia się w kolejce drukarki, jak pokazano powyżej.
Wydruk kwartalnego raportu z PrinterName, A4, 300 DPI, 2 kopie i 15 mm marginesy.
IronPrint waliduje konfigurację jako jednostkę i przesyła skonsolidowane ustawienia do sterownika drukarki w jednym zgloszeniu.
Aplikacje, które nie mogą blokować głównego wątku podczas odkrywania drukarek lub drukowania, mogą używać asynchronicznych odpowiedników obu operacji.
Jak wybrać drukarkę i drukować asynchronicznie?
W przypadku aplikacji WPF i WinForms, w których blokowanie głównego wątku nie wchodzi w grę, używamy Printer.GetPrinterNamesAsync i Printer.PrintAsync. Oba zwracają Task, dzięki czemu interfejs użytkownika pozostaje responsywny.
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
$vbLabelText $csharpLabel
Ten przykład oparty na klasach zawiera logikę wykrywania i drukowania w usłudze wielokrotnego użytku. Wywołujemy GetPrinterNamesAsync, aby pobrać listę drukarek bez zawieszania interfejsu użytkownika, a następnie przypisujemy pierwszą dostępną drukarkę do PrinterName. Wywołanie await Printer.PrintAsync wysyła zadanie asynchronicznie.
Wynik
Faktura jest drukowana asynchronicznie na pierwszej odkrytej drukarce. Zadanie pojawia się w kolejce drukarki, jak pokazano powyżej.
Wydruk faktury wykonywany asynchronicznie na pierwszej dostępnej drukarce.
W środowisku produkcyjnym możemy zastąpić printers[0] logiką zgodną z konwencją nazewniczą, np. wyszukiwaniem drukarek zawierających słowo "Label" w przypadku etykiet wysyłkowych lub "Color" w przypadku dokumentów firmowych. Wszystkie metody asynchroniczne IronPrint akceptują ten sam obiekt PrintSettings, więc zachowanie PrinterName jest identyczne w ścieżkach synchronicznych i asynchronicznych.
Pokryte zostały przypisanie statyczne, odkrywanie w czasie uruchomienia, połączone ustawienia i asynchroniczne przepływy pracy, kilka pokrewnych zasobów jest wart zaznaczenia.
Jakie są moje kolejne kroki?
Omówiliśmy określanie nazwy drukarki za pomocą PrintSettings.PrinterName, od statycznego przypisania do dynamicznego wykrywania w czasie wykonywania za pomocą Printer.GetPrinterNames. Kluczowe punkty: nazwy drukarek muszą być dokładnie zgodne (z uwzględnieniem wielkości liter), null domyślnie ustawia drukarkę domyślną systemu operacyjnego, a okna dialogowe drukowania zastępują wybór programowy.
Jak mogę określić nazwę drukarki w C# używając IronPrint?
Za pomocą IronPrint można określić nazwę drukarki w C# poprzez ustawienie właściwości PrinterName. To pozwala na ukierunkowanie konkretnej drukarki do zadań drukowania.
Czym jest IronPrint?
IronPrint jest to biblioteka od Iron Software, która umożliwia programistom zarządzanie zadaniami drukowania w aplikacjach C#, zapewniając funkcjonalność do określenia nazw drukarek i innych opcji drukowania.
Jak odkryć dostępne drukarki w C#?
Używając IronPrint, można łatwo znaleźć dostępne drukarki w sieci poprzez uzyskanie listy drukarek i wybór pożądanego PrinterName do zadania drukowania.
Czy mogę ustawić właściwość PrinterName dynamicznie?
Tak, z IronPrint można dynamicznie ustawiać właściwość PrinterName w kodzie C#, by wybierać pożądaną drukarkę w czasie wykonywania.
Czy możliwe jest drukowanie na drukarce sieciowej przy użyciu IronPrint?
Tak, IronPrint pozwala na określenie i drukowanie na drukarkach sieciowych poprzez ustawienie odpowiedniej właściwości PrinterName w aplikacji C#.