استخراج كائن OLE (قوات الدفاع الشعبي) من الوصول DB

StackOverflow https://stackoverflow.com/questions/1029340

  •  06-07-2019
  •  | 
  •  

سؤال

ونحن الارتقاء / تحويل عدة قواعد بيانات Access القديم إلى MS-SQL. العديد من قواعد البيانات هذه تحتوي على حقول كائن OLE التي تقوم بتخزين ملفات PDF. أنا أبحث عن وسيلة لاستخراج هذه الملفات وتخزينها في قاعدة بيانات SQL لدينا. رأيت أسئلة مماثلة الإجابة على كيف يمكن القيام بذلك مع ملفات الصور (JPG، BMP، GIF، الخ)، ولكن لم أجد طريقة التي تعمل مع PDF.

هل كانت مفيدة؟

المحلول

وأخيرا حصلت بعض التعليمات البرمجية تعمل من أجل ما تريد ان تفعله. الحيلة هي تحديد ما هو جزء من رأس OLE وإزالته. هنا هو ما العمل بالنسبة لي (استنادا إلى قانون تم العثور عليها <لأ href = "http://blogs.msdn.com/pranab/archive/2008/07/15/removing-ole-header-from-images-stored-in -ms-الوصول ديسيبل كما هو وأوله-object.aspx "يختلط =" نوفولو noreferrer "> هنا )

    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.

نصائح أخرى

وOLEtoDisk

و"هذا الإصدار يحفظ محتويات جدول يحتوي على كائنات OLE إلى القرص. لا يتطلب التطبيق الأصلي الذي كان بمثابة خادم OLE إدراج الكائن. وتؤيد جميع MS مكتب وثائق، PDF، جميع الصور المدرج بواسطة MS صور محرر، MS الطلاء، والطلاء تتسوق برو. كما يدعم استخراج الدرجة الحزمة بما في ذلك اسم الملف الأصلي. يحتوي على وظيفة لإنتاج الجرد الكامل للحقل OLE بما في ذلك مسار مرتبط وأسماء الملفات. يستخدم منظم API التخزين لقراءة محتويات الفعلية للحقل "

http://lebans.com/oletodisk.htm

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top