IpHtmlPanel1.PrintPreview

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
hbr
Beiträge: 329
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

IpHtmlPanel1.PrintPreview

Beitrag von hbr »

Hallo Forum,
ich benutze unter Windows IpHtmlPanel1.PrintPreview, was auch funktioniert.
Nur unter Linux wird ein Komplettes Schwarz beim drucken ausgegeben.

Gibt es eine Changse das in den Griff zu bekommen? LAZ V4.6 und 3.2.2.

Für Antworten wäre ich Dankbar.

wp_xyz
Beiträge: 5472
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtmlPanel1.PrintPreview

Beitrag von wp_xyz »

Unter welchem Widgetset? gtk2, gtk3, qt5, qt6?

wp_xyz
Beiträge: 5472
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtmlPanel1.PrintPreview

Beitrag von wp_xyz »

Ich habe das nun auf meiner OpenSUSE-VM mit einem kleinen IproHtml-Projekt ausprobiert, das irgendwann mal hier im Forum gepostet war (von dir?), und kann das Problem nicht bestätigen. Am besten war der Ausdruck auf gtk3 von der gtk3-IDE aus. Die qt6-IDE lieferten bei dem in der HTML-Seite eingebetteten transparenten Bild für alle Widgetsets einen schwarzen Hintergrund, und auf der gtk3-IDE kam unter qt5 und qt6 ein leeres Blatt, wobei aber schon eine leere Druckvorschau gerendert worden ist. IDEs unter den anderen Widgetsets habe ich nicht probiert. Komplett schwarz war der Ausdruck nie.

hbr
Beiträge: 329
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: IpHtmlPanel1.PrintPreview

Beitrag von hbr »

Das Problem tritt bei Linux MINT 2.3 auf in gtk2.
Alle Seiten sind komplett schwarz, bis auf Bilder die zu sehen sind.

Das Problem konnte gelöst werden.

Code: Alles auswählen

procedure TIpHtmlInternalPanel.PrintPages(FromPage, ToPage: Integer);
var
  CR : TRect;
  i : Integer;
  oldRD: TIpHtmlRenderDevice;

begin
  if (Hyper <> nil) then begin
    oldRD := Hyper.RenderDevice;
    Printer.Refresh;
    BeginPrint;
    Printer.BeginDoc;
    try
      CR := Rect(0, 0, PrintWidth, 0);
      for i := FromPage to ToPage do begin
        CR.Top := (i - 1) * PrintHeight;
        CR.Bottom := Cr.Top + PrintHeight;

  //*************** Fix ********************//
       with Printer.Canvas do
        begin
          Brush.Style := bsSolid;
          Brush.Color := clWhite;
          FillRect(Rect(0, 0, Printer.PageWidth, Printer.PageHeight));
       end;
  //***************************************//

       Hyper.FRenderDev := rdPrinter;
       Hyper.Render(Printer.Canvas, CR, False, PrintTopLeft);
        if i < ToPage then
          Printer.NewPage;
        Printed := True;
      end;
    finally
      if Printed then
        Printer.EndDoc
      else
        Printer.Abort;
      EndPrint;
      Hyper.FRenderDev := oldRD;
    end;
  end;
end;                                                                    

wp_xyz
Beiträge: 5472
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtmlPanel1.PrintPreview

Beitrag von wp_xyz »

Habe jetzt auch noch die VM mit Mint 22.3 genommen und den Drucker installiert. Darstellungsfehler gibt es unter gtk2 im Bereich des eingefügten Bildes (schwarzer Hintergrund), aber keinesfalls ist das ganze Blatt schwarz. Lazarus main und v4.4.

Ich frage mich, warum diese Zeilen bei mir nicht nötig sind.

Ich schicke dir mal in der Anlage das Programm, das ich zum Testen verwendet habe. Vielleicht lädst du im Gegenzug die html-Datei hoch, die du verwendest.
Dateianhänge
ipro_printing_transparent_images_issue.zip
(72.12 KiB) 1-mal heruntergeladen

wp_xyz
Beiträge: 5472
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtmlPanel1.PrintPreview

Beitrag von wp_xyz »

Ist eventuell die Eigenschaft BgColor des IpHtmlPanels auf schwarz gestellt? Damit kann ich den ganzen Blatt-Hintergrund im Ausdruck schwarz machen (Die Defaulteinstellung ist clWhite).

Antworten