3

我想使用虚拟打印机“Microsoft Print to PDF”将IDocumentPaginatorSource, 例如FixedDocument或保存为 PDF:XpsDocument

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.PrintFileNamePrinterSettings.PrintToFile(参见1、2 来完成,但这是不支持的旧打印框架IDocumentPaginatorSource

我检查了命名空间中的所有类,System.Printing但没有找到任何方法来设置这两个设置。PrintTicket也许可以通过扩展打印模式将这些设置改造成?如果是这样,您将如何做到这一点?

4

1 回答 1

0

我没有使用“Microsoft Print to PDF 打印机”的解决方案,但如果您切换到使用Win2PDF打印机驱动程序,您可以通过注册表以编程方式设置文件名。为此,请参阅“PDFFileName”或“PDFDefaultFileName”注册表设置的文档。

于 2019-06-05T15:13:28.050 回答