Print to file w C# na Windows 10

2021-01-07

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";

Robert Skarżycki - zdjęcie profilowe

Pisanina, której autorem jest Robert Skarżycki - programista .NET, mąż szczęśliwej żony, rodzic
moje bio
mój Twitter
mój LinkedIn
moje szkolenia i warsztaty

© 2022, Built with Gatsby & passion