5

いくつかの古い Access データベースを MS-SQL にアップグレード/変換しています。これらのデータベースの多くには、PDF ファイルを格納する OLE オブジェクト フィールドがあります。これらのファイルを抽出して SQL データベースに保存する方法を探しています。画像ファイル (jpg、bmp、gif など) でこれを行う方法についての同様の質問を見てきましたが、PDF で機能する方法は見つかりませんでした。

4

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