如何用C#调用SumatraPDF自动指定打印输出文件名及目录?
使用C#自动化SumatraPDF打印并跳过保存对话框
你遇到的弹窗问题不是SumatraPDF导致的,而是Microsoft Print to PDF这个系统虚拟打印机本身会触发保存对话框。下面提供两个可行的自动化方案:
方案一:用SumatraPDF原生参数直接输出PDF
SumatraPDF自带直接生成PDF的功能,不需要依赖系统虚拟打印机,能彻底跳过弹窗。修改你的代码如下:
var outputFilePath = "C:\\your-target-output.pdf"; var proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "SumatraPDF.exe"; // 使用-print-to-output参数直接指定输出路径 proc.StartInfo.Arguments = $"-print-to-output \"{outputFilePath}\" C:\\ttt.pdf"; proc.StartInfo.RedirectStandardError = false; proc.StartInfo.RedirectStandardOutput = false; proc.StartInfo.UseShellExecute = true; proc.Start(); proc.WaitForExit();
这个方案是最稳定的,因为是SumatraPDF原生支持的功能,不需要修改系统设置。
方案二:配置系统虚拟打印机的默认输出路径
如果坚持要用Microsoft Print to PDF,可以通过修改注册表设置默认输出路径和文件名,避免弹窗:
- 打开注册表编辑器,定位到
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices - 找到
Microsoft Print to PDF对应的条目,修改其值来指定默认输出路径(注意此方法需要管理员权限,且不同Windows版本可能有差异)
内容的提问来源于stack exchange,提问作者user2232273
相关产品推荐
相关产品推荐

