40

SQL 列に保存されているファイルの内容を 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

2 に答える 2

79

これには を使用しないでくださいBinaryFormatter。これは、.Net 型をバイナリ ファイルにシリアル化して、.Net 型として再度読み取ることができるようにするためです。

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

fileContent運が良ければ -ここにバイト配列があることを願っていますか? その場合、あなたはただ行うことができます

System.IO.File.WriteAllBytes("hello.pdf", fileContent);
于 2013-01-10T13:35:57.017 に答える