CFPDFForm填充错误 - java.lang.NullPointerException:Platform,Locale和Platform Name不能为null

时间:2013-04-29 23:17:21

标签: pdf coldfusion cfpdfform

我一直在撞墙,试图找出下面错误的原因。

enter image description here

我正在做的就是运行这个非常简单的CFPDFFORM来填充PDF表单。

<cfset source = expandPath("Customer.pdf")>
<cfpdfform action="populate" source="#source#">
    <cfpdfformparam name="Name" value="John Doe">
    <cfpdfformparam name="Address" value="123 Test Cir">
    <cfpdfformparam name="City" value="Some City">
    <cfpdfformparam name="State" value="Some State">
    <cfpdfformparam name="Zip" value="11111">
    <cfpdfformparam name="Phone" value="123-456-7890">
</cfpdfform>

我做了很多搜索,发现很少有人在谈论这个错误。我找到的一页是ColdFusion CFPDFFORM does not populate PDF form fields。我尝试了通过我的字体并寻找损坏的字体的想法。我甚至使用了一个名为Fix Fonts Folder(http://fix-fonts-folder.en.softonic.com/)的程序,它可以找到一些损坏的字体。但即便如此,我仍然得到错误。所以,我拼命寻找答案。

以防万一,我在Windows 7上运行ColdFusion 10 Update 9.

提前致谢。

4 个答案:

答案 0 :(得分:6)

我编写了一个脚本,它将解析c:\ windows \ fonts中的所有字体文件并报告错误的字体文件:

<cfset fontobj = createobject("java","com.adobe.fontengine.fontmanagement.FontLoader")>
<cfdirectory action="list" directory="c:\windows\fonts" name="fontdir">
<table border="1" style="border-collapse:collapse">
  <tr>
    <th>Font Name:</th>
    <th>Error</th>
  </tr>
  <cfloop query="fontdir">
  <cftry>
    <cfset loaded = fontobj.load(createobject("java","java.net.URL").init("file:///C|/windows/fonts/#fontdir.name#"))>
    <cfif arraylen(loaded) gt 0>
      <cfset dummy="#loaded[1].getPlatformFontDescription()[1].toString()#" >
    </cfif>
    <cfcatch>
      <cfif findnocase("platform",cfcatch.message)>
        <tr>
          <td><cfoutput>#fontdir.name#</cfoutput></td>
          <td><cfoutput>#cfcatch.message#</cfoutput></td>
        </tr>
      </cfif>
    </cfcatch>
  </cftry>
  </cfloop>
</table>

答案 1 :(得分:4)

安装CS6.0后,我也遇到了同样的问题。

平台:

  • CF9.0
  • 赢7
  • CS6(显然)

通过反复试验,如上所述,并且很好地重新启动了coldfusion,我将其缩减为以下字体文件,您可以通过字体管理器卸载 C:\ Windows \ Fonts : -

  • Adob​​eNaskh-Medium.otf
  • MyriadArabic-Bold.otf
  • MyriadArabic-BoldIt.otf
  • MyriadArabic-It.otf
  • MyriadArabic-Regular.otf

希望这有助于某人。花了我几个小时来解决这个问题&#34; niggle&#34;。

答案 2 :(得分:2)

报告的bug的解决方法解决了这个问题。谢谢Miguel-F

解决方法是:“删除安装的所有字体与创意云6应用安装的日期相同或卸载广告素材可以6”

答案 3 :(得分:2)

我自己也有同样的问题。

我的解决方案(补充上述正确答案): 以下是Adobe随Creative Suite 6安装的字体列表: http://www.adobe.com/type/browser/fontinstall/cs6installedfonts.html

  1. 将所有这些字体复制到单独的文件夹,然后从Windows / Fonts目录中删除。
  2. 测试CFPDFFORM位并确认其正常工作
  3. 手动添加它们。
  4. 在我的情况下,事实证明这些字体本身都没有损坏,但可能没有像Windows那样安装。手动重新安装它可以解决问题。

    还有一点需要注意:我已经删除了所有内容,直到MyriadPro(包括它)不断刷新包含CFPDFFORM位的页面,直到它工作为止。因此,对于那些试图快速修复的人,我建议从MyriadPro系列开始。它可能会发现它是破坏事物的那个。

    希望这可以帮助别人!

    ///////////////更新日期7/02/2014 ////////////////////////// /////////////////////////////////////////

    事实证明,在获得一定数量的积分之前我无法发表评论,因此我无法说出Jesse Carlton的回答(上图)对我有多大帮助。

    这是解决我错误的又一步:

    1. 事实证明,某些Adobe安装的字体的名称值为null,因此cfpdfform严重失败。要查找这些文件,请使用Jesse Carlton创建的脚本(再次,它在上面的答案中)

    2. 至少在我的情况下,所有这些字体都有重复值(正常和_0个)。使用Windows字体管理器可以看到正常值并易于删除。但是,_0个不可见。

    3. 下载FontExpert2014(或任何其他字体管理器)等软件,找到您在Windows字体管理器中看不到的文件。

    4. 要检查是否删除了所有损坏的字体,请再次运行步骤1中的脚本。如果你得到空表,请尝试以前失败的cfpdfform位,一切都应该是好的。

    5. *步骤3中的软件作为评估版下载并为我做了诀窍。