いくつかの古い Access データベースを MS-SQL にアップグレード/変換しています。これらのデータベースの多くには、PDF ファイルを格納する OLE オブジェクト フィールドがあります。これらのファイルを抽出して SQL データベースに保存する方法を探しています。画像ファイル (jpg、bmp、gif など) でこれを行う方法についての同様の質問を見てきましたが、PDF で機能する方法は見つかりませんでした。
質問する
8886 次
2 に答える
4
私は最終的に、私がやりたいことのためにいくつかのコードが機能するようになりました。トリックは、OLE ヘッダーがどの部分であるかを特定し、それを削除することです。これが私のために働いているものです(ここにあるコードに基づく)
public static byte[] StripOleHeader(byte[] fileData)
{
const string START_BLOCK = "%PDF-1.3";
int startPos = -1;
Encoding u8 = Encoding.UTF7;
string strEncoding = u8.GetString(fileData);
if (strEncoding.IndexOf(START_BLOCK) != -1)
{
startPos = strEncoding.IndexOf(START_BLOCK);
}
if (startPos == -1)
{
throw new Exception("Could not find PDF Header");
}
byte[] retByte = new byte[fileData.LongLength - startPos];
Array.Copy(fileData, startPos, retByte, 0, fileData.LongLength - startPos);
return retByte;
}
これは PDF ファイルに対してのみ機能することに注意してください。
于 2009-06-23T18:34:21.617 に答える