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 byteResponse.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 に答える