Я хочу сохранить IDocumentPaginatorSource
, например FixedDocument
или XpsDocument
, в формате PDF с помощью виртуального принтера «Microsoft Print to PDF»:
var printServer = new System.Printing.PrintServer();
var queue = printServer.GetPrintQueue("Microsoft Print to PDF");
var writer = System.Printing.PrintQueue.CreateXpsDocumentWriter(queue);
writer.Write(Document.DocumentPaginator); // Document = IDocumentPaginatorSource
Это работает, но делаетпринтер откроет диалог сохранения файла.Я хотел бы установить имя файла программно и либо полностью отключить это диалоговое окно, либо хотя бы установить начальное имя файла в диалоговом окне.Возможно ли это?
Я знаю, что это можно сделать при использовании System.Drawing.Printing.PrintDocument
путем установки PrinterSettings.PrintFileName
и PrinterSettings.PrintToFile
(см. 1 , 2 ), но это старая платформа печати, которая не поддерживает IDocumentPaginatorSource
.
Я проверил все классы в пространстве имен System.Printing
, но не нашел способа установить эти два параметра.Может быть, возможно дооснастить эти настройки в PrintTicket
путем расширения схемы печати ?Если да, то как именно вы это сделаете?