AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Druckausgabe über Printer / Problem mit einigen Schriftarten
Thema durchsuchen
Ansicht
Themen-Optionen

Druckausgabe über Printer / Problem mit einigen Schriftarten

Ein Thema von stefanniehaus · begonnen am 29. Jan 2013 · letzter Beitrag vom 30. Jan 2013
Antwort Antwort
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#1

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 07:40
Drucklayouts sind normal immer in mm .. weil das Endgerät ja nicht bekannt sein muß, und dessen Auflösung (dpi) auch nicht - wohl aber das Ausgabe-Format bekannt ist (z.B. DIN A4) - und das hat als Maß eben mm.

Nur besteht keinerlei Grund, nur weil das Endformat mm hat, auch die logische Einheit auf mm zu setzen. Die logische Einheit ist normal immer Pixel (ausgenommen bei Plottern etc.). Aber sowohl Bildschirme wie auch Drucker sind pixelorientiert - die mm des Layouts werden dann entspr. der dpi Werte in x-Richtung wie in y-Richtung (können verschieden sein) umgerechnet.

Mit ENDgerät ist immer das Gerät gemeint, auf dem endgültig die Ausgabe erfolgt: Ein Drucker, der Bildschirm, eine eMail, ein FAX ... der ERZEUGER kann nicht ENDgerät sein.

Ein Drucker "unterstützt" keine Schriften - er hat diese installiert, sie werden vorm Druck untergeladen oder er hat diese Schrift nicht. Aber Canvas weiß, welche Schriften der Drucker (aktuell) installiert hat und unterscheidet dann, ob der Drucker entspr. Commands bekommt, diese Schrift zu benutzen oder ob Canvas die Schrift selber "malt" und das Ergebnis per Image zum Drucker schickt.

Eine benutzte Schrift sollte schon auf dem PC, auf dem Canvas läuft, installiert sein - alternativ wird eben eine Ersatzschrift verwendet - bei Windows mit Vorliebe Courier <schauder> obwohl die API anderes behauptet.

Es gibt übrigens keinen Grund, für Rechnungen Exoten-Schriften zu benutzen, bei denen man dann nicht sicher sein kann, ob sie zur Laufzeit vorhanden sind. Vorallem kann man keinem Benutzer zumuten, die passende Schrift ohne exakte Angabe selber nachzuinstallieren - da die Schriftnamen im Font-Verzeichnis nicht mit dem internen Schriftnamen übereinstimmen müssen.

Geändert von MeierZwoo (30. Jan 2013 um 07:54 Uhr)
  Mit Zitat antworten Zitat
stefanniehaus

Registriert seit: 3. Mär 2005
11 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 07:50
Wie gesagt ist sicher gestellt, dass die benötigte Schrift vorhanden ist.
Die Wahl einer anderen Schriftart ist im aktuellen Fall auch keine Option.

Das Problem kann man soweit also nicht lösen? Umrechnung der mm-Angaben in px hilft ja offensichtlich auch nicht immer.

Geändert von stefanniehaus (30. Jan 2013 um 07:56 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 08:14
Das Druckergebnis hängt auch vom BS und vom Drucker ab (Stichwort: GDI, OPENGL).

Der Fehler liegt eindeutig bei der Schrift Gill Sans MT - mit Tahoma sieht es gut aus.
Angehängte Grafiken
Dateityp: jpg Drucktest-3.jpg (123,6 KB, 11x aufgerufen)

Geändert von hathor (30. Jan 2013 um 08:56 Uhr)
  Mit Zitat antworten Zitat
stefanniehaus

Registriert seit: 3. Mär 2005
11 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 08:32
Ich nehme mal an, dass Printer : TPrinter; eine GLOBALE Varable ist, denn sie ist in der Procedure nicht deklariert.
Besser ist es, sie LOKAL zu deklarieren, um auszuschliessen, dass andere evtl. langsame, parallele Threads die Variable ändern.
Das Druckergebnis hängt auch vom BS und vom Drucker ab (Stichwort: GDI, OPENGL)
Ein TPrinter-Objekt wird automatisch erzeugt, wenn es nil ist.
Ich habe aber auch schon lokal ein TPrinter-Objekt erzeugt, was keine Veränderung mit sich gebracht hat.
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#5

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 08:19
Wie gesagt ist sicher gestellt, dass die benötigte Schrift vorhanden ist.
Das wage ich zu bezweifeln, oder administrierst Du das Programm mit täglicher Wartung dein Leben lang?

Das Problem kann man soweit also nicht lösen? Umrechnung der mm-Angaben in px hilft ja offensichtlich auch nicht immer.
Das Problem ist doch gelöst, wenn Du dieses unselige MM_LOMETRIC wegläßt, was niemand braucht. Die logische Einheit mm von MM_LOMETRIC hat nichts, aber auch garnichts mit der Umrechnung mm/Pixel bzw. dem Maßsystem des Endformates zu tun! Zumal das Endgerät zwar mm im Ausgabeformat hat, aber im Gegensatz zu MM_LOMETRIC, das gleiche Einheiten in x und y setzt, das Endgerät in x und y verschiedene dpi haben kann. Aber diese Werte kennt canvas, weil sie per Treiber ermittelt werden (DeviceCaps des Printers).

Es wird immer von mm auf Pixel umgerechnet, weil jeder Drucker mm-Formate als Ausgabemedium hat und Canvas immer Pixelorientiert ist - alle Canvas-Methoden erwarten Pixel als Werte.

Geändert von MeierZwoo (30. Jan 2013 um 08:42 Uhr)
  Mit Zitat antworten Zitat
stefanniehaus

Registriert seit: 3. Mär 2005
11 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 08:45
Das wage ich zu bezweifeln, oder administrierst Du das Programm mit täglicher Wartung dein Leben lang?
Es wird vorher geprüft ob die Schriftart auf dem System vorhanden ist. Ist sie das nicht, wird nicht gedruckt.

Das Problem ist doch gelöst, wenn Du dieses unselige MM_LOMETRIC wegläßt, was niemand braucht. Die logische Einheit mm von MM_LOMETRIC hat nichts, aber auch garnichts mit der Umrechnung mm/Pixel bzw. dem Maßsystem des Endformates zu tun! Zumal das Endgerät zwar mm im Ausgabeformat hat, aber im Gegensatz zu MM_LOMETRIC, das gleiche Einheiten in x und y setzt, das Endgerät in x und y verschiedene dpi haben kann. Aber diese Werte kennt canvas, weil sie per Treiber ermittelt werden (DeviceCaps des Printers).

Es wird immer von mm auf Pixel umgerechnet, weil jeder Drucker mm-Formate als Ausgabemedium hat und Canvas immer Pixelorientiert ist - alle Canvas-Proceduren erwarten Pixel als Werte.
Das Problem ist nicht gelöst, da - wie oben beschrieben - auch ohne Verwendung von SetMapMode und mit Verwendung von Pixel-Angaben es zur Stauchung kommen kann, je nach Drucker (im o.g. Beispiel: Keine Stauchung beim PDF-Drucker, Stauchung bei einem HP-Drucker (jeweils bei ohne MM_LOMETRIC))
Bei Arial beispielsweise kommt es in keinem Fall zur Stauchung.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 16:01
Das Problem ist nicht gelöst, da - wie oben beschrieben - auch ohne Verwendung von SetMapMode und mit Verwendung von Pixel-Angaben es zur Stauchung kommen kann, je nach Drucker (im o.g. Beispiel: Keine Stauchung beim PDF-Drucker, Stauchung bei einem HP-Drucker (jeweils bei ohne MM_LOMETRIC))
Bei Arial beispielsweise kommt es in keinem Fall zur Stauchung.
Die patzige Antwort lautet "Dann besorg Dir einen ordentlichen Font"
Leider ist das was als fontx auf dem Markt ist nicht immer das gleiche und schon garnicht das selbe. Letztendlich ist das Ergebnis auf Papier nur durch das Zusammenspiel von Druckertreiber,Font und Druckerhardware zu erreichen. Wobei es theoretisch die Möglichkeit gibt, daß der PC ein vollständiges Druckbild malt, oder auf der anderen Seite, daß der Drucker ein paar Steuerbefehle und Ascii-Text erhält.

Wenn Du keine ordentliche Doku für die eingesetzte Hardware/Software hast, dann hilft nur Trial n Error.

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

Registriert seit: 3. Dez 2012
106 Beiträge
 
#8

AW: Druckausgabe über Printer / Problem mit einigen Schriftarten

  Alt 30. Jan 2013, 16:09
p80286, danke
  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 18:38 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