Jeśli zdarzy Ci się konieczność drukowania czegoś z C# za pomocą bibliotecznej klasy System.Drawing.Printing.PrintDocument
- i będziesz chciał wydrukować coś do pliku (do PDFa), to wiedz, że musisz dodać jedną ważną linijkę. A mianowicie - podać PrinterName
w PrinterSettings
:
printDocument.PrinterSettings.PrinterName = "Microsoft Print to PDF";
Jeśli tego nie zrobisz, a będziesz drukował do pliku (czyli ustawisz PrintToFile
na true
), to plik co prawda się stworzy, ale będzie jakiś taki corrupted i przeglądarka PDFów nie będzie chciała go otworzyć. Taki przynajmniej miałem efekt na Windowsie 10.
Finalnie całość konfiguracji wyglądałaby tak:
var printDocument = new PrintDocument();
printDocument.PrinterSettings.PrinterName = "Microsoft Print to PDF";
printDocument.PrinterSettings.PrintToFile = true;
printDocument.PrinterSettings.PrintFileName = @"some\path\to\file.pdf";