2013-03-12 81 views
1

我开发了用于打印(C#MVC 4)的Web服务,该服务创建XPS文档,然后通过各种打印机服务器(MS)将它们打印到各种打印队列。对于Sharp打印队列,这一切都可以正常工作,但打印到Lexmarks时所有字体数据都会丢失,尽管字体大小保持正确。在XPS查看器中查看时,XPS文档全部正确显示,并且通过查看器通过打印服务器打印出Lexmarks时正常工作。字体位于打印服务器上,Sharp队列与Lexmarks位于相同的打印服务器上,字体均在XPS文档中指定。更改Lexmark打印机设置,驱动程序等似乎没有区别。XPS打印:在Lexmark打印机上丢失字体

在这里唯一相关的问题(从一年前开始)说MS解决方案是由于字体转换错误而在进行服务器端打印时关闭打印假脱机程序。

我知道这是一个非常模糊的问题,但如果任何人已经经历了这种痛苦,并有任何提示如何解决这个问题,我会很感激。

+0

我一直在寻找一个解决方案这一段时间,它不只是利盟的驱动程序,我看到了与其他打印机相同的东西。它似乎与从Windows服务打印有关。它似乎在V4驱动程序(基于XPS)中得到了修复,所以我猜测MS不会对此做任何事情,只是等待打印机制造商将其驱动程序迁移到最新的规格。 – 2013-12-29 19:09:11

回答

1

好了,没有太多去,但我怀疑三两件事:

  1. XPS文档你是生产引用的字体不嵌入他们在您的服务器上
  2. 利盟打印驱动程序XPS驱动
  3. 字体未安装在打印机本身上。

假设我是对的,更改其中的任何三个事实应该纠正这种情况,但我做出#3没有保证的。

发生这种情况的原因是直到XPS被光栅化时才使用字体 - 将其转换为原始图像数据。我怀疑,在利盟案件中,这是发生在设备上,而在夏普案件中,它发生在打印服务器上。这得益于从XPS查看器打印XPS文档正常工作的事实,因为这会导致查看器正在运行的计算机上发生光栅化。

在打印服务器上使用非XPS驱动程序会导致性能下降。打印服务器将有效地将XPS转换为GDI,然后非XPS驱动程序将转换为另一个PDL,如PostScript或PCL。我怀疑夏普驱动程序就是这种情况,不过也可能是夏普驱动程序是在主机上执行光栅化的XPS驱动程序。

+0

感谢您的详细回复,指针和感觉。我今天正在调查这件事,把所有事情都分解成基本的东西,你的回答给了我指定的领域。 – user1999476 2013-03-13 06:05:30

+0

根据规范,XPS文档必须包含所有引用的资源,包括字体,如果不是,那么它不是有效的XPS文档。 – 2013-12-29 19:06:08

1

行..经过大量测试后发现了以下内容(并可能对其他人有所帮助)。

回答上述问题.. 1)嵌入字体确认并使用MS官方测试XPS文件。这并没有帮助。 2)使用的Lexmark驱动程序是winprint> RAW。改变这并没有帮助。 2)字体安装在打印机上

测试 1)新的打印服务器,直接打印到尖锐的打印机。问题出现在字体丢失。解决方法是将打印后台处理程序设置更改为仅在打印完所有文档后才打印。问题消失了,但我不想依赖配置需要专家设置的打印机的人员,所以我拒绝了这一点。这是客户的网络,我无法控制它。 2)打印到打印服务器上的现有Web服务(使用用户模拟)到Sharp队列以确认这仍然起作用。证实。

3)将打印服务器上的现有Web服务(使用用户模拟)打印到Lexmark队列中,但仍然失败并且字体丢失。 4)从2个单独的IIS盒打印到Lexmark队列的打印服务器(使用域应用程序池标识帐户),并且现在可以正常工作(在c#new printserver(\ printerservername)中),因为Lexmarks正确打印。打印到Lexmark队列的打印服务器上的现有Web服务(使用域应用程序池标识帐户),但仍然失败(在c#new localprintserver()中)。

6)打印到现有Web服务(使用打印服务器到利盟队列域上的应用程序池标识帐户),这仍然失败(在C#中新的打印服务器(\ printerservername))

所有这一切的结果如果您在本地打印字体由于某些奇怪的原因而丢失,但是如果您远程打印,字体将保留。所有服务器都具有相同的基本设置(没有xps查看器等,域应用程序池帐户是服务帐户),我可以看到的唯一区别是新的本地打印服务器针对新的打印服务器(\ printservername)调用。使用web配置文件保存本地或远程设置,将相同的代码从机器移植到机器。所有机器都具有IIS 7.5 .net 4.5 MVC 4并位于可信区域中。

因此,我的解决方案将被拆分,非远程打印将在远程打印服务器服务的文档生成器上执行,并且Sharp打印将在打印服务器上完成(这是Equitrac“follow me”打印所需的),因为我不想使用Kerberos代表团。如前所述,这不是我的领域,我可以看到整个地方磨损停止打印明智的失败spn或kerberos失败。

无论如何,希望这可以帮助别人。