我想保存一个IDocumentPaginatorSource
,例如通过使用虚拟打印机“ Microsoft打印到PDF”将FixedDocument
或XpsDocument
转换为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
命名空间中的所有类,但是没有找到设置这两个设置的任何方法。也许可以用extending the print schema将这些渗出物改成PrintTicket
了吗?如果是这样,您将如何做?
答案 0 :(得分:0)
我没有使用“ Microsoft打印到PDF打印机”的解决方案,但是如果您切换为使用Win2PDF打印机驱动程序,则可以通过注册表以编程方式设置文件名。为此,请参阅"PDFFileName" or "PDFDefaultFileName"注册表设置的文档。