Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi PDF Datei in Firebird Tabelle speichern (https://www.delphipraxis.net/197690-pdf-datei-firebird-tabelle-speichern.html)

Walter Landwehr 28. Aug 2018 12:52

Datenbank: Firebird • Version: 2,5,5 • Zugriff über: IBO / IBExpert

PDF Datei in Firebird Tabelle speichern
 
Hallo,

ich möchte eine PDF Datei in eine Tabelle speichern und im OLE Container öffnen. Ich kann zwar die Datei speichern aber sie wird nicht im OLE Container angezeigt. Ich weiß nicht warum. Hier mein Code zum Speichern der PDF Datei.
Delphi-Quellcode:
Seite_Qry.Edit;
    blob:= Seite_Qry.CreateBlobStream(Seite_Qry.FieldByName('DATA'), bmWrite);
    try
      blob.Seek(0,soFromBeginning);
      datei := TFileStream.Create(extractFilePath(Application.ExeName) + 'DSGVO.pdf', fmOpenRead or fmShareDenyWrite);
      try
        blob.CopyFrom(datei,datei.Size);
        Seite_Qry.Post;
      finally
        datei.Free;
      end;
    finally
      blob.Free;
    end;
Ergänzung: In IBExpert kann ich die Datei als pdf lesen.

Kann mir jemand helfen.

hoika 28. Aug 2018 16:14

AW: PDF Datei in Firebird Tabelle speichern
 
Hallo,
Zitat:

und im OLE Container öffnen
Dann zeig uns doch mal den "hole aus Tabelle"-Code.
Oder mache zum Test ein SaveToFile.

Codehunter 29. Aug 2018 09:57

AW: PDF Datei in Firebird Tabelle speichern
 
Adobe Reader als Viewer im OLE-Control? Oder ein Embedded Chromium? Soweit ich weiß ist der Adobe Reader doof wie Bohnenstroh, der kann nur aus Dateien und nicht aus Streams lesen.

hoika 30. Aug 2018 08:18

AW: PDF Datei in Firebird Tabelle speichern
 
Hallo,
mag sein, das der Reader doof ist, aber es fehlt hier vom TE immer noch der Code des "Lade PDF aus DB", ob das in einem Stream oder als Datei an den Container übergeben wird, ist ja erst mal egal.

Walter Landwehr 30. Aug 2018 10:16

AW: PDF Datei in Firebird Tabelle speichern
 
Hallo, war 2 Tage außer Haus darum erst jetzt meine Antwort.

Gelöst habe ich das Problem folgendermaßen, Komponente TIB_OLEContainer hinzugefügt mit Name: edOle. Dann folgenden Code:
Delphi-Quellcode:
    Seite_OLEQry.Edit;
    PDFFile :=(extractFilePath(Application.ExeName) + 'DSGVO.pdf');
    edOle.CreateObjectFromFile(PDFFile,False);
    edOle.AutoDisplay := True;
    Seite_OLEQry.Post;
Dann kann ich alles sehen und mit dem Reader ausdrucken.

NoName1 30. Aug 2018 10:44

AW: PDF Datei in Firebird Tabelle speichern
 
[QUOTE=Walter Landwehr:
Gelöst habe ich das Problem folgendermaßen, Komponente TIB_OLEContainer hinzugefügt ...
[/QUOTE]
Die Komponente "TIB_OLEContainer" ist wohl eine Interbase-Kompo?
In meiner Toolpalette finde ich diese Komponente nicht. Woher kommt sie?
Ich werde über Kurz oder Lang auch vor dem selben Problem stehen, eine PDF-Datei
anzuzeigen.
Mit Gruß NoName1

RSF 30. Aug 2018 13:48

AW: PDF Datei in Firebird Tabelle speichern
 
Ich gehe da einen Umweg über Temp Verz. und überlasse Windows das öffnen (aller Dateien)


Delphi-Quellcode:
 ext:=DataModule2.Dokumente.FieldByName('Endung').AsString ;
 Datei:= DataModule2.Dokumente.FieldByName('Dateiname').AsString;
 TBlobField(DataModule2.Dokumente.FieldByName('Dokument')).SaveToFile(GetDirTemp+'\'+Datei+ext);
 DataModule2.Dokumente.Close;
 if ShellExecute(Application.Handle,'open',PChar(GetDirTemp+'\'+Datei+ext),nil, nil, SW_NORMAL) <= 32 then
        ShowMessage('Dokument: '+Datei+ext+' kann nicht geöffnet werden');

Codehunter 30. Aug 2018 13:51

AW: PDF Datei in Firebird Tabelle speichern
 
Die Komponente TIB_OLEContainer hab ich auch nicht. Evtl. nur bei Delphi Enterprise? So wie ich den Codeschnipsel verstehe wird da aber aus einer Datei geladen und nicht aus einem DB-Blob? Oder machst du da nur einen Umweg über eine temporäre Datei? Wenn ja dann wird das mit dem hier gezeigten Pfad Probleme geben wenn die Anwendung nicht mit Adminrechten läuft.

RSF 30. Aug 2018 14:11

AW: PDF Datei in Firebird Tabelle speichern
 
Zitat:

Zitat von Codehunter (Beitrag 1412017)
So wie ich den Codeschnipsel verstehe wird da aber aus einer Datei geladen und nicht aus einem DB-Blob?

Ganz unabhängig von TIB_OLEContainer. Er speichert die PDF doch in ein Blob-Feld. (Siehe #1)

KodeZwerg 30. Aug 2018 14:19

AW: PDF Datei in Firebird Tabelle speichern
 
Hier kann man sich das fehlende TIB_OLEContainer besorgen. Laut Anzeige ist es *free of charge*


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:56 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz