问题是这样的:
我现在有个一个含有内嵌字体的Pdf文件。通过adobe reader打印时,选择的打印机为虚拟打印机(如SmartPrinter这里基于windows UniDrv实现的虚拟打印机),打印出来的中间文件EMF中包含了EXTCREATEFONTINDIRECTW记录。这个记录是调用了API CreateFontIndirect产生的。
可见adobe reader在渲染出这个EMF的时候产生了中间字体,而一旦关闭这个adobe reader进程,则会删除掉临时字体。最后再去绘制这个EMF就乱码了。
说的比较乱,上面是我的分析过程。使用foxit reader就不会乱码,因为生成的emf中没有EXTCREATEFONTINDIRECTW记录,也就没有产生临时字体。
所以现在我的问题是:
adobe reader为什么和foxit reader打印同一个pdf使用的机制不一样,如何让adobe reader打印时也和foxit reader一样不产生中间字体呢?
这个问题困扰了我很久了,求帮忙解答。谢谢了。