3

我正在尝试使用服务器端 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不先写入文件的情况下使用的字符串。

4

2 回答 2

1

为什么不简单地使用:-

Response.Write(this.buffer)

假设响应的代码页设置正确(即,它与运行 VBScript 的区域设置相同),那么 Response.Write 应该执行与 StringToMultiByte 相同的转换。

我怀疑你已经尝试过了,但没有奏效。如果是这样,我真的认为您需要研究为什么要尝试这种奇怪的 BinaryWrite 用法。目前,您的解决方案将杀死您的服务器。

于 2009-11-11T18:30:51.113 回答
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>
于 2009-11-11T00:54:36.747 回答