我有从客户电脑打印的文件,我想截取打印的文件并将其存档为文本或 PDF。客户很可能使用特定软件进行打印,我不想与客户可能使用的每个不同软件进行集成。
有没有办法拦截打印作业的内容,无论是通过编程(python 的 win32print 或 wmi、c# 等)还是通过转换在打印排队期间在 C:\Windows\system32\spool\PRINTERS 目录中创建的假脱机文件(.spl 和 .shd)。
答案1
Windows 中的所有打印文件都保存在文件夹中
C:\Windows\System32\spool\PRINTERS
,需要管理员权限才能访问。
这些文件采用文件格式.SPL
,需要查看器。
由于在打印过程中截取这些文件比较困难,因此您可以让 Windows 在打印后保留它们,以便您稍后进行复制。这取决于您的打印机在打印机属性中是否有“保留打印文档”选项(通常在“高级”选项卡中)。
一些可能适合您的 SPL 查看器:
- 韓譯(自由的)
- O&K 打印机查看器 (商业的)
答案2
WMI c#、DEVMODE 和其他方库有时无法准确执行总页数、双面打印或复印等操作。我的解决方案是分析 SPL,在 Windows 10 中,您可以使用 7-zip 打开 SPL 文件,或者其他可以读取压缩文件的软件。