c# - 使用 System.Print 在 "Microsoft Print to PDF"打印机中设置文件名

标签 c# pdf printing xpsdocument fixeddocument

我想保存一个IDocumentPaginatorSource,例如FixedDocumentXpsDocument,使用虚拟打印机“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.PrintFileNamePrinterSettings.PrintToFile 来完成(参见 12 ),但这是不支持 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/

相关文章:

apache-flex - Flex 移动应用程序 StageWebView 打印

c# - 检查 ex 中的特定文本字段。带有正在运行的 Windows 应用程序的 IE

c# - 如何在使用 foreach 语句循环 winform 控件时更改循环序列

c# - 如何比较两个通用集合?

java - 如何使用 iText 对 pdf 进行数字签名?

iphone - 需要将 UITextView 完整内容渲染成 PDF

java - 在 Android 应用程序中打开并查看 PDF

java - 在 JTable 之前和之后追加用于打印的文本

css - 格式化 html 以使用页码打印

c# - 如何在C#中获取24小时的剩余时间