我正在尝试使用服务器端javascript(ASP)输出PDF。我正在使用的当前方法是:
xfile=Server.MapPath(lib.fso.GetTempName())
xf=lib.fopen(xfile,"wb");
lib.fwrite(xf,this.buffer);
lib.fclose(xf);
outB = Server.CreateObject("ADODB.Stream")
outB.Type = 1
outB.Open()
outB.LoadFromFile (xfile)
Response.BinaryWrite(outB.Read())
outB.Close()
lib.fso.DeleteFile(xfile);
这样可行,但需要在服务器上进行写访问。有没有办法在不写文件的情况下做同样的事情?
我无法弄清楚如何将字符串this.buffer
转换为array of byte
然后我可以使用Response.BinaryWrite
编写而无需先写入文件。
答案 0 :(得分:1)
为什么不简单地使用: -
Response.Write(this.buffer)
假设响应的代码页设置正确(即,它与运行VBScript的Locale中的相同),那么Response.Write应该执行与StringToMultiByte相同的转换。
我怀疑你已经尝试了这个并且没有奏效。如果是这样,我真的认为你需要调查为什么这是尝试BinaryWrite的这种奇怪用法。目前,您的解决方案将杀死您的服务器。
答案 1 :(得分:0)
我的解决方案是使用VBScript。
将以上代码替换为:
Response.BinaryWrite(StringToMultiByte(this.buffer));
并将其添加到文件末尾:
<script language="vbscript" runat="server">
function StringToMultiByte(S)
Dim i, MultiByte
For i=1 To Len(S)
MultiByte = MultiByte & ChrB(Asc(Mid(S,i,1)))
Next
StringToMultiByte = MultiByte
End function
</script>