AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung FireMonkey / Delphi 12 - Drucken auf PDF geht, auf den Drucker nicht
Thema durchsuchen
Ansicht
Themen-Optionen

FireMonkey / Delphi 12 - Drucken auf PDF geht, auf den Drucker nicht

Ein Thema von JeanLuc7 · begonnen am 16. Okt 2025 · letzter Beitrag vom 16. Okt 2025
Antwort Antwort
JeanLuc7

Registriert seit: 16. Jun 2024
2 Beiträge
 
#1

FireMonkey / Delphi 12 - Drucken auf PDF geht, auf den Drucker nicht

  Alt 16. Okt 2025, 10:17
Salut,
ich bin nach vielen Jahren wieder in Delphi (12) eingestiegen und habe eine uralte Windows-3.x-Applikation als Firemonkey-App neu geschrieben. Es geht da um mathematische Graphiken im 2D- und 3D-Raum, Sinuskurven, Kugeln, sowas. Sie soll dereinst unter macOS und Windows laufen; akltuell teste ich aber nur unter Windows 11 24H2.

Die Applikation ist fast fertig, aber das Drucken bereitet mir Probleme. Derzeit mache ich es mir noch sehr einfach - ich erzeuge ein Bitmap der Graphik und will es auf dem Drucker ausgeben - also nichts hochauflösendes oder vektorbasiertes. Ich folge dabei dem Beispiel, das in der Online-Hilfe dargestellt ist. Ich kann in ein PDF drucken - dort sieht alles so aus, wie es soll. Wenn ich hingegen direkt den Drucker wähle (ein hp Color laserjet Pro MFP M283fdn - nichts Besonderes), wird in der Windows-11-Druckerqueue der Druckauftrag angezeigt, und auch die kleine Vorschau, die W11 zeigt, ist korrekt. Aber es endet mit einem "Error", der innerhalb der Druckerqueue angezeigt wird. In meiner Applikation bekomme ich davon nichts mit. Das erzeugte PDF lässt sich problemlos drucken.

Letztlich macht mein Code genau dies:

Code:
var
  SrcRect, DestRect: TRectF;
begin
  { Set the default DPI for the printer. The SelectDPI routine defaults
    to the closest available resolution as reported by the driver. }
  Printer.ActivePrinter.SelectDPI(1200, 1200);
  { Start printing. }
  Printer.BeginDoc;
 
  if Printer.Canvas.BeginScene then
  try
    { Set canvas filling style. }
    Printer.Canvas.Fill.Color := claBlack;
    Printer.Canvas.Fill.Kind := TBrushKind.Solid;
 
    { Set the Source and Destination TRects. }
    SrcRect := Image1.LocalRect;
    DestRect := TRectF.Create(0, 0, Printer.PageWidth, Printer.PageHeight);
 
    { Print the picture on all the surfaces of the page and all opaque. }
    Printer.Canvas.DrawBitmap(Image1.Bitmap, SrcRect, DestRect, 1);
  finally
    Printer.Canvas.EndScene;
  end;
 
  { Finish printing job. }
  Printer.EndDoc;
end;
Der Codeschnipsel stammt hierher: https://docwiki.embarcadero.com/RADS...ey_Application

"Image1" ist bei mir das TBitmap, das ich vorher von meiner Grafik angefertigt habe. Das hat die Größe des Fensters (ca. 1000x600). Es ist ok, lässt sich speichern und ansehen.

Nun nutze ich TPrinter zum ersten Mal und kann nicht ausschließen, dass ich Parameter falsch setze.

Ich habe auch noch nicht herausgefunden, wie man den druckbaren Bereich ermittelt - denn mit Printer.PageWidth und Printer.PageHeight bekommt man die physische Seitengröße und nicht den tatsächlich bedruckbaren Bereich.

Weiß jemand, was ich falsch mache?

Beste Grüße
JL7

Geändert von JeanLuc7 (16. Okt 2025 um 10:19 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
EKON 29
Delphi.Narium

Registriert seit: 27. Nov 2017
2.610 Beiträge
 
Delphi 7 Professional
 
#2

AW: FireMonkey / Delphi 12 - Drucken auf PDF geht, auf den Drucker nicht

  Alt 16. Okt 2025, 13:27
Funktioniert der Druck auf den HP-Drucker aus anderen Programmen oder der Ausdruck einer Testseite, wenn nein würde ich den Fehler eher außerhalb Deines Programmes vermuten:

Druckauftragsdetails prüfen:
Rechtsklick auf den Druckauftrag in der Druckerwarteschlange → „Eigenschaften“ oder „Details“, häufig werden dort ausführlichere Fehlermeldungen angezeigt.

Windows-Ereignisanzeige überprüfen:
Windows-Taste + R → „eventvwr.msc“ eingeben → OK.
Unter „Windows-Protokolle“ → „Anwendung“ und „System“ suche nach Fehlern zum Zeitpunkt des Druckversuchs, dort finden sich eventuell HP-Treiber- oder Druckerspooler-Fehler mit mehr Details.

HP Druckerdiagnose-Tools nutzen:
HP stellt für viele Modelle ein Diagnosetool (HP Print and Scan Doctor) zur Fehleranalyse und Reparatur bereit,dieses Tool scannt Treiber, Verbindungsprobleme, Druckspooler und weitere Komponenten.

Druckertreiber neu installieren oder aktualisieren:
Einen aktuellen Treiber direkt von der HP-Webseite fürs Modell herunterladen und installieren. Vorher den vorhandenen Treiber deinstallieren und ggf. im Geräte-Manager „Treiber löschen“ wählen. Dies behebt eventuell Fehler durch beschädigte oder inkompatible Treiber.

Druckspooler-Dienst prüfen und neustarten:
Windows-Taste + R → „services.msc öffnen“ → „Druckwarteschlange“ suchen → Rechtsklick „Neu starten“, eventuell hilft auch ein Löschen der Druckerwarteschlange (alle Aufträge entfernen).

Protokollierung aktivieren:
Über die Druckerverwaltung oder Treibereinstellungen kann eventuell eine Protokollierung aktiviert werden, dadurch werden genauere Logs erzeugt, die mehr Aufschluss über Fehler geben könnten.

Keine Ahnung ob irgendwas davon hilfreich sein könnte.

Geändert von Delphi.Narium (16. Okt 2025 um 16:18 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat
JeanLuc7

Registriert seit: 16. Jun 2024
2 Beiträge
 
#3

AW: FireMonkey / Delphi 12 - Drucken auf PDF geht, auf den Drucker nicht

  Alt 16. Okt 2025, 16:06
Danke für die schnelle Antwort. Für mich sieht das auch eher wie ein Treiber- denn ein FMX-Problem aus. Drucken aus anderen Anwendungen heraus funktioniert allerdings - auch mein eigenes PDF kann ich problemlos (aus Firefox heraus) drucken. Erst dadurch fiel mir auf, dass PageWidth und PageHeight tatsächlich die volle Seitenbreite und -höhe meinen, denn auf dem Ausdruck sind die Ränder meines Bitmaps dann beschnitten. Man sieht unten die Linie der Berandung - die ist eigentlich ein Rectangle, das die Grafik komplett umfasst...

Ich gehe deine Liste mal durch, vielleicht finde ich was. Zusätzlich zur Fehlermeldung "Error" in der Druckerqueue wird allerdings tatsächlich keine weitere information bereitgestellt.
Miniaturansicht angehängter Grafiken
image-2025-10-16-17-02-12.jpg  
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.610 Beiträge
 
Delphi 7 Professional
 
#4

AW: FireMonkey / Delphi 12 - Drucken auf PDF geht, auf den Drucker nicht

  Alt 16. Okt 2025, 16:56
Beim Druck per FireFox sorgt der Druckertreiber für das "Zurechtstutzen" des Ausdruckes, so dass das Format des zu Druckenden kein grundsätzliches Problem für den Drucker(treiber) darzustellen scheint.

Um das zu testen versuche mal etwas zu drucken, das auf jeden Fall kleiner als der Druckbereich einer Seite ist. Bleibt dann der Fehler liegt doch womöglich ein Konflikt in der Kommunikation FMX -> Drucker vor.

Eventuell musst Du beim Druck die DPI-Werte anpassen, die müssen beim direkten Druck aus FMX nicht mit denen in der PDF bzw. dem was der FireFox an den HP übermittelt, übereinstimmen.

CMYK, Alpha-Kanäle oder hohe Farbtiefen können Druckertreiber stören. Konvertiere das Bitmap ggfls. in ein einfacheres Format (z. B. 24-Bit RGB ohne Alpha).

Ehrlichgesagt kann ich aber auch nur raten
  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 06:00 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