Jak wydrukować PDF z C #

Próbuję rozwiązać ten problem przez prawie 2 dni. W sieci jest dużo więcej lub mniej dobrych rozwiązań, ale żaden nie pasuje idealnie do mojego zadania.

Zadanie:Drukuj programowo plik PDFZrób to za pomocą stałej drukarkiNie pozwól użytkownikowi zrobić więcej niż jednego Button_ClickZrób to cicho - im więcej, tym lepiejZrób to po stronie klientaPierwsze rozwiązania:

Zrób to za pomocą Forms.WebBrowser

Jeśli mamy zainstalowany program Adobe Reader, dostępna jest wtyczka do wyświetlania plików PDF w przeglądarce internetowej. Dzięki temu rozwiązaniu mamy ładny podgląd i dzięki webbrowserControlName.Print () możemy uruchomić kontrolkę, aby wydrukować jej zawartość.

Problem - wciąż mamy PrintDialog.

Uruchom AcroRd32.exe z argumentami startowymi

Następujące polecenie CMD pozwala nam użyć Adobe Reader do wydrukowania naszego pliku PDF.

InsertPathTo .. AcroRd32.exe / t "C: sample.pdf" "printNetwork nazwa_pliku"

Problemy - potrzebujemy bezwzględnej ścieżki do AcroRd32.exe | istnieje okno Adobe Reader, które musi zostać otwarte, dopóki zadanie drukowania nie będzie gotowe.

Użyj ustawień wstępnych systemu Windows

Process process = new Process();

process.StartInfo.FileName = pathToPdf; 
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printerName + "\""; 
process.Start();

process.WaitForInputIdle();
process.Kill();

Problem - wciąż pojawia się okno Adobe Reader, ale po zakończeniu drukowania zwykle się zamyka.

Rozwiązanie - przekonaj klienta do korzystania z Foxit Reader (nie używaj dwóch ostatnich linii kodu).

Konwertuj strony PDF na Drawing.Image

Nie mam pojęcia, jak to zrobić za pomocą kodu, ale kiedy to zrobię, reszta to tylko bułka z masłem. Drukowanie.PrintDocument może spełnić wszystkie wymagania.

Czy masz pomysł na Drawing.Image z tych plików PDF lub innego podejścia, jak to zrobić?

Pozdrawiam, Max

questionAnswers(11)

yourAnswerToTheQuestion