2013-01-10 40 views
24

私は、SQLの列に格納されているファイルの内容をpdfに変換しようとしています。バイト配列からpdf

私は次のコードを使用する:

byte[] bytes; 
BinaryFormatter bf = new BinaryFormatter(); 
MemoryStream ms = new MemoryStream(); 
bf.Serialize(ms, fileContent); 
bytes = ms.ToArray(); 
System.IO.File.WriteAllBytes("hello.pdf", bytes); 

生成されたPDFは、私は++メモ帳でPDFを開いたときに、私は(含むFileContentの同じかかわらずである)いくつかのジャンクヘッダを参照しているという意味で破損してい。迷惑メールヘッダーはNUL SOH NUL NUL NULです。

+4

「BinaryFormatter」にはpdfとは何も関係ありません。 1つのセンテンスで2つを使用するのは大きな間違いです。 'fileContent'とは何ですか? (すなわち、* type *とは何ですか?) –

+0

SQLカラムがシリアル化されてPDFファイルになっているのですか、それともバイナリデータでもありますか? –

+0

私は同様の方法を使用しますが、モバイル版のAdobe Readerではpdfを開けません。 – Mukund

答えて

43

これは、.Netタイプを.Netタイプとして再度読み取ることができるように、.Netタイプをバイナリファイルにシリアライズするためのものです。

varbinaryとしてデータベースに保存されていれば、それからバイト配列を取得するだけです(データアクセステクノロジに依存します)。例えば、EFとLinqからSqlへバイト配列を取得するのが簡単になるようなマッピングを作成してください)、最後のコード行のようにファイルに書き込みます。

幸運にも私はfileContentがここでバイト配列であることを望んでいますか?この場合、あなたはできるだけ

System.IO.File.WriteAllBytes("hello.pdf", fileContent); 
+0

ありがとうございます。あなたは正しかった。私はds.Tables [0] .Rows [0] ["fileData"]としてfileContentを定義しました。だから私がしたのは、byte [] b =(byte [])fileContentです。 BinaryFormatterは必要ありませんでした。ありがとうマークとティム! –

+0

私は解決策を探していましたが、私はここでそれを知っているかもしれません、変数型 "fileContent"を事前に感謝します。 – sidhewsar

+0

こんにちは@sidhewsar - これは 'byte []' –

関連する問題