Nat*_*ate 5 c# oledb ms-access
我们正在将几个旧的Access数据库升级/转换为MS-SQL.其中许多数据库都具有存储PDF文件的OLE对象字段.我正在寻找一种方法来提取这些文件并将它们存储在我们的SQL数据库中.我已经看到类似的问题,回答你如何使用图像文件(jpg,bmp,gif等),但我还没有找到一种适用于PDF的方法.
我终于得到了一些可以实现我想要的功能的代码。诀窍是确定 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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于 PDF 文件。
| 归档时间: |
|
| 查看次数: |
7692 次 |
| 最近记录: |