Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PDF aus DB anzeigen im Webbrowser? (https://www.delphipraxis.net/168064-pdf-aus-db-anzeigen-im-webbrowser.html)

blondervolker 3. Mai 2012 08:49

PDF aus DB anzeigen im Webbrowser?
 
Hallo,

hab eine Pdf datei in der Datenbank gespeichert.Nun versuche ich diese angezeigt zu bekommen im Webbrowser.Geht aber nicht.
Gibt es da vielleicht eine Alternative?:oops:

Delphi-Quellcode:
WebBrowser1.Navigate ('ADOTable1.PDFFILE');

Sybok Factor 3. Mai 2012 08:54

AW: PDF aus DB anzeigen im Webbrowser?
 
Da es mit einem File auf der Festplatte normalerweise funktioniert, würde ich die Datei im Temp-Verzeichnis speichern und dann mit
Delphi-Quellcode:
Webbrowser1.Navigate('C:\temp\MyPDF.pdf');
aufrufen. Hinterher wieder löschen.

Klaus01 3. Mai 2012 08:57

AW: PDF aus DB anzeigen im Webbrowser?
 
..oder es anhand dieser Anleitung aus einem Stream laden.

Grüße
Klaus

Gustav.R 3. Mai 2012 09:48

AW: PDF aus DB anzeigen im Webbrowser?
 
Wie blond muss man eigentlich sein, um für jede Frage "Neuen Beitrag zur Code-Library hinzufügen" zu erwischen?

DP-Maintenance 3. Mai 2012 14:07

Dieses Thema wurde am "03. May 2012, 15:07 Uhr" von "TBx" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Programmieren allgemein" verschoben.

blondervolker 3. Mai 2012 20:08

AW: PDF aus DB anzeigen im Webbrowser?
 
Nabend,

ich bin ganz blond...:-D
Ich sitzte nicht jeden Abend bei "Delphi"...
Ich bin Laie!!!!
Drum bin ich hier...
Natürlich bekommt man eine über die "Jacke",wenn man dusseliche Fragen stellt,die die anderen schon längst gefressen haben.
Danke:-D

Sir Rufo 4. Mai 2012 00:36

AW: PDF aus DB anzeigen im Webbrowser?
 
Zitat:

Zitat von DP-Maintenance (Beitrag 1164729)
Dieses Thema wurde am "03. May 2012, 15:07 Uhr" von "TBx" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Programmieren allgemein" verschoben.

Zitat:

Zitat von Gustav.R (Beitrag 1164687)
Wie blond muss man eigentlich sein, um für jede Frage "Neuen Beitrag zur Code-Library hinzufügen" zu erwischen?

Zitat:

Zitat von blondervolker (Beitrag 1164771)
Nabend,

ich bin ganz blond...:-D
Ich sitzte nicht jeden Abend bei "Delphi"...
Ich bin Laie!!!!
Drum bin ich hier...
Natürlich bekommt man eine über die "Jacke",wenn man dusseliche Fragen stellt,die die anderen schon längst gefressen haben.
Danke:-D

Die Frage zu dieser Antwort hattest du nicht gestellt.

Aber mich würde auch mal interessieren, warum du eine neue Frage grundsätzlich unter Neuen Beitrag zur Code-Library hinzufügen einstellst?
Oder gehst du morgens auch in die Autowerkstatt und bestellst Brötchen?
Eventuell geben die ja aus Mitleid von ihren was ab

So blond kann man nicht sein, denn des Lesens bist du sehr wohl mächtig :roll:

blondervolker 7. Mai 2012 08:19

AW: PDF aus DB anzeigen im Webbrowser?
 
Hallo,

bin schon eine weile hier,aber dass hab ich jetzt erst gesehen...:oops:

Hab nun gebastelt und den Webbrowser weggelassen.Aber komme nicht weiter.
Kann ich ein Oleobject mit einem DBMemo verknüpfen?

Es kommt immer eine Fehlermeldung:"ungültiger Stream".
Delphi-Quellcode:
procedure TForm17.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
Field: TBlobfield;
begin
ADOTable1.Edit;
OpenDialog1.Filter:='*.pdf|*.pdf';
    if OpenDialog1.Execute then
      begin
        TBlobField(ADOTable1.FieldByName('PDFFILE')). //PDF im DBMemo10 speichern
          LoadFromFile(OpenDialog1.FileName);
          ADOTable1.Post;
end;
end;


procedure TForm17.Button2Click(Sender: TObject);
var
Stream : TMemoryStream;
Field : TBlobField;
begin
  Field := ADOTable1.FieldByName('PDFFILE') AS TBlobField;
  Stream:=TMemoryStream.Create;
  try
    Field.SaveToStream(Stream);
    Stream.Position:=0;
    OleContainer1.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;
Was habe ich jetzt nach über 10 STD. falsch gemacht?:oops:

SpTBX 7. Mai 2012 09:26

AW: PDF aus DB anzeigen im Webbrowser?
 
Vor kurzem hatte ich eine ähnliche Frage hier:

http://www.delphipraxis.net/168058-o...gramm-ein.html

So zu sagen -> Menü->Komponente->ActiveX importieren.

Da gibt es ein ActiveX Control für PDF.

Das einfach nehmen und fertig.

Wenn in anderen Fällen der Webbrowser sichtbar bleiben soll, für diesen Fall unsichtbar machen und stattdessen das AxtiveX control mit der Datei an gleicher Position anzeigen und danach das ActiveX Control unsichtbar und den Webbrowser wieder sichtbar machen.

Oder Webbrowser und ActiveX Control auf zwei Registerkarten verteilen, je nach Anforderung.

Bernhard Geyer 7. Mai 2012 09:28

AW: PDF aus DB anzeigen im Webbrowser?
 
Zitat:

Zitat von SpTBX (Beitrag 1165145)
Da gibt es ein ActiveX Control für PDF.

Das einfach nehmen und fertig.

Und dann vom Kunden die Info bekommen das es nicht geht weil er statt eines Adobe Readers z.B. den Foxit-Reader hat.

blondervolker 8. Mai 2012 07:58

AW: PDF aus DB anzeigen im Webbrowser?
 
Guten Morgen,

hab nun das Acropdf auf die Form geklatscht.Im Datenbankmemo1'PDFFILE' hab ich ein Blobfeld.Dort ist die PDF Datei schon gespeichert im "Wurstelformat".:-D
Wie bekomme ich das Ding jetzt zur Vorschau?
Bei dem Code wird gemeckert:
E2007 Konstante oder Typenbezeichner erwartet:oops:

Delphi-Quellcode:
procedure TForm17.Button2Click(Sender: TObject);
var
PDFFILE:Acropdf1;
begin
AcroPDF1.LoadFile('ADOTable1.PDFFILE.pdf');
end;

Klaus01 8. Mai 2012 08:05

AW: PDF aus DB anzeigen im Webbrowser?
 
Guten Morgen,

ich denke nicht, dass Acropdf eine Datei direkt aus der Datenbank laden kann.
loadFile riecht auch eher nach dem Laden von einer Datei.

Und dann könntest Du noch kurz erklären, was Du dir dabei gedacht hast:
Delphi-Quellcode:
procedure TForm17.Button2Click(Sender: TObject);
var
  PDFFILE:Acropdf1;
begin
  AcroPDF1.LoadFile('ADOTable1.PDFFILE.pdf');
end;
Ist AcroPDF1 nun ein Type oder eine Instanz?

Grüße
Klaus

blondervolker 8. Mai 2012 08:11

AW: PDF aus DB anzeigen im Webbrowser?
 
Hab es jetzt so probiert und es kommen keine Fehlermeldungen mehr.
Bin ich schon mal Stolz.

Außer ein Infofenster,ich soll die dusseligen Lizenzbedingungen von Adobe akzeptieren.Aber ich kann da nicht mal ein Häkchen setzen.
So ein Müll...

Delphi-Quellcode:
procedure TForm17.Button2Click(Sender: TObject);
var
PDFFILE:PDFViewer.TAcroPdf;
begin
AcroPDF1.LoadFile('ADOTable1.PDFFILE');
end;

Klaus01 8. Mai 2012 09:54

AW: PDF aus DB anzeigen im Webbrowser?
 
Delphi-Quellcode:
uses
  .. ActiveX ..
Delphi-Quellcode:
procedure LoadPDFFromStream(WebBrowser: TWebBrowser; const Stream: TStream);
var
  flag : OleVariant;
begin
  flag := 0;
  WebBrowser.Navigate('about:blank', flag,flag,flag,flag);
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
     if stream.Size > 0 then
       begin
         stream.Seek(0,soFromBeginning);
         (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(stream));
       end;
  end;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  pdfStream: TMemoryStream;
begin
  pdfStream := TMemoryStream.Create;
  try
    pdfStream.LoadFromFile('file.pdf');
    LoadPDFFromStream(WebBrowser1,pdfStream);
  finally
    pdfStream.Free;
  end;
end;
Lädt ein PDF via Stream in den TWebBrowser.
Ein oder mehrere Beispiele hättest Du auch durch die Forumsuche gefunden.

Die Methode hat allerdings noch einen Haken, das PDF wird nicht gerendert.
Wenn der WebBrowser den Inhalt per Stream erhält, kann er nicht wissen um welchen Type es sich handelt.
Dazu müsste dem WebBrowser ein Content-Type mitgegeben werden.

Das wäre dann Dein Job.
Auch Dein Job ist es zuzusehen wie Du das PDF aus der Datenbank in den Stream bekommst.

Grüße
Klaus

Sybok Factor 8. Mai 2012 10:29

AW: PDF aus DB anzeigen im Webbrowser?
 
Zitat:

Zitat von Klaus01 (Beitrag 1165279)
Das wäre dann Dein Job.
Auch Dein Job ist es zuzusehen wie Du das PDF aus der Datenbank in den Stream bekommst.

Grüße
Klaus

Was ja nur eine Seite vorher erklärt wurde...


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr.

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