Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   pdf im TWebBrowser mit voreingestellten Zoom-Faktor (https://www.delphipraxis.net/193321-pdf-im-twebbrowser-mit-voreingestellten-zoom-faktor.html)

Ykcim 17. Jul 2017 16:11

pdf im TWebBrowser mit voreingestellten Zoom-Faktor
 
Hallo Zusammen,

ich möchte ein pdf-Dokument in einem TWebBrowser anzeigen. Allerdings möchte ich, dass immer die ganze DIN A4 Seite angezeigt wird. Dazu muss ich etwas kleiner Zoomen. Das bekomme ich leider nicht hin...

Hiermit rufe das pdf-Dokument aus:
Delphi-Quellcode:
   if OpenDialog.Execute then begin
      WB_O1.Navigate(OpenDialog.FileName);
   end;
Jetzt benötige ich den Befehl, mit dem sagen kann, wie groß das Dokument angezeigt werden soll...

Kann mir jemand einen Tip geben?

Vielen Dank im Voraus
Patrick

hoika 17. Jul 2017 16:26

AW: pdf im TWebBrowser mit voreingestellten Zoom-Faktor
 
Hallo,

Delphi-Quellcode:
const
  OLECMDID_OPTICAL_ZOOM = 63;
var
  zoom : OleVariant;
  iZoom : Integer;
begin
  iZoom:= 80; // z.B. 80%
  zoom := iZoom;
  WebBrowser.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_PROMPTUSER, zoom);

Ykcim 17. Jul 2017 16:33

AW: pdf im TWebBrowser mit voreingestellten Zoom-Faktor
 
Hallo,

vielen Dank für die schnelle Antwort!

Ich habe folgende Fehlermeldung erhalten:
Code:
Exception-Klasse EOleException mit Meldung 'Es wurde versucht, ein Drop-Ziel zu widerrufen, das nicht registriert wurde'. Prozess Pinnwand.exe (10568)
Den Code habe ich wie folgte eingebunden:
Delphi-Quellcode:
procedure TForm_Pinnwand.Dateiladen1Click(Sender: TObject);
const
  OLECMDID_OPTICAL_ZOOM = 63;
var
  zoom : OleVariant;
  iZoom : Integer;
  fileDest:string;
begin
   iZoom:= 40; // z.B. 80%
   zoom := iZoom;
   if OpenDialog.Execute then begin
      with (PDF_Menu.PopupComponent as TWebBrowser) do begin
         Navigate(OpenDialog.FileName);
         ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_PROMPTUSER, zoom);
      end;
   end;
end;
Vielen Dank
Patrick

HolgerX 17. Jul 2017 18:34

AW: pdf im TWebBrowser mit voreingestellten Zoom-Faktor
 
Hmm..

Könnte es sein, dass die Seite erst komplett geladen werden muss, bevor das Zoom gemacht werden kann?

Ykcim 18. Jul 2017 08:23

AW: pdf im TWebBrowser mit voreingestellten Zoom-Faktor
 
Guten Morgen,

ich fürchte, dass ist nicht die Lösung. Ich habe
Code:
Refresh2
wie folgt eingebunden, aber ich bekomme eine 'unbekannter Fehler' Meldung...
Delphi-Quellcode:
procedure TForm_Pinnwand.Dateiladen1Click(Sender: TObject);
const
  OLECMDID_OPTICAL_ZOOM = 63;
var
  zoom : OleVariant;
  iZoom : Integer;
  fileDest:string;
begin
   iZoom:= 40; // z.B. 40%
   zoom := iZoom;
   if OpenDialog.Execute then begin
      with (PDF_Menu.PopupComponent as TWebBrowser) do begin
         Navigate(OpenDialog.FileName);
         Refresh2;
         ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_PROMPTUSER, zoom);
      end;
   end;
end;

Mal in eine andere Richtung gedacht:
Im WebBrowser wird doch mein Acrobat PDF-Reader, den ich installiert habe und der mein Standardprogramm für pdf-Dokumente ist, geöffnet. Gibt es eine Möglichkeit, wie ich den direkt in meinem TWebBrowser ansprechen kann?
Wenn ich den Reader als ActiveX Steuerelement anspreche, dann habe ich das so gemacht...
Delphi-Quellcode:
procedure TForm_Pinnwand.Load_PDF(PDF_Viewer: TAcroPDF; Datei: string);
begin
   if FileExists(Datei) then begin
      PDF_Viewer.Visible:=true;
      PDF_Viewer.LoadFile(Datei);
      PDF_Viewer.Tag:=1;
      PDF_Viewer.setZoomScroll(ZoomFaktor,0,0);//Damit die ganze A4-Seite angezeigt wird
      PDF_Viewer.setShowScrollbars(false);
      PDF_Viewer.setShowToolbar(false);
      PDF_Viewer.setLayoutMode('SinglePage');
      PDF_Viewer.setPageMode('none');
      //PDF_Viewer.setView('FitV');
   end
   else begin
      PDF_Viewer.Visible:=false;
      PDF_Viewer.Tag:=0;
   end;
end;
Kann ich das irgendwie im TWebBrowser hinbekommen? So etwas wie
Code:
WebBrowser.OleObject.setZoomScroll(...)
???

Vielen Dank
Patrick

HolgerX 18. Jul 2017 10:35

AW: pdf im TWebBrowser mit voreingestellten Zoom-Faktor
 
Hmm..


Refresh2 ist mir unbekannt..

Das Warten auf vollständiges Laden der Webseite/Dokumentes geht glaube ich anders:

http://www.delphipraxis.net/38334-wa...laden-hat.html

hoika 18. Jul 2017 10:59

AW: pdf im TWebBrowser mit voreingestellten Zoom-Faktor
 
Hallo,
nach deinem LoadFromFile fehlt noch was.

Delphi-Quellcode:
    while (WebBrowser.ReadyState<>READYSTATE_COMPLETE)and(WebBrowser.Document=nil) and
          ((WebBrowser.Document AS IHTMLDocument2).readyState<>'complete') do
      Application.ProcessMessages;
Wie bereits schon richtig gesagt wurde,
muss das Dokument vollständig geladen sein, damit das Zoom klappt.


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