使用winspool.Drv-WritePrinter打印使用符号而不是正确的页面打印数百页

时间:2017-12-14 11:13:25

标签: c# pdf printing svc

我有一个svc,它接收一个带有打印机名称的字符串,经过一些操作后,它完成了一个pdf文档的打印。

我正在使用类似此代码的内容来打印pdf

https://vishalsbsinha.wordpress.com/2014/05/06/how-to-programmatically-c-net-print-a-pdf-file-directly-to-the-printer/

它在我的电脑/打印机上完美运行。但是当我在服务器上发布和部署时,当我使用该服务时,它开始打印数百个用符号填充的页面而不是预期的一页pdf。服务器没有安装Adobe Acrobat(我也无法安装)因此我不能使用其他替代方案,例如'new Process() - > Verb =“PrintTo”。

pdf字体是Calibri和Arial,它们安装在我的团队和服务器上。

有没有人可以告诉我为什么它以错误的方式打印以及我有哪些替代方案?

打印机型号为:RICOH Aficio MP C4501 PCL 6

1 个答案:

答案 0 :(得分:1)

您的解决方案要求打印机本机处理PDF文件,许多打印机不支持PDF。打印机驱动程序从Windows GDI转换为打印机的本机格式,但您使用WritePrinter绕过打印机驱动程序。您将需要使用支持PDF的其他纸张打印机,或使用打印机驱动程序而不是WritePrinter将文件发送到打印机。