PDA

View Full Version : نمایش فایل pdf ذخیره شده در دیتابیس



sam3610
جمعه 13 مهر 1397, 22:28 عصر
با سلام خدمت دوستان گرامی:
من یک فایل pdf رو که در ابزار gtPDFViewer1 کامپوننت pdftoolkit نمایش داده شده بود با کد :



procedure TForm1.Button2Click(Sender: TObject); var
blob: TBlobField;
TempStrm: TStream;
begin
ADOTable1.Open;
ADOTable1.Last;
ADOTable1.Insert;
blob := TBlobField(ADOTable1.FieldByName('P')); // ensure it ís a blob
TempStrm := ADOTable1.CreateBlobStream(blob, bmWrite);
try
gtPDFDocument1.SaveToStream(TempStrm);
finally
TempStrm.Free;
ADOTable1.Post;
ADOTable1.Close;


ShowMessage('ok');
gtPDFDocument1:=nil;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from table1');
ADOQuery1.Open;
end;

end;

در دیتا بیس ذخیره کردم
حالا چجور می تونم مجددا این فایل رو نمایش در gtPDFViewer1 بدم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
ممنون میشم اگه راهنمایی بفرمایید.

sam3610
شنبه 14 مهر 1397, 15:43 عصر
اساتید ، دوستان کسی تجربه ای در این خصوص نداره>؟

hp1361
جمعه 20 مهر 1397, 02:54 صبح
با سلام خدمت دوستان گرامی:
من یک فایل pdf رو که در ابزار gtPDFViewer1 کامپوننت pdftoolkit نمایش داده شده بود با کد :



procedure TForm1.Button2Click(Sender: TObject); var
blob: TBlobField;
TempStrm: TStream;
begin
ADOTable1.Open;
ADOTable1.Last;
ADOTable1.Insert;
blob := TBlobField(ADOTable1.FieldByName('P')); // ensure it ís a blob
TempStrm := ADOTable1.CreateBlobStream(blob, bmWrite);
try
gtPDFDocument1.SaveToStream(TempStrm);
finally
TempStrm.Free;
ADOTable1.Post;
ADOTable1.Close;


ShowMessage('ok');
gtPDFDocument1:=nil;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from table1');
ADOQuery1.Open;
end;

end;

در دیتا بیس ذخیره کردم
حالا چجور می تونم مجددا این فایل رو نمایش در gtPDFViewer1 بدم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
ممنون میشم اگه راهنمایی بفرمایید.

سلام

فیلد رو باید در قالب Stream بخونید(و مثلا درون یک متغیر از جنس Stream بریزید)

با استفاده از TgtCustomPDFDocument.LoadFromStream Method نمایشش بدید

مثالش در آدرس زیر هست:

https://www.gnostice.com/docs/pdftoolkit_vcl/frames.html?frmname=topic&frmfile=gtCstPDFDoc_TgtCustomPDFDocument_LoadFromS tream@TStream@String.html

sam3610
شنبه 21 مهر 1397, 18:08 عصر
سلام

فیلد رو باید در قالب Stream بخونید(و مثلا درون یک متغیر از جنس Stream بریزید)

با استفاده از TgtCustomPDFDocument.LoadFromStream Method نمایشش بدید

مثالش در آدرس زیر هست:

https://www.gnostice.com/docs/pdftoolkit_vcl/frames.html?frmname=topic&frmfile=gtCstPDFDoc_TgtCustomPDFDocument_LoadFromS tream@TStream@String.html
ممنون از شما بررسی میکنم نتیجه رو همینجا اعلام میکنم

sam3610
شنبه 21 مهر 1397, 18:45 عصر
دوست عزیز من کد رو به این نحو نوشتم :

procedure TForm1.Button3Click(Sender: TObject);var
gtPDFDocument1: TgtPDFDocument;
MemoryStream1: TMemoryStream;
begin
MemoryStream1 := TMemoryStream.Create;
MemoryStream1.LoadFromFile(ADOQuery1.FieldValues['p']);
gtPDFDocument1 := TgtPDFDocument.Create(Nil);
try
gtPDFDocument1.LoadFromStream(MemoryStream1);
finally


ShowMessage('ok');
if gtPDFDocument1.IsLoaded then
begin
gtPDFViewer1.Active := True;
end;
MemoryStream1.Free;
end;
end;
این ارور رو میده :
149076

hp1361
چهارشنبه 25 مهر 1397, 19:57 عصر
دوست عزیز من کد رو به این نحو نوشتم :

procedure TForm1.Button3Click(Sender: TObject);var
gtPDFDocument1: TgtPDFDocument;
MemoryStream1: TMemoryStream;
begin
MemoryStream1 := TMemoryStream.Create;
MemoryStream1.LoadFromFile(ADOQuery1.FieldValues['p']);
gtPDFDocument1 := TgtPDFDocument.Create(Nil);
try
gtPDFDocument1.LoadFromStream(MemoryStream1);
finally


ShowMessage('ok');
if gtPDFDocument1.IsLoaded then
begin
gtPDFViewer1.Active := True;
end;
MemoryStream1.Free;
end;
end;
این ارور رو میده :
149076

سلام

تابع LoadFromFile یک فایل موجود بر روی دیسک رو لود میکنه. شما نیاز دارید که از Memory لود کنید


به این شکل باید بنویسید


var
BlobStream: TStream;
begin
if (not ADOQuery1.FieldByName('p').IsNull) then
begin
BlobStream := TStream.Create;
BlobStream := ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName(' p'), bmRead);
try
gtPDFDocument1 := TgtPDFDocument.Create(Nil);
gtPDFDocument1.LoadFromStream(BlobStream);
finally
ShowMessage('ok');
if gtPDFDocument1.IsLoaded then
begin
gtPDFViewer1.Active := True;
end;
BlobStream.Free;
end;
end;
end;