【发布时间】:2014-08-06 17:14:58
【问题描述】:
我正在尝试使用cfpdf 并不断收到以下错误:
字符串索引超出范围:-1
我不明白为什么。我在 Debian Linux 上运行 ColdFusion 11。
<CFIF FileExists("#getDirectoryFromPath(getCurrentTemplatePath())#REPORT.pdf")>
<cfpdfform
action="read"
source="#getDirectoryFromPath(getCurrentTemplatePath())#REPORT.pdf" xmldata="x"
result="r">
</cfpdfform>
<cfdump var="#x#" label="XMLData">
<cfdump var="#r#" label="Result">
<CFELSE>
File doesn't exist
</CFIF>
确切的错误:
String index out of range: -1
The error occurred in /var/www/www.test.com/test.cfm: line 2
1 : <CFIF FileExists("#getDirectoryFromPath(getCurrentTemplatePath())#REPORT.pdf")>
2 : <cfpdfform
action="read"
source="#getDirectoryFromPath(getCurrentTemplatePath())#REPORT.pdf"
xmldata="x" result="r">
3 : </cfpdfform>
4 : <cfdump var="#x#" label="XMLData">
【问题讨论】:
-
您在第二个 cfdump 上缺少关闭
>,因此此代码无法编译。请发布引发错误的确切代码以及引发错误的行 -
很好,但由于某种原因,当我发布并格式化代码时它被删除了。但即使使用结束标签,它仍然会给出相同的错误。
-
我从不使用 cfpdfform,但我要做的第一件事就是去掉 x 和 r 属性,看看错误是否消失。如果是这样,请将它们一一放回去,以便找出罪魁祸首。
-
您没有使用任何子标签,例如
cfpdfformparam或cfpdfsubform,因此您可能想尝试在没有结束标签的情况下编写它(这不太可能是您的错误的根源,但您永远不知道)<cfpdfform ... /> -
您的
report.pdf有多复杂?我会从尽可能简单的测试用例开始解决这个问题,然后从那里增加它,直到你找出导致问题的原因。首先要做的事情...使用一个非常基本的 PDF 作为输入文件,看看会发生什么。正如@duncan 建议的那样:不要关闭不需要关闭的标签。
标签: pdf coldfusion cfpdf