应用程序由作为前端的 Flex、作为中间层的 ColdFusion 9 和作为后端的 MySQL 5 组成。
MySQL 表包含一些包含 HTML 格式的字段。因此,如果字段具有值字符串“Test Record”,则它将存储为
<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="12" COLOR="#0B333C" LETTERSPACING="0" KERNING="0">Test Record<FONT SIZE="8"></FONT></FONT></P></TEXTFORMAT>
在 MySQL 表中
现在,该字段的值正在 PDF 文档中打印为
<cfdocument format="pdf" filename="#report_filename_format#" orientation="landscape"
overwrite="yes"
marginbottom="0" marginleft="0" marginright="0" margintop="0"
pagetype="legal">
<tr>
<td width="20%" style="background-color:##CCCCCC; font-weight:bold; text-transform:uppercase; vertical-align:top;">
Value
</td>
<td width="80%">#printrecord.field_value#</td>
</tr>
由于字段值是用HTML格式存储的,占用的空间较多,而且没有 控制打印文本的字体类型和字体大小。
ColdFusion 9 中是否有任何函数可以将字段的值转换为常规文本(不带 HTML 格式),以便“测试记录”无论是否存储为字体大小 10 都会打印相同的内容或者字体大小30?
我正在考虑一种方法是在 Flex 应用程序中打印记录,使用 TextArea 控件的 field.text 属性(在 Flex 中) 转换为常规文本,然后将转换后的值传递给 ColdFusion 以在 PDF 文档中打印。还有其他更好的选择吗?
如有任何建议,我们将不胜感激。
最佳答案
其实“解决方案”很简单:
<cfscript>
data = '<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="12" COLOR="##0B333C" LETTERSPACING="0" KERNING="0">Test Record<FONT SIZE="8"></FONT></FONT></P></TEXTFORMAT>';
regex = "<(.|\n)*?>";
result = reReplaceNoCase(data, regex, "", "all");
writeOutput(result);
</cfscript>
我在示例的 HTML 中添加了一个附加哈希标记,以避免语法错误。根据您所说的,我认为无论如何这都会通过数据库查询来获取。
另外(现在挑剔!)如果可以的话,我建议使用新值更新数据库并摆脱内联样式以支持 CSS ;-)
关于mysql - 在 ColdFusion 9 中将 HTML 格式的文本转换为常规文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482341/