AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser druckt auf mehreren Seiten.

Ein Thema von vit4l · begonnen am 6. Dez 2013 · letzter Beitrag vom 11. Dez 2013
Antwort Antwort
vit4l

Registriert seit: 10. Jun 2008
72 Beiträge
 
#1

TWebBrowser druckt auf mehreren Seiten.

  Alt 6. Dez 2013, 14:28
Hallo an alle,

brauche wieder euere Hilfe. Möchte über TWebbrowser und Druckvorschau (ohne druckvorschau das selbe Problem) eine Seite ausdrucken. Über mein Programm wird der Inhalt auf mehreren Seiten ausgedruckt. Navigiere ich allerdings mit IExplorer oder Mozzilla und drucke von dort aus wird nur eine Seite gedruckt. Kenn jemand die Lösung, damit mein Programm auch nur den selben Inhalt auf einer Seite ausdruckt?.
  Mit Zitat antworten Zitat
vit4l

Registriert seit: 10. Jun 2008
72 Beiträge
 
#2

AW: TWebBrowser druckt auf mehreren Seiten.

  Alt 10. Dez 2013, 15:28
push
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: TWebBrowser druckt auf mehreren Seiten.

  Alt 10. Dez 2013, 15:44
Auch ich möchte viel....
wie druckst Du denn bisher?
ggf. hilft es schon die Ränder neu zu definieren oder mit einem anderen Font zu arbeiten oder .....

der Möglichkeiten ist Legion

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
vit4l

Registriert seit: 10. Jun 2008
72 Beiträge
 
#4

AW: TWebBrowser druckt auf mehreren Seiten.

  Alt 10. Dez 2013, 16:29
Also viel möchte ich nicht, nur dass der TWebbrowser mir eine Seite ausdruckt genauso wie IExplorer. Aber danke für den Hinweis werde ich mal versuchen. Ich drucke ganz normal mit der Metohode:

WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT PREVIEW, OLECMDEXECOPT_PROMPTUSER, vIn, vOut);
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: TWebBrowser druckt auf mehreren Seiten.

  Alt 10. Dez 2013, 18:03
Na dann kennst Du ja auch das _PAGESETUP, hast Du das schon einmal genutzt?
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#6

AW: TWebBrowser druckt auf mehreren Seiten.

  Alt 11. Dez 2013, 00:53
Hallo,

Zitat:
[...] Über mein Programm wird der Inhalt auf mehreren Seiten ausgedruckt. Navigiere ich allerdings mit IExplorer oder Mozzilla und drucke von dort aus wird nur eine Seite gedruckt [...]
Ich vermute, dass die TWebBrowser-Instanz im Kompatibilitätsmodus läuft (ein fehlendes oder fehlerhaftes <!DOCTYPE oder Fehler im Quellcode reichen schon aus), wohingegen der IE o. ä. wohl im Standardmodus läuft. Dann gibt es Unterschiede im Rendering der Seite, was dann auch zu unterschiedlichen Druckausgaben führt.

Ob dem so ist kannst Du ja mal ausprobieren. Mit:
Delphi-Quellcode:
procedure TForm1.Button1Click (Sender : TObject);
var
  d : IHTMLDocument3;
begin
  if Assigned (WebBrowser1.Document) then
    begin
      d := WebBrowser1.Document as IHTMLDocument3;
      if Assigned (d) then
        ShowMessage (d.compatMode)
    end;
end;
kannst Du Dir anzeigen lassen in welchem Modus die TWebBrowser-Instanz gerade läuft (BackCompat = Kompatibilitätsmodus) und die aktuell geladene Seite anzeigt.

Mit:
Code:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
kannst Du den IE "überreden" nicht in den Kompatibilitätsmodus zu schalten. Das setzt allerdings voraus, dass Du den HTML-Code manipulieren kannst.

Vermutlich hast Du diese Möglichkeit aber nicht. Wenn dem so ist, dann könntest Du das Meta-Tag dem IE aber sozusagen "unterjubeln"; das könnte z. B. so funktionieren:
Delphi-Quellcode:
function GetBrowserCompatMode (const WebBrowser : TWebBrowser) : Integer;
var
  d : IHTMLDocument5;
begin
  Result := -1;
  if not Assigned (WebBrowser) then
    Exit;

  d := WebBrowser.Document as IHTMLDocument5;
  if not Assigned (d) then
    Exit;

  if d.compatMode = 'CSS1Compatthen
    Result := htmlCompatModeCSS1Compat
  else
    Result := htmlCompatModeBackCompat
end;

procedure ReplaceHtmlDocument (const WebBrowser : TWebBrowser; const Html : string);
var
  d : IHTMLDocument2Disp;
begin
  if Assigned (WebBrowser) then
    begin
      d := WebBrowser.Document as IHTMLDocument2Disp;
      if Assigned (d) then
        begin
          d.open ('text/html', '_self', '', 'true');
          d.writeln (Html)
        end;
    end
end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
var
  d : IHTMLDocument3;
  s : string;
  p, q : Integer;
  c : Char;
begin
  if GetBrowserCompatMode (WebBrowser1) = htmlCompatModeBackCompat then
    begin
      d := WebBrowser1.Document as IHTMLDocument3;
      if Assigned (d) then
        begin
          s := d.documentElement.outerHTML;

          // Die Suche nach der passenden Einfügestelle nur rudimentär
          p := PosEx ('<HEAD', s);
          if p = 0 then
            Exit;

          Inc (p, 5);
          q := PosEx ('<META', s, p);
          if q > 0 then
            Insert ('<base href="' + URL + '"><meta http-equiv="X-UA-Compatible" content="IE=edge">', s, p + 1)
          else
            begin
              c := s [p];
              while (c <> '>') and (c <> #0) do
                begin
                  Inc (p);
                  c := s [p]
                end;

              if c = '>then
                Insert ('<base href="'+ URL + '"><meta http-equiv="X-UA-Compatible" content="IE=edge">', s, p + 1)
              else
                s := ''
            end;

          if s <> 'then
            ReplaceHtmlDocument (WebBrowser1, s)
        end
    end
end;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat
vit4l

Registriert seit: 10. Jun 2008
72 Beiträge
 
#7

AW: TWebBrowser druckt auf mehreren Seiten.

  Alt 11. Dez 2013, 13:57
Vielen Dank an Volker Z. Genau deine Lösung hat mir geholfen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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