【发布时间】:2019-10-10 23:03:45
【问题描述】:
我想保存一个IDocumentPaginatorSource,例如FixedDocument 或 XpsDocument,使用虚拟打印机“Microsoft Print to PDF”作为 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?如果是这样,你会怎么做?
【问题讨论】:
-
我不久前在没有任何第三方库的情况下解决了这个问题,请在此处查看我的答案:stackoverflow.com/a/58566537/1469494
标签: c# pdf printing xpsdocument fixeddocument