我的iPhone应用程序创建PDF文件(Arial字体)。普通的iPhone 3.1.x版本运行良好(除了已知的问题,无法在Google Docs或BlackBerry上正确查看iPhone上创建的PDF文件)。
当我更新我的OS 3.2和iPad项目时,它的工作方式相同,而且iPhone,iPad和Mac OS X(预览应用程序)上的PDF文件看起来仍然很棒。但是现在在Windows(Vista)上,Acrobat 9.3.1说“无法提取嵌入字体'XYZABC + ArialMT'。某些字符可能无法正确显示或打印”。
事实上Acrobat然后使用一些通用字体而不是Arial(或者我尝试的其他任何字体)。
每次创建PDF文件时,Quartz 3.2似乎都会生成这些“随机”嵌入字体名称(每次XYZABC都会发生变化)。我不知道问题是否只是带有加号的有点奇怪的“临时”嵌入字体名称,或者Quartz 3.2嵌入字体的方式。
我已尝试过现有代码(使用CGPDFContext*
函数),以及新支持的UIGraphics*
函数,结果相同。
如何在iPad上创建PDF文件以在Windows上正确显示?
答案 0 :(得分:3)
重要更新:从iOS 4.2开始,Apple修复了我报告的错误;从iOS上的Quartz生成的PDF现在包含正确的嵌入字体。我将按原样留下此答案的其余部分,但不要在iOS 4.2或更高版本上使用此机制。
Adobe Reader是正确的,如果没有帮助,遵循PDF规范。我对此进行了调查,因为它影响了我的某个应用,并记录了我的调查结果:http://blog.nomzit.com/2010/08/18/annoying-bug-in-quartz-pdfcontext-font-handling/
这里记录了一个简单的解决方法,使Adobe Reader的行为与更有用的替代方案相同。
我还向Apple报告了这个错误
答案 1 :(得分:1)
尝试使用Foxit Reader在Windows上打开PDF文件而不是Adobe Reader。它对我有用。
答案 2 :(得分:0)
在iPad上使用Pages时,会出现同样的问题。我有兴趣找到答案:
http://discussions.apple.com/thread.jspa?threadID=2389034&tstart=0
答案 3 :(得分:0)
除了Phil的分析,我发现有几个Windows用户没有安装一个或多个标准字体(如Helvetica)。通过Quartz生成的PDF将引用这些标准字体之一,Adobe Reader将使用其查找表中的下一个最接近的字体进行渲染,从而导致奇怪的PDF。 iPhone / iPad标准系统字体没有正确嵌入,可能是由于Phil在Quartz生成的PDF中找到的。
在我跑过的所有情况下,通过让用户在他们的Windows机器上安装Helvetica(或任何其他缺少的字体)来解决这个问题,此时PDF将正确呈现。