我有一个保存表的cfsavecontent标记。后来我使用cffile将保存的内容写入文件。当我查看该文件时,我发现表格中<td>
个标签后面插入了许多空行;在</tr>
标记后插入很少的空白行。 (虽然在代码中<tr><td> </td></tr>
全部在一行上时不会这样做。)
目前我有一个包含其中两个表的文件。这些表是在循环中生成的,输出文件是使用cffile append创建的。这个文件有915行,其中30行是非空白的。我的所有后续代码都能正常工作,但这只是测试数据。在现实世界中,我可以有1000个或更多的表,我担心文件大小。
代码:
<cfset head1 = 'from = "moxware" '>
<cfset head2 = 'to = "#hrep.PersonEmail#" '>
<cfset head3 = 'replyto = "#replyto#" '>
<cfset head4 = 'subject = "#subject#" '>
<cfset head5 = 'type = "html" '>
<cfsavecontent variable = "abc">
<cfoutput>
#head1#
#head2#
#head3#
#head4#
#head5# >
#xyz#
</cfoutput>
</cfsavecontent>
<cffile action = "append"
file = "/var/www/reports/moxrep/#reportout#.cfm"
output = "<cfmail"
mode = "777" >
<cffile action = "append"
file = "/var/www/reports/moxrep/#reportout#.cfm"
output = "#abc#"
mode = "777">
<cffile action = "append"
file = "/var/www/reports/moxrep/#reportout#.cfm"
output = "</cfmail>"
mode = "777" >
重新开始xyz,我正在从文件中读取它:
<cffile action = "read"
file = "/var/www/reports/moxrep/#reportname#.cfm"
variable = "xyz">
,文件如下所示:
<link rel="stylesheet" href="sample.css">
<link rel="stylesheet" type = "text/css" href ="betty.css"/>
<p style="margin-left:40px"><span style="font-size:14px"><span style="font- family:georgia,serif">Dear Customer,</span></span></p>
We were so pleased that you have signed up for one of our programs. Apparently you live in the city of {{1. Additionally we observe that your were referred to us by {{2. Below please find a listing of what you signed up for.</span></span></p>
<p style="margin-left:40px"><span style="font-size:14px"><span style="font- family:georgia,serif">{{r</span></span></p>
<p style="margin-left:40px"><span style="font-size:14px"><span style="font-family:georgia,serif">Sincerely Yours,</span></span></p>
<p style="margin-left:40px"><span style="font-size:14px"><span style="font-family:georgia,serif">John Jones<br />
President<br />
XYZ Corporation</span></span></p>
该文件是由代码生成器创建的,而不是我,所以它有点麻烦。稍后在代码中我替换以{{;特别是{{r被一个表替换,这就是额外空间的来源。
追加本身并未插入任何额外的行。
有谁知道是什么原因导致文件中出现这些额外的空白行;以及如何摆脱它们?
答案 0 :(得分:0)
贝蒂,如果你想避免空白,通常需要仔细做。特别是将cfoutput与查询一起使用将生成行。所以这段代码:
<table>
<cfoutput query="myquery">
<tr><td>#col1#</td><td>#col2#</td></tr>
</cfoutput>
</table>
会产生额外的行...但如果你这样做:
<cfsetting enablecfoutputonly="yes">
<cfoutput><table></cfoutput>
<cfloop query="myquery"><cfoutput><tr><td>#col1#</td><td>#col2#</td></tr></cfoutput></cfloop>
<cfoutput></table></cfoutput>
您将仔细控制允许附加到缓冲区的内容。 enableoutputonly正是它所说的......它不允许任何东西去#缓冲区&#34;除非它包含在cfoutputs中。
希望这会有所帮助。正如Cameron所说,你应该粘贴代码来解决这个问题。答案通常会在那里。
(您可能还需要尝试使用&#34; addnewline&#34; cffile的属性 - 取决于您的问题是否是文件END的一行。)
要回答关于添加cfsetting的问题......在你的情况下,你正在将CF代码编写到一个文件中,然后再执行(顺便说一句,这通常不是一个好主意:)。所以在你的第一个附录声明中:
<cffile action = "append"
file = "/var/www/reports/moxrep/#reportout#.cfm"
output = "<cfmail"
mode = "777" >
更改&#34;输出&#34;是:
<cffile action = "append"
file = "/var/www/reports/moxrep/#reportout#.cfm"
output = "<cfsetting enablecfoutputonly=""yes""/> <cfmail"
mode = "777" >
但是Betty - 您仍然需要从cfsavecontent中删除换行符(如果你的空格来自哪里),因为它们实际上是在cfoutput中。此外,创建正在插入的表的代码可能有问题 - 此处未列出。
最后,由于这是cfmail,请看一下这篇关于可能会或可能没有任何影响的换行的帖子 - 但至少会给你一条信息:)
http://www.coldfusionmuse.com/index.cfm/2006/4/12/cfmail.linebreak
答案 1 :(得分:0)
您可以考虑在cfsavecontent周围使用cfprocessingdirective。 CF管理员中有一个设置,通常会压缩或保留不必要的空格,“启用空白空间管理” - http://help.adobe.com/en_US/ColdFusion/9.0/Admin/WSc3ff6d0ea77859461172e0811cbf3638e6-7ffc.html。使用cfprocessingdirective的suppressWhiteSpace属性,您可以覆盖特定页面或页面的一部分的此设置。所以在你的情况下:
<cfprocessingdirective suppressWhiteSpace="true">
<cfsavecontent variable="myvar">....
...
...
</cfsavecontent>
</cfprocessingdirective>
可能有所帮助。同样,为了确保在构建文本电子邮件时保留空白,您可以使用suppressWhiteSpace =“false”。
干杯,