CFDocument和高ASCII?

4

我有一个小脚本,使用<cfdocument>创建PDF。它大致如下(代码最小化):

<cfdocument name="mypdf" format="pdf">
    &#9746;
</cfdocument>

当我的数据包含高ASCII字符,比如&#9744;(☑),我会遇到错误:

执行文档处理时发生异常。

详细的错误信息如下:

异常的原因是: coldfusion.document.spi.DocumentExportException: coldfusion.document.DocumentFontException: 读取字体文件c:\windows\fonts\EUB___.PFM时发生异常。这种异常的原因是:java.awt.FontFormatException:不支持sfnt C:\WINDOWS\TEMP+~JF42977.tmp..

看起来这是一个字体问题!更改CSS字体不能解决问题。 我需要检查默认系统字体...
哦,并且不是# 的问题,我已经这样做了:&##9744; 我使用的是ColdFusion 8。

数据中是否包含实际的ASCII字符,还是像微软的智能引号或笑脸这样的特殊字符?我不得不编写一个函数来将真正的笑脸替换为“:)”。我把这个函数称为“unMicrosoft”,哈哈。 - genericHCU
它包含类似于我的示例&#9744;的ASCII。但是当添加特殊字符(如此处的复选框)时,错误也会出现。 - Dollique
这绝对是创建PDF的问题,我们也遇到过很多次,我们的解决方案是删除这些字符或用其他东西替换它们。如果可以的话,您可以使用reReplace来删除它们。 - genericHCU
你能否更新一下你的问题,包括完整的错误信息和堆栈跟踪? - Leigh
Toby,我同意@DanBracuk的回复:这可能比看起来更复杂。你能否提供一个完整且自包含的重现案例。即:不仅是缺少变量值等部分代码片段,而是演示问题的东西;并将其简化为最小的代码,仍然可以演示出问题(顺便说一句,这应该始终是您解决此类问题的一部分)。然后我们可以复制并粘贴以查看在我们的机器上会发生什么。 - Adam Cameron
显示剩余2条评论
1个回答

1
如果我这样做:
<cfscript>
x = "before_______ &##9744; __________after";
</cfscript>

<cfdocument format="pdf">
<cfoutput>#x#</cfoutput>
</cfdocument>

我收到了一份内容为 "before_______after" 的pdf文档。
问题可能存在于您的代码中的其他地方。

有趣的是,尽管我没有收到错误提示,但我也没有看到“投票箱”字符显示出来。所以这一切对我来说似乎有点不稳定。CF 8.0.1 在 Win 7 64 位上运行,默认 JVM。 - Adam Cameron
我刚刚发现这可能是字体问题。我可以显示所有字符到&#x587;。我检查了完整的错误信息读取字体文件c:\windows\fonts\EUB_____.PFM时发生异常。我会更新问题! - Dollique

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接