Das kann eigentlich nicht sein. Hab gerade in der GitLab Web-Ansicht nachgesehen: das IpHtmlTypes ist in der uses-Zeile von IpHtmpPV enthalten (https://gitlab.com/freepascal.org/lazar ... htmlpv.pas).hbr hat geschrieben: Fr 10. Mär 2023, 13:48 ich Installiere über fpcupdeluxe(auch GitLab),
Habe dann die Trunkversionen installiert.
Dann hat er LZ 2.3.0 und FPC 3.3.1 installiert.
Dort sind die Änderungen nicht enthalten, habe sie dann Manuel eingesetzt.
Probleme mit PrintPreview
Re: Probleme mit PrintPreview
-
- Beiträge: 321
- 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: Probleme mit PrintPreview
OK,wp_xyz hat geschrieben: Fr 10. Mär 2023, 13:53 Wenn du dir diese Akrobatik sparen willst, müsstest du nach einer anderen Bibliothek für gif-Support suchen - evtl reicht GifAnim oder GifViewer im OPM, oder vielleicht kann auch bgrabitmap mit gif umgehen.
es funktioniert ja auch (unter Window) nicht mit den *.png.
.gif kann man ja ersetzen.
Aber der Transparente Hintergrund bleibt schwarz,
gedruckt über LZ, ob .gif oder .png und das ist das Problem.
Re: Probleme mit PrintPreview
Wiegesagt, bei mir funktioniert es, und damit ist klar, dass es kein Problem der IPro Komponente ist. Hast du Zugriff auf einen anderen Drucker? Oder vielleicht kannst du dir einen Druckertreiber eines ähnlichen Modells installieren? Oder es gibt im Druckerdialog Einstellungen, die das bewirken (Druckqualität, verwendetes Papier, ...)?hbr hat geschrieben: Fr 10. Mär 2023, 14:18 es funktioniert ja auch (unter Window) nicht mit den *.png.
-
- Beiträge: 321
- 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: Probleme mit PrintPreview
Wenn ich das HTML-File z.B. mit Mozilla aufrufe und drucke, ist alles OK, so wie es sein soll.
Also ist die Druckausgabe es installierten Windowsdrucker OK.
Wenn ich es über das IpHtml Drucke, ist das Ergebnis in der Vorschau Druckerausgabe(RintPreview) in Ordnung.
Wird es gedruckt sind die Bildhintergründe schwarz(PDF ist aber OK).
Also ist die Druckausgabe es installierten Windowsdrucker OK.
Wenn ich es über das IpHtml Drucke, ist das Ergebnis in der Vorschau Druckerausgabe(RintPreview) in Ordnung.
Wird es gedruckt sind die Bildhintergründe schwarz(PDF ist aber OK).
Re: Probleme mit PrintPreview
Das habe ich schon verstanden. Aber mit meinem Drucker ist die Ausgabe in Ordnung, sowohl unter Windows, als auch (etwas eingeschränkt wegen des gif) unter Linux. Daher muss es an deinem Drucker/Druckertreiber liegen. Und daher auch die Bitte, mit dem Drucker zu experimentieren (anderer Drucker, anderer Treiber, andere Einstellungen). Und vor allem, wenn ich einen "Fehler" nicht reproduzieren kann, weiß ich nicht, was ich da tun soll.hbr hat geschrieben: Fr 10. Mär 2023, 15:00 Wenn ich das HTML-File z.B. mit Mozilla aufrufe und drucke, ist alles OK, so wie es sein soll.
Also ist die Druckausgabe es installierten Windowsdrucker OK.
Wenn ich es über das IpHtml Drucke, ist das Ergebnis in der Vorschau Druckerausgabe(RintPreview) in Ordnung.
Wird es gedruckt sind die Bildhintergründe schwarz(PDF ist aber OK).
IpHtml macht ein "stink-normales" Stretchdraw des Bildes auf den canvas des Drucker. Das ist naheliegend. Was Mozilla macht, wissen wir nicht. Wie oben theo schon vorschlug, mache dasselbe mit einem einfachen png. Hier ist einfacher Code dafür:
Code: Alles auswählen
uses
Printers, OSPrinters;
function mm2Px(mm: Double; DPI: Integer): Integer;
begin
Result := round(mm / 25.4 * DPI);
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
const
pngFile = 'Add_08_64.png';
var
pic: TPicture;
png: TPortableNetworkGraphic;
bmp: TBitmap;
w, h, x, y: Integer;
begin
Printer.BeginDoc;
pic := TPicture.Create;
try
pic.LoadFromFile(pngFile);
x := mm2px(10, Printer.XDPI);
y := mm2px(10, Printer.YDPI);
w := mm2px(50, Printer.XDPI);
h := mm2px(50, Printer.XDPI);
Printer.Canvas.StretchDraw(Rect(x, y, x+w, y+h), pic.Graphic);
finally
pic.Free;
end;
png := TPortableNetworkGraphic.Create;
try
png.LoadFromFile(pngFile);
x := x + w;
Printer.Canvas.StretchDraw(Rect(x, y, x+w, y+h), png);
finally
png.Free;
end;
Printer.EndDoc;
end;
Und was ist dein Betriebssystem? Ich bin auf Win-11.
-
- Beiträge: 321
- 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: Probleme mit PrintPreview
Win10,Hier wird eine png-Datei (gegeben durch den Dateinamen "pngFile") einmal über TPicture und einmal direkt über TPortableNetworkGraphic geladen und dann per StretchDraw auf dem Canvas des Druckers ausgegeben. Bei mir funktioniert das mit der angegebenen transparenten Datei aus den Lazarus general-purpose images einwandfrei, ohne einen schwarzen Außenbereich. Und bei dir?
Und was ist dein Betriebssystem? Ich bin auf Win-11.
also verstehen tue ich das nicht, aus allen anderen Anwendungen Funktioniert es,
wenn ich z.B. in Word, Writer, jeder Browser die .png hineinziehe und drucke, ist alles OK.
Also mit dem Tool war das gleiche, keine Transparenz.
Daraufhin, habe ich die Druckertreiber (waren Aktuell, neuer Drucker) entfernt und die Windows-Treiber installiert.
Danach funktionierte es, warum auch immer, ist mir ein Rätzel.
Ich hätte nie gedacht, wenn es mit all den anderen Programmen (Anwendungen) Funktioniert,
dann kann es ja nicht an den Druckertreibern liegen.
Ich frage mich nun, was ist der Unterschied zwischen den Anwendungen und der LZ-Ausgabe?
Re: Probleme mit PrintPreview
Nur so vor mich hingesponnen: Es könnte sein, dass auf dem Druckertreiber die StretchDraw-Funktion schlecht implementiert ist und die anderen Anwendungen aber zuerst in ein Buffer-Bitmap schreiben (per StretchDraw, oder vielleicht sogar mit einer verbesserten Skalierungsroutine, mit der man eine bessere Qualität erzielt) und dieses dann aber per einfachem Draw an den Drucker schicken.
Das habe ich im folgenden nachgestellt. Wenn meine Theorie stimmt, müsste der "fehlerhafte" Druckertreiber das Testbild nun fehlerfrei ausgeben:
Wenn das so wäre, dann könnte man natürlich die Ausgabe von Bitmaps durch das IpHtmlPanel auch so implementieren.
Das habe ich im folgenden nachgestellt. Wenn meine Theorie stimmt, müsste der "fehlerhafte" Druckertreiber das Testbild nun fehlerfrei ausgeben:
Code: Alles auswählen
procedure TForm1.Button2Click(Sender: TObject);
const
pngFile = 'Add_08_64.png';
var
pic: TPicture;
bmp: TBitmap;
w, h, x, y: Integer;
begin
Printer.BeginDoc;
png := TPortableNetworkGraphic.Create;
try
png.LoadfromFile(pngFile);
x := mm2px(10, Printer.XDPI);
y := mm2px(10, Printer.YDPI);
w := mm2px(50, Printer.XDPI);
h := mm2px(50, Printer.XDPI);
bmp := TBitmap.Create;
try
bmp.PixelFormat := pf32Bit;
bmp.SetSize(w, h);
bmp.Canvas.Brush.Color := clWhite;
bmp.Canvas.FillRect(0, 0, w, h);
bmp.Canvas.StretchDraw(Rect(0, 0, w, h), png);
bmp.SaveToFile('test.bmp');
Printer.Canvas.Draw(x, y, bmp);
finally
bmp.Free;
end;
finally
png.Free;
end;
Printer.EndDoc;
end;
Re: Probleme mit PrintPreview
Wer einen HP Tintenspritzer der Anfangszeiten hatte, kannte dieses Problem.also verstehen tue ich das nicht, aus allen anderen Anwendungen Funktioniert es,
wenn ich z.B. in Word, Writer, jeder Browser die .png hineinziehe und drucke, ist alles OK.
Wenn HP drauf stand und im Ausdruck etwas schwarz war, war es eigentlich immer der Druckertreiber.
Ich habe da mit D6 schon arge Probleme beim Ausdruck von Grafiken. Mehrmals musste ich damals auf ein Update seitens HP warten.
Mag sein, dass du keinen HP hast, aber als ich gestern deinen Beitrag las, hatte ich sofort "Druckertreiber" im Kopf

Gruß, Michael
-
- Beiträge: 321
- 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: Probleme mit PrintPreview
Ich hatte einen Laser Kyocera mdf Ducker im Einsatz,
der wegen eines mechanischen Defekt durch einen Brother Laser MFC ersetz wurde.
Mir war ein solches Verhalten gänzlich unbekannt.
Habe hauptsächlich die verschiedensten Laser Marken installiert und mir sind nie solche auffällige Probleme untergekommen, daher war ich mehr als überrascht.
Aber man lernt immer noch hinzu, egal wie alt man ist.
der wegen eines mechanischen Defekt durch einen Brother Laser MFC ersetz wurde.
Mir war ein solches Verhalten gänzlich unbekannt.
Habe hauptsächlich die verschiedensten Laser Marken installiert und mir sind nie solche auffällige Probleme untergekommen, daher war ich mehr als überrascht.
Aber man lernt immer noch hinzu, egal wie alt man ist.
Re: Probleme mit PrintPreview
@hbr: Kannst du den Code-Schnippsel zwei Posts weiter oben (10. März 22:32) einmal mit dem "defekten" Druckertreiber ausprobieren? Wenn nun das Bild ohne schwarzen Rand dargestellt wird, hätte ich eine Idee, wie man das IpHtmlPanel fixen könnte.
NB: Du musst nicht jedesmal den alten Druckertreiber deinstallieren. Installiere einfach den neuen Druckertreiber dazu, selbst wenn er dasselbe Gerät bedient. Du musst ihm nur einen anderen Namen geben.
NB: Du musst nicht jedesmal den alten Druckertreiber deinstallieren. Installiere einfach den neuen Druckertreiber dazu, selbst wenn er dasselbe Gerät bedient. Du musst ihm nur einen anderen Namen geben.
-
- Beiträge: 321
- 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: Probleme mit PrintPreview
@ wp_xyz
Ich versuche gerade die Installation wieder zu rekonstruieren wo der Fehler aufgetreten ist. Die Broher Treiber waren wie ein Virus und so ohne weiters nicht vom System zu entfernen. Das nach installieren der Originalen Brother Treiber brachte auch nicht das gewünschte Fehlerergebnis. Nun habe ich ein älteres PC-Image installiert und versuche meine Anfangs Druckerinstallation des neuen Druckers zu rekonstruieren. Das dauert aber etwas weil meine PC Images ca. 200GB goß sind.
Ich melde mich und teile das Ergebnis mit.
Ach ja, wieso wird bei dem Ersten Tool Post das Bild zweimal nebeneinander gedruckt?
Ich versuche gerade die Installation wieder zu rekonstruieren wo der Fehler aufgetreten ist. Die Broher Treiber waren wie ein Virus und so ohne weiters nicht vom System zu entfernen. Das nach installieren der Originalen Brother Treiber brachte auch nicht das gewünschte Fehlerergebnis. Nun habe ich ein älteres PC-Image installiert und versuche meine Anfangs Druckerinstallation des neuen Druckers zu rekonstruieren. Das dauert aber etwas weil meine PC Images ca. 200GB goß sind.
Ich melde mich und teile das Ergebnis mit.
Ach ja, wieso wird bei dem Ersten Tool Post das Bild zweimal nebeneinander gedruckt?
Re: Probleme mit PrintPreview
Weil's so programmiert ist. Ich wollte vergleichen, ob es einen Unterschied macht, wenn die Datei einmal mit Hilfe von TPicture und einmal direkt mit Hilfe von TPortableNetworkImage geladen wird (sollte eigentlich dasselbe sein, aber man weiß ja nie...).hbr hat geschrieben: Sa 11. Mär 2023, 15:50 Ach ja, wieso wird bei dem Ersten Tool Post das Bild zweimal nebeneinander gedruckt?
-
- Beiträge: 321
- 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: Probleme mit PrintPreview
@wp_xyz
habe den Zustand rekonstruiert (Druckertreiber von der CD installiert).
Das Ergebnis Beider Drucks (einmal mit dem Ersten und dem zweiten Code) ist Identisch, schwarzer Hintergrund.
Soll ich ein Image des Treiberzustandes erstellen (wegen weitere Forschungsmöglichkeiten)?
Oder ist das damit erledigt, soll heißen, es ist nun wie es ist?
habe den Zustand rekonstruiert (Druckertreiber von der CD installiert).
Das Ergebnis Beider Drucks (einmal mit dem Ersten und dem zweiten Code) ist Identisch, schwarzer Hintergrund.
Soll ich ein Image des Treiberzustandes erstellen (wegen weitere Forschungsmöglichkeiten)?
Oder ist das damit erledigt, soll heißen, es ist nun wie es ist?
Re: Probleme mit PrintPreview
Aktuell ist das für mich erledigt. Ich habe keine Idee, was man noch machen könnte, der große Druckerspezialist bin ich auch nicht. Aber man kann ja nie wissen. Also wenn du noch 200 GB erübrigen kannst, ...