![]() |
|
عرض حقل من نوع Blob يحتوى ملف PDF - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : عرض حقل من نوع Blob يحتوى ملف PDF (/showthread.php?tid=2618) الصفحات:
1
2
|
عرض حقل من نوع Blob يحتوى ملف PDF - rama - 01-12-2010 السلام عليكم ،لدي مشكل لم أجد له حل رغم بحثي الكثير لدي قاعدة معطيات اكسس تحتوي على عدة حقول من بينها حقل صور( blob(pdf و علي ادماجها في برنامج دلفي يعني قاعدة المعطيات هذه كانت موجودة من قبل و كان يتم ادخال البيانات من خلال اكسس و طلب مني عمل برنامج دلفي لادارة هذه القاعدة ، المشكل اني بمجرد أن أقوم بأي عملية حتى و لو كانت بحث يظهر message كالتالي : "bitmap image is not valid " عرض حقل من نوع Blob يحتوى ملف PDF - Lam.Abdeldjalil - 01-12-2010 و عليكم السلام و رحمة الله تلك الرسالة تدل على أن البيانات المتعامل معها ليست من نوع bitmap إقتباس : صور( blob(pdfتقصد ملفات pdf ؟ معلومة: الحقول من نوع blob ـ (binary large object ) هو مجموعة من البيانات الثنائية يمكن تكون صور ، أصوات ،ملفات ... بالتوفيق عرض حقل من نوع Blob يحتوى ملف PDF - rama - 06-12-2010 شكرا أخي على التوضيح ، و لكن في هذه الحالة كيف يتم التعامل مع هذا النوع من البيانات و كيف يمكن حل هذا المشكل. عرض حقل من نوع Blob يحتوى ملف PDF - Lam.Abdeldjalil - 06-12-2010 السلام عليكم و رحمة الله مثال بإستخدام LoadFromFile 'توجد طرق أخرى بإستخدام Stream ': لجلب و حفظ الملفات في هذا الحقل : كود : if OpenDialog1.Execute then
begin
ADODataSet1.Edit ;
TBlobField(ADODataSet1.FieldByName('YourBlobField')).LoadFromFile(OpenDialog1.FileName );
ADODataSet1.post ;
end;كود : if SaveDialog1.Execute then
TBlobField(ADODataSet1.FieldByName('YourBlobField')).savetofile(SaveDialog1.FileName+'.pdf' );
ShellExecute(Handle, 'open', pchar((SaveDialog1.FileName+'.pdf' )), nil, nil, SW_SHOWNORMAL) ;عرض حقل من نوع Blob يحتوى ملف PDF - rama - 08-12-2010 السلام عليكم شكرا أخي على الاقتراح و لكن **** أن أشرح لك أكثر المشكل في برنامجي لانني ربما لم أوصل الفكرة كما يجب: لدي قاعدة بيانات اكسس من الشكل : N° NOM PRENOM DATE ENVOI DOCUMENT 1 X Y 01/11/2010 Adobe Acrobat Document 2 MOHAMED ALI 02/11/2010 Adobe Acrobat Document 3 AHMED MOHAMED 03/11/2010 Adobe Acrobat Document علما ان البيانات تم ادخالها سابقا عن طرق الاكسس و علي المحافظة على البيانات القديمة كما هي و استغلالها عن طريق برنامج دلفي يعني التعامل مع البيانات سيكون من خلال برنلمج دلفي و ليس اكسس. قمت بربط قاعدة البيانات مع دلفي بواسطة ado ثم بدأت العمل عليها و قمت بعمل فورم للبحث عن في الجدول عن طريق الرقم ( N°) كالتالي :
كود : procedure TForm1.Edit1Exit(Sender: TObject);
begin
if edit1.Text<>'' then
begin
DMa.adotab1.Filtered:=false;
DMa.adotab1.Filter:='N°= '+ QuotedStr(edit1.Text);
DMa.adotab1.Filtered:=true;
end
else
DMa.adotab1.Filtered:=false;
end;عرض حقل من نوع Blob يحتوى ملف PDF - Lam.Abdeldjalil - 08-12-2010 وعليكم السلام و رحمة الله ذكرت سابقا كود : تلك الرسالة تدل على أن البيانات المتعامل معها ليست من نوع bitmapلا يكمن عرض Pdf في المكون DBImage عليك إستخراجه و فتحه كما ذكرت سابقا أو بإستخدام الـ Stream ( لم أستخدمها من قبل ) شيئ آخر وضح أكثر ! بالتوفيق عرض حقل من نوع Blob يحتوى ملف PDF - rama - 08-12-2010 شكرا أخي على الإجابة و سأوضح لك أكثر : أنا لم أستخدم dbimage أصلا و كل ما عملته بحث في الجدول فقط لاظهار بيانات ليست blob كالاسم و التاريخ عن طريق dbedit يعني لم أصل حتى الى عرض الحقل من نوع blob و لكن أعتقد ان الحل في ال stream كما قلت و لكن انا لا اعرف ما هو الstream أصلا و لا كيفية التعامل معه. عرض حقل من نوع Blob يحتوى ملف PDF - Lam.Abdeldjalil - 08-12-2010 السلام عليكم العفو ، لكن لحد الآن لم تظهر سبب المشكل أرفق المحاولة . بالنسبة للعمل بالطريقة الأخرى بإستعمال TMemoryStream كود : var
MemStream: TMemoryStream;
begin
MemStream := TMemoryStream.Create;
try
TBlobField(ADODataSet1.FieldByName('YourBlobF')).SaveToStream(MemStream);
MemStream.Position :=0;
[COLOR=DarkGreen] Image1.Picture.Bitmap.LoadFromStream(MemStream);[/COLOR]
finally
MemStream.Free;
end;بالنسبة للـ Pdf إستخدم أحد المكونات التي تحتوى على الدالة LoadFromStream بنفس الطريقة طبق ! و مكتبة AcroPDF لا تحتوي عليها و على حد علمي لا توجد مكونات مجانية تحتوي عليها بالتوفيق عرض حقل من نوع Blob يحتوى ملف PDF - Lam.Abdeldjalil - 13-12-2010 السلام عليكم إقتباس :بالنسبة للـ Pdf إستخدم أحد المكونات التي تحتوى على الدالة LoadFromStreamبإستخدام مكونات pdftoolkit ( مكونات تجارية ) كود : gtPDFDocument1.LoadFromStream(MemStream) ;
gtPDFViewer1.Active :=true;![]() ملاحظة لا تدمر الـ MemStream بعد الفتح ( دمره بعد الإنتهاء من قراءة الملف مثلا .. ) و إلا واجهت مشكل Generic Error بالتوفيق عرض حقل من نوع Blob يحتوى ملف PDF - rama - 14-12-2010 السلام عليكم. بارك الله فيك أخي ،سأجرب الاقتراح ثم أخبرك بالنتيجة. |