我正在一个coldfusion网站上工作并试图修复一个错误。到目前为止,我已经尝试了很多东西,所以这里使用 StackOverflow。
有问题的网站需要能够通过电子邮件发送 pdf,以及将 pdf 打印给用户以在浏览器中预览(在另一个窗口中)的另一个功能。我发现无论我做什么,这些功能都不能同时工作。
以下是发送电子邮件的代码(coldfusion 和 JavaScript):
该文档是使用以下 cfm 文件构建的:
该代码为打印和电子邮件功能调用相同的函数 (orderApprovalPdf.cfm)。这是调用打印的javascript:
form = document[this._PARENT.NAME+"MANAGEFORM"];
sel = ColdFusion.getElementValue(this._PARENT.NAME+"FORMSELECT");
switch(sel){
case 'APPROVAL' :
window.open('Pdf/orderApprovalPdf.cfm?PRODUCTORDERID=' + form.productOrderID.value);
break;
case 'SHIPDATECONFIRMATION' :
window.open('Pdf/vikingEstShipDatePdf.cfm?PRODUCTORDERID=' + form.productOrderID.value);
break;
case 'BOL' :
window.open('Pdf/billOfLadingPdf.cfm?PRODUCTORDERID=' + form.productOrderID.value);
break;
case 'INVOICE' :
window.open('Pdf/invoicePdf.cfm?INVOICEID=' + form.invoiceID.value);
break;
case 'INVOICECANADA' :
window.open('Pdf/invoicePdfCanada.cfm?INVOICEID=' + form.invoiceID.value);
break;
}
我尝试了以下所有方法:
用于打印功能的第二个 .cfm 文件来自printForm
– 不同的 cfm 名称、不同的 cfm 文件目录、不同的临时文件路径和不同的临时文件名 – 除非以下粗体字与原始 pdf 函数名称匹配,否则电子邮件将中断尽管在printForm
功能中而不是emailForm
功能中并且没有出现在其他地方
case 'APPROVAL' :
window.open('Pdf/orderApprovalPdf.cfm?PRODUCTORDERID=' + form.productOrderID.value);
属性文件名的替代方案cfdocument
:saveasname、name(manageOrder.cfc
作为变量调用,例如#myPdf#,当它是名称变量时,cfdocument
无论我如何调用它,myPdf 变量都不存在)
<cfdocument name=”myPdf” >
<cfmailparam file = “#GetTempDirectory()#Approval_#getApprovalInfoProcResult.ORDERNUMBER#.pdf" type=”application/pdf” content=”#myPdf” />
<cfcontent variable="#myPdf#" type="application/pdf" reset="Yes">
尝试添加cfcontent
和cfheader
标签以保存文件(也为了规避文件名作为属性) - 没有任何区别,当电子邮件时间到来时仍然找不到文件:
<cfheader name="Content-Disposition" value="attachment; filename=#GetTempDirectory()#Approval_#getApprovalInfoProcResult.ORDERNUMBER#.pdf" />
在标签关闭后将电子邮件功能从文件移至manageOrder.cfc
文件——但程序从未命中此代码orderApprovalPdf(cfm)
<cfdocument>
有任何想法吗?也许可以替代cfdocument
? 我尝试了两个单独的 cfm 文件,看起来该window.open
功能不允许这种解决方法。