使用System.Print在“ Microsoft Print to PDF”打印机中设置文件名

时间:2019-05-24 10:41:12

标签: c# pdf printing xpsdocument fixeddocument

我想保存一个IDocumentPaginatorSource,例如通过使用虚拟打印机“ Microsoft打印到PDF”将FixedDocumentXpsDocument转换为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.PrintFileNamePrinterSettings.PrintToFile(请参见12)来完成此操作,但这就是不支持IDocumentPaginatorSource的旧打印框架。

我检查了System.Printing命名空间中的所有类,但是没有找到设置这两个设置的任何方法。也许可以用extending the print schema将这些渗出物改成PrintTicket了吗?如果是这样,您将如何做?

1 个答案:

答案 0 :(得分:0)

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