Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi PDF in DB speichern und öffnen danach Proggi-Abstutz (https://www.delphipraxis.net/168187-pdf-db-speichern-und-oeffnen-danach-proggi-abstutz.html)

blondervolker 9. Mai 2012 11:01

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
DeddyH,

es hat sofort funktioniert!!! Danke für die Mühe:-D

Ich hab nun versucht die gespeicherte PDF mit dem Adobe Reader
aus der Datenbank herauszuholen,aber da kommt kein Mux,keine Meldung und nix passiert.

Delphi-Quellcode:
var
  myPDF : String;
begin
  myPDF := ADOTable1.FieldByName ('PDFFILE').AsString;
  shellexecute(application.Handle,'open',PChar (myPDF),nil,nil, sw_show);

mkinzler 9. Mai 2012 11:05

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Lass mal den ersten Parameter ller (NULL),
Und wenn du die gespeicherte Datei mal manuell im Reader öffnest?

DeddyH 9. Mai 2012 11:10

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Wie soll denn Adobe auf Deine Datenbank zugreifen? Speichere doch einfach den Feldinhalt in einer temporären Datei und öffne die dann.

blondervolker 9. Mai 2012 11:12

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
hab absolut keine Ahnung wie das geht.Ich hab schon gelesen und gegoogelt...

p80286 9. Mai 2012 11:41

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Delphi-Quellcode:
var
  myPDF : String;
  fs   : TFileStream;
begin
  fs:=TFileStream.Create(MeineTempDatei,fmCreate or fmShareExclusive);
  myPDF := ADOTable1.FieldByName ('PDFFILE').AsString;
  fs.Write(mypdf[1],length(mypdf)*Sizeofchar);
  fs.Free;
So sollte das Schreiben funktionieren.
Dann diese Datei an Adobe übergeben und hinterher löschen nicht vergessen.

Gruß
K-H

blondervolker 11. Mai 2012 10:17

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Hallo,

jetzt meckert Delphi:
Berufe.pas(614): E2003 Undefinierter Bezeichner: 'Sizeofchar'

Hab keinen Plan.Was ist da wieder falsch?:oops:


Delphi-Quellcode:
procedure TForm17.Button2Click(Sender: TObject);
var
  myPDF : String;
  fs : TFileStream;
begin
  fs:=TFileStream.Create('Temp\Dok.pdf',fmCreate or fmShareExclusive);
  myPDF := ADOTable1.FieldByName ('PDFFILE').AsString;
  fs.Write(mypdf[1],length(mypdf)*Sizeofchar);
  fs.Free;
end;

DeddyH 11. Mai 2012 10:20

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Das sollte wohl SizeOf(Char) heißen. Aber wieso der umständliche Weg über String, statt wie vorher direkt das BLOB-Feld zu benutzen? Du brauchst doch nur den "%Temp%"-Pfad, kannst dann mit GetTempFilename einen temporären Dateinamen generieren lassen und speicherst unter diesem Namen ab. Nun kannst Du den installierten Reader öffnen, warten, bis der wieder geschlossen wird und dann die temporäre Datei wieder löschen.

p80286 11. Mai 2012 10:36

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Zitat:

Zitat von DeddyH (Beitrag 1166054)
Das sollte wohl SizeOf(Char) heißen.

'Tschulligung das war meine Tastatur schuld
Zitat:

Zitat von DeddyH (Beitrag 1166054)
Aber wieso der umständliche Weg über String, statt wie vorher direkt das BLOB-Feld zu benutzen?

der "String" war vorgegeben, und als Buffer find ich Strings meistens sehr schön, weil da ist die Größe gleich dabei.
Aber wo wurde vorher das BLOB-Feld genutzt? Ich hab's nochmal durchgelesen aber nichts gesehen.

Gruß
K-H

DeddyH 11. Mai 2012 10:38

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Im Ausgangspost und in #9 haben wir TBlobField.SaveToFile benutzt, deshalb war ich über den String als Puffer etwas verwundert.

blondervolker 11. Mai 2012 10:40

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Danke nochmal:thumb::thumb::thumb:

Hab es so gemacht:
Delphi-Quellcode:
procedure TForm17.Button2Click(Sender: TObject);
var
  myPDF : String;
  fs : TFileStream;
begin
  fs:=TFileStream.Create('Temp\Dok.pdf',fmCreate or fmShareExclusive);
  myPDF := ADOTable1.FieldByName ('PDFFILE').AsString;
  fs.Write(mypdf[1],length(mypdf)*Sizeof(char));
  fs.Free;
  if ShellExecute(Application.Handle,
                 'open',
                 PChar('Temp\Dok.pdf'),
                 nil, nil, SW_NORMAL) <= 32 then
    ShowMessage('Es ist ein Fehler aufgetreten,da in der Datenbank keine Pdf Datei gefunden wurde.');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 Uhr.
Seite 2 von 4     12 34      

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