Установите имя файла в принтере «Microsoft Print to PDF» с помощью System.Print - PullRequest
1 голос
/ 24 мая 2019

Я хочу сохранить 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 путем расширения схемы печати ?Если да, то как именно вы это сделаете?

1 Ответ

0 голосов
/ 05 июня 2019

У меня нет решения с использованием «принтера Microsoft Print to PDF», но если вы переключились на использование драйвера принтера Win2PDF , вы можете установить имя файла программно через реестр. Для этого см. Документацию по настройкам реестра «PDFFileName» или «PDFDefaultFileName» .

...