我想保存一个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
?如果是这样,您具体会怎么做?
最佳答案
我没有使用“Microsoft 打印到 PDF 打印机”的解决方案,但如果您切换到使用 Win2PDF打印机驱动程序,您可以通过注册表以编程方式设置文件名。为此,请参阅 "PDFFileName" or "PDFDefaultFileName" 的文档注册表设置。
关于c# - 使用 System.Print 在 "Microsoft Print to PDF"打印机中设置文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56291023/