0

これが私がやりたいことです:

データベースから64baseバイトの配列を取得します(実際にはpdf形式です)。これは機能します。次に、PDFをWebブラウザコンポーネントに表示したいと思います。

私は最初にpdfをfile.pdfに保存することから始め、次にそれを開きます:

        byte[] bitjes = isc.GetFileById(fileid); // Getting the bytes

        FileStream stream = new FileStream(@"C:\NexusPDF\" + filename, FileMode.CreateNew);
        BinaryWriter writer = new BinaryWriter(stream);
        writer.Write(bitjes, 0, bitjes.Length);
        writer.Close();

        webBrowser.Navigate(@"C:\NexusPDF\" + filename);

しかし、それは私に読み取り/書き込みアクセスを含むあらゆる種類の問題を与えました。したがって、この問題を解決するには、memorystreamクラスを使用する必要があると考えました。

        byte[] bitjes = isc.GetFileById(fileid);

        MemoryStream memstream = new MemoryStream(bitjes);

        BinaryWriter writer = new BinaryWriter(memstream);
        writer.Write(bitjes, 0, bitjes.Length);
        writer.Close();

しかし、ここで私は立ち往生しています!これをwebBrowserコンポーネントに表示することはできませんか?PDFを表示する前にbinaryreaderを使用する必要がありますか?

私はこの問題に正しい方法で取り組んでいますか、それともより良い代替案がありますか?

主なことは、ファイルをディスクに保存したくないということです。

どんな助けでもありがたいです。

4

1 に答える 1

0

データURLスキームを使用できる場合があります。このURLスキームは、コンテンツをインラインで指定します。

webBrowser.Navigate("data:application/pdf;base64," + X);

ここで、Xはbase64文字列です。

Base64のPDF文字列をバイト配列に変換する必要はありません。

詳細については、 http://www.ietf.org/rfc/rfc2397.txtを参照してください。

于 2012-11-08T08:55:40.050 に答える