![]() |
HowTo: PDF oder HTML Dokumente in Paradox Datenbank ablegen?
Hallo,
ich möchte gerne grafisch aufbereitete Dokumente wie z.B. PDF oder HTML- Dokumente so ablegen, daß der 0815-Anwender sie nicht einfach von der Festplatte kopieren kann. Für meine Applikation setze ich die Desktopdatenbank Paradox ein. Die einfachste Möglichkeit wäre diese Dokumente irgendwie als BLOB - Feld in eine Tabelle rein schreiben zu können. Reine RTF-Dokumente reichen leider nicht aus, da sie keine Grafiken fassen können. Bin momentan ratlos und suche dringend Euren RAT !!! :roll: Danke und Grüsse Hacki |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Hi Hacki,
also ich benutze Interbase, aber das Prinzip ist wohl das gleiche:
Delphi-Quellcode:
Ciao
procedure irgendwas;
var MyStream : TStream; Image : TBitmap; begin //Tabelle bearbeiten Table1.edit; //Bitmapobjekt erzeugen und aus Datei laden Image:=TBitmap.Create; Image.LoadFromFile('D:\Bilder\test.bmp'); //einen Blobstream aus dem Tabellenfeld (Typ BLOB) erstellen MyStream:=Table1.CreateBlobStream(table1.FieldByName('BILD'),bmReadWrite); //Das Bild in den Stream speichern - das BLOB-Feld wird automatisch aktualisiert Image.SaveToStream(MyStream); //Allen Kram freigeben Image.Free; MyStream.Free; //Änderungen schreiben Table1.Post; end Marco |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Halt - ich hab noch was vergessen
Wenn der Dateityp nicht bekannt ist mag es sinnvoll sein die Datei in einen Filestream zu laden und diesen in den BLOB-Stream zu kopieren
Delphi-Quellcode:
Ciao
...
MyFileStream:=TFileStream.Create('c:\myfile.xyz',fmOpenRead); MyStream.CopyFrom(MyFileStream, 0); ... |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Hallo Marco,
danke für die Tips. Welchen BLOB Typ muß ich in der Datenbank denn anlegen. Soweit ich weiß gibt es doch unterschiedliche BLOB Deklarationen. Werde es dann gleich ausprobieren. Grüsse hacki |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Hi,
nun, wie gesagt, hab ich das in Paradox noch nie gemacht, aber laut ![]() solltest du den Typ "Binary" nehmen. Ciao Marco |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Hallo Marco,
nun habe ich es ausprobiert:
Code:
Leiser erhalte ich in der Zeile:
procedure TForm1.Button2Click(Sender: TObject);
var MyStream : TStream; MyFileStream : TFileStream; begin Table1.Open; Table1.Append; //Tabelle bearbeiten Table1.edit; MyFileStream:=TFileStream.Create('C:\download\test.pdf',fmOpenRead); MyStream := TStream.Create; MyStream.CopyFrom(MyFileStream, 0); //einen Blobstream aus dem Tabellenfeld (Typ BLOB) erstellen MyStream:=Table1.CreateBlobStream(table1.FieldByName('pdf'),bmReadWrite); MyStream.Free; //Änderungen schreiben Table1.Post; Table1.Close; end;
Code:
Immer einen "abstract error" !?
MyStream:=Table1.CreateBlobStream(table1.FieldByName('pdf'),bmReadWrite);
Habe ich da etwas falsch gemacht ? Wäre nett, wenn Du mir nochmal helfen könntest. Danke und Grüsse Hacki |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Hi Hacki,
Der abstrakte Fehler kommt, da Du Versuchst direkt in ein als TStream erzeugten Stream zu schreiben - das klappt aber nicht. Der Stream wird nämlich durch CreateBlobStream erzeugt und somit dem Blob-Feld zugeordnet. So klappts:
Delphi-Quellcode:
Hope this helps
procedure TForm1.Button1Click(Sender: TObject);
var MyStream : TStream; MyFileStream : TFileStream; begin Table1.Open; Table1.Append; //Tabelle bearbeiten Table1.edit; MyFileStream:=TFileStream.Create('C:\temp\test.pdf',fmOpenRead); //einen Blobstream aus dem Tabellenfeld (Typ BLOB) erstellen MyStream:=Table1.CreateBlobStream(table1.FieldByName('pdf'),bmReadWrite); //Dateiinhalt in BLOB kopieren MyStream.CopyFrom(MyFileStream, 0); MyStream.Free; MyFileStream.Free; //Änderungen schreiben Table1.Post; Table1.Close; end; Ciao marco |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Hi Marco,
klappt echt Super ! Erstmal vielen vielen Dank !!! :lol: :lol: :party: :dancer2: Jetzt habe ich nur noch das Problem, die Datei wieder raus zu lutschen und vielleicht zu speichern (später will ich sie dann im PDF-Reader direkt anzeigen). Wenn Du da noch einen Tip hast, wie ich das nun wieder anstelle ? Mit Streams habe ich es nicht so - habe noch nie damit gearbeitet. :? Sieht aber eigentlich gut aus wenn's funzt. Ciao hacki |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Dann machst Du es einfach umgekehrt:
1. Blobstream erzeugen 2. Filestream erzeugen (mit fmCreate) 3. Filestream.CopyFrom(BlobStream,0) 4. Alles Freigeben und schon hast Du die Datei wieder draußen Ciao marco |
Re: HowTo: PDF oder HTML Dokumente in Paradox Datenbank able
Hallo Marco,
mit dem Schreiben in die Datenbank hat wunderbar geklappt. Das rauslesen bekomme ich nicht hin. Mag trivial sein - aber ich weiß nicht wie ?? Ich habe folgendes versucht:
Delphi-Quellcode:
Bei
MyStream:=Table1.CreateBlobStream(table1.FieldByName('pdf'),bmReadWrite);
MyFileStream.CopyFrom(MyStream, 0); MyFileStream.Create('C:\transfer\12345.pdf',fmOpenRead);
Delphi-Quellcode:
bekomme ich immer eine Access Violation. Keine Ahnung was da passiert. Funzt es überhaupt so oder mache ich grundsätzlich etwas falsch ??
MyFileStream.CopyFrom(MyStream, 0);
Wäre toll wenn ich Hilfe bekäme !! Danke und Grüsse, hacki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz