Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pdf im TWebBrwoser anpassen (https://www.delphipraxis.net/79564-pdf-im-twebbrwoser-anpassen.html)

papabaer 24. Okt 2006 20:33


Pdf im TWebBrwoser anpassen
 
Ich habe - nach vergeblichen Versuchen mit dem ocx von Acrobat - mich entschieden die Pdf-Datein im TWebBrowser zu laden. Nun hatte ich mit TAcroPdf die Möglichkeit bistimmte Anpassungen vorzunehmen: Zoom einstellen, Menu unterdrücken usw. Geht das im TWebBrowser auch noch ... sieht sonst nicht so gut aus.

HalloDu 24. Okt 2006 20:38

Re: Pdf im TWebBrwoser anpassen
 
Ich denke nicht das man da groß was machen kann, weil in TWebBrowser wird ja das Adobe Reader/Acrobat Plugin benutzt auf das du ja keinen Einfluss hast so weit ich weiß, lasse mich aber gern belehren.

Edit: Ich würde dir Empfehlen wieder eine Komponente zu benutzten die auf PDF speziallisiert ist. Dann hast du auch volle Zugriffmöglichkeit (Sofern die Kompo das hat :mrgreen: )

Bernhard Geyer 24. Okt 2006 21:17

Re: Pdf im TWebBrwoser anpassen
 
Die (minimalen) Möglichkeiten des OCX hast Du im TWebBrowser auch. Du mußt "nur" das geladene Document-Interface checken ob es vom Typ der OCX ist und dann entsprechend casten.

Aus dem Gedächtnis:

Delphi-Quellcode:
TMyForm.OnDocumentCompleteMyWebBrowser(...)
var
  MyPDFIntf: IAcroPDF;
begin
  if MyWebBrowsser.ControlInterface.Document.QueryInterface(IID_..., MyPDFIntf) then
  begin
    ...
  end;
end;
Fremdkomponenten haben bei PDF im das Problem das es AFAIK keine gibt dich nicht irgendwelche Elemente in einigen PDF's falsch (gegenüber dem Acrobat Reader) interpretiert.

papabaer 25. Okt 2006 11:51

Re: Pdf im TWebBrwoser anpassen
 
Hm, dafür benötige ich aber wieder das ActiveX ... :(

Aber, wenn ich Pdf's mit dem TWebBrowser anzeigen will, werden diese zumindest angezeigt, auch wenn nur der Acrobat 6 installiert ist. Gibt es eine Möglichkeit, herauszufinden, ob der richtige Reader (d.h. 7) installiert ist, dann kann man in diesem Fall noch nach dem Laden Formatierungen vornehmen.

Bernhard Geyer 25. Okt 2006 14:36

Re: Pdf im TWebBrwoser anpassen
 
Zitat:

Zitat von papabaer
Hm, dafür benötige ich aber wieder das ActiveX ... :(

Wie sollte es ohne gehen? (Jedenfalls wenn Du denn Acrobat Reader verwenden willst) :gruebel:

Zitat:

Zitat von papabaer
Gibt es eine Möglichkeit, herauszufinden, ob der richtige Reader (d.h. 7) installiert ist, ...

Ist doch obiger Pseudocode. Wenn du als IID die ID vom Reader 7 verwendest überprüfst du doch auf diesen.

papabaer 25. Okt 2006 18:08

Re: Pdf im TWebBrwoser anpassen
 
Da hab ich mich wohl nicht genau genug ausgedrückt: Da muss ich wieder das ActiveX für den Acrobat 7 nehmen, da ich TAcroPdf zurückgreife. Damit habe ich das Problem, dass auf PC's, die noch den Acrobat 6 verwenden das alles nicht funktioniert ...

Delphi-Quellcode:
if MyWebBrowsser.ControlInterface.Document.QueryInterface(IID_..., MyPDFIntf) then
Was meinst du mit IID_, bzw. wo finde ich die dazugehörige ID? ... sorry, aber ist für mich Neuland...

papabaer 30. Okt 2006 19:04

Re: Pdf im TWebBrwoser anpassen
 
So, ich habe jetzt eine Lösung - in Verbindung mit einem TWebBrowser - gefunden. Beim Erstellen des Programms wird abgetestet, ob der Acrobat Reader 7 installiert ist ...

Delphi-Quellcode:
  try
    PdfFenster:= TAcroPDF.Create(Self);
    PdfFenster.Parent:= PanelPdf;
    PdfFenster.LoadFile('\pdf\Lektion_1_1.pdf');
    PdfOK:= true;
    // Acrobat 7 Reader ist installiert -> einstellen
    with PdfFenster do
      begin
        Height:= 365;
        Left:= 12;
        Top:= 30;
        Width:= 560;
      end;
  except
    PdfOK:= false;
    // Acrobat 7 Reader ist nicht installiert
    PdfFenster.Free;
  end;
... später, wenn eine Pdf-Datei angezeigt werden soll, wird diese dementsprechend geladen.

Delphi-Quellcode:
   if PdfOK then
     begin // Ausgabe mit Acrobat Reader
       PdfFenster.Visible:= true;
       PdfFenster.LoadFile(s);
       PdfFenster.setShowToolbar(false);
       PdfFenster.setZoomScroll(105,50,50);
     end else
     begin // Ausgabe über Webbrowser
       GetDir(0,sdir);
       MainForm.PdfWebBrowser.Visible:= true;
       MainForm.PdfWebBrowser.Navigate(sdir+'\'+s);
     end;
Dies funktioniert ansich ganz gut - ich habe es auf mehreren Rechnern mit unterschiedlichen Acrobat-Versionen getestet. Allerdings wurde auf einem Rechner, auf dem der Acrobat Reader 7.0 installiert ist die Pdf-Datei trotzdem über den Browser geladen? Gibt es auch unterschiedliche TAcroPdf-Versionen? Woran kann dies noch liegen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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