![]() |
Papierformate mit Beschreibung.
Liste der Anhänge anzeigen (Anzahl: 1)
Ich möchte in einer Combobox die Papierformate mit Beschreibung auflisten. Zum Beispiel 'A4 (210 x 297 mm)' anstelle von 'A4' oder 'C6 Umschlag(114x162 mm)' anstelle von 'C6' (siehe Bild). Mit dem Beispiel von
![]()
Delphi-Quellcode:
funktioniert es für beide, wenn vorher der Samsung in einem TPrinterSetupDialog ausgewählt wurde, sonst für beide nicht.
Printer.GetPrinter(@Device, @Driver, @Port, hDMode);
if hDMode <> INVALID_HANDLE_VALUE then begin pDMode := GlobalLock(hDMode); if pDMode <> nil then begin lblPaperSizeValue.Caption := pDMode^.dmFormName; lblOrientationValue.Caption := cOrientation[pDMode^.dmOrientation]; lblQualityValue.Caption := Format('%d dpi', [pDMode^.dmPrintQuality]); lblColorValue.Caption := cColorSupport[pDMode^.dmFields and DM_Color > 0]; end; GlobalUnlock(hDMode); end; Weiß jemand, wie man die Beschreibung immer erhält? |
AW: Papierformate mit Beschreibung.
Meines Wissens nach ist das eine Sache des Druckertreibers.
|
AW: Papierformate mit Beschreibung.
:? Dann müsste ich also ein Array mit den Formaten deklarieren und anstelle von dmFormName dmPaperSize verwenden ...
|
AW: Papierformate mit Beschreibung.
Zitat:
|
AW: Papierformate mit Beschreibung.
Einzig was man beim erstellen einer Default-Liste machen kann, ist z.B. XPS Document Printer nehmen (der alle Formate kennt), auslesen und als Array speichern. Dann spart man sich Handarbeit.
Die Formatnamen und Größen kommen wohl leider immer vom Druckertreiber (sind z.T. auch je nach gewähltem Drucker unterschiedlich):
Delphi-Quellcode:
Wer es sich die Liste selber von einem anderen Drucker erstellen will oder etwas im Format anpassen:
unit UPaperSizes;
interface type TPaperSize = record Name : String; Width, Height : Integer; // 1/100 inch end; const PaperSizes : array[0..105] of TPaperSize = ( (Name : 'Letter'; Width : 850; Height : 1100), (Name : 'Letter klein'; Width : 850; Height : 1100), (Name : 'Tabloid'; Width : 1100; Height : 1700), (Name : 'Ledger'; Width : 1700; Height : 1100), (Name : 'Legal'; Width : 850; Height : 1400), (Name : 'Statement'; Width : 550; Height : 850), (Name : 'Executive'; Width : 725; Height : 1050), (Name : 'A3'; Width : 1169; Height : 1654), (Name : 'A4'; Width : 827; Height : 1169), (Name : 'A4 Klein'; Width : 827; Height : 1169), (Name : 'A5'; Width : 583; Height : 827), (Name : 'B4 (JIS)'; Width : 1012; Height : 1433), (Name : 'B5 (JIS)'; Width : 717; Height : 1012), (Name : 'Folie'; Width : 850; Height : 1300), (Name : 'Quarto'; Width : 846; Height : 1083), (Name : '10x14'; Width : 1000; Height : 1400), (Name : '11x17'; Width : 1100; Height : 1700), (Name : 'Notiz'; Width : 850; Height : 1100), (Name : 'Umschlag 9'; Width : 387; Height : 887), (Name : 'Umschlag 10'; Width : 412; Height : 950), (Name : 'Umschlag 11'; Width : 450; Height : 1037), (Name : 'Umschlag 12'; Width : 475; Height : 1100), (Name : 'Umschlag 14'; Width : 500; Height : 1150), (Name : 'C Blattgröße'; Width : 1700; Height : 2200), (Name : 'D Blattgröße'; Width : 2200; Height : 3400), (Name : 'E Blattgröße'; Width : 3400; Height : 4400), (Name : 'Umschlag DL'; Width : 433; Height : 866), (Name : 'Umschlag C5'; Width : 638; Height : 902), (Name : 'Umschlag C3'; Width : 1276; Height : 1803), (Name : 'Umschlag C4'; Width : 902; Height : 1276), (Name : 'Umschlag C6'; Width : 449; Height : 638), (Name : 'Umschlag C65'; Width : 449; Height : 902), (Name : 'Umschlag B4'; Width : 984; Height : 1390), (Name : 'Umschlag B5'; Width : 693; Height : 984), (Name : 'Umschlag B6'; Width : 693; Height : 492), (Name : 'Umschlag'; Width : 433; Height : 906), (Name : 'Umschlag Monarch'; Width : 387; Height : 750), (Name : '6 3/4 Umschlag'; Width : 362; Height : 650), (Name : 'US Standardendlospapier'; Width : 1487; Height : 1100), (Name : 'German Std Endlospapier'; Width : 850; Height : 1200), (Name : 'German Legal Endlospapier'; Width : 850; Height : 1300), (Name : 'B4 (ISO)'; Width : 984; Height : 1390), (Name : 'Japanische Postkarte'; Width : 394; Height : 583), (Name : '9x11'; Width : 900; Height : 1100), (Name : '10x11'; Width : 1000; Height : 1100), (Name : '15x11'; Width : 1500; Height : 1100), (Name : 'Umschlag Invite'; Width : 866; Height : 866), (Name : 'Letter Extra'; Width : 950; Height : 1200), (Name : 'Legal Extra'; Width : 950; Height : 1500), (Name : 'A4 Extra'; Width : 927; Height : 1269), (Name : 'Letter Quer'; Width : 850; Height : 1100), (Name : 'A4 Quer'; Width : 827; Height : 1169), (Name : 'Letter Extra Quer'; Width : 950; Height : 1200), (Name : 'Super A'; Width : 894; Height : 1402), (Name : 'Super B'; Width : 1201; Height : 1917), (Name : 'Letter Plus'; Width : 850; Height : 1269), (Name : 'A4 Plus'; Width : 827; Height : 1299), (Name : 'A5 Quer'; Width : 583; Height : 827), (Name : 'B5 (JIS) Quer'; Width : 717; Height : 1012), (Name : 'A3 Extra'; Width : 1268; Height : 1752), (Name : 'A5 Extra'; Width : 685; Height : 925), (Name : 'B5 (ISO) Extra'; Width : 791; Height : 1087), (Name : 'A2'; Width : 1654; Height : 2339), (Name : 'A3 Quer'; Width : 1169; Height : 1654), (Name : 'A3 Extra Quer'; Width : 1268; Height : 1752), (Name : 'Japanische Doppelpostkarte'; Width : 787; Height : 583), (Name : 'A6'; Width : 413; Height : 583), (Name : 'Japanischer Umschlag Kaku 2'; Width : 945; Height : 1307), (Name : 'Japanischer Umschlag Kaku 3'; Width : 850; Height : 1091), (Name : 'Japanischer Umschlag Chou 3'; Width : 472; Height : 925), (Name : 'Japanischer Umschlag Chou 4'; Width : 354; Height : 807), (Name : 'Letter gedreht'; Width : 1100; Height : 850), (Name : 'A3 gedreht'; Width : 1654; Height : 1169), (Name : 'A4 gedreht'; Width : 1169; Height : 827), (Name : 'A5 gedreht'; Width : 827; Height : 583), (Name : 'B4 (JIS) gedreht'; Width : 1433; Height : 1012), (Name : 'B5 (JIS) gedreht'; Width : 1012; Height : 717), (Name : 'Japanische Postkarte gedreht'; Width : 583; Height : 394), (Name : 'Jap. Doppelpostkarte gedreht'; Width : 583; Height : 787), (Name : 'A6 gedreht'; Width : 583; Height : 413), (Name : 'Jap. Umschlag Kaku 2 gedreht'; Width : 1307; Height : 945), (Name : 'Jap. Umschlag Kaku 3 gedreht'; Width : 1091; Height : 850), (Name : 'Jap. Umschlag Chou 3 gedreht'; Width : 925; Height : 472), (Name : 'Jap. Umschlag Chou 4 gedreht'; Width : 807; Height : 354), (Name : 'B6 (JIS)'; Width : 504; Height : 717), (Name : 'B6 (JIS) gedreht'; Width : 717; Height : 504), (Name : '12x11'; Width : 1200; Height : 1100), (Name : 'Japanischer Umschlag You 4'; Width : 413; Height : 925), (Name : 'Jap. Umschlag You 4 gedreht'; Width : 925; Height : 413), (Name : 'PRC Umschlag 1'; Width : 402; Height : 650), (Name : 'PRC Umschlag 3'; Width : 492; Height : 693), (Name : 'PRC Umschlag 4'; Width : 433; Height : 819), (Name : 'PRC Umschlag 5'; Width : 433; Height : 866), (Name : 'PRC Umschlag 6'; Width : 472; Height : 906), (Name : 'PRC Umschlag 7'; Width : 630; Height : 906), (Name : 'PRC Umschlag 8'; Width : 472; Height : 1217), (Name : 'PRC Umschlag 9'; Width : 902; Height : 1276), (Name : 'PRC Umschlag 10'; Width : 1276; Height : 1803), (Name : 'PRC Umschlag 1 gedreht'; Width : 650; Height : 402), (Name : 'PRC Umschlag 3 gedreht'; Width : 693; Height : 492), (Name : 'PRC Umschlag 4 gedreht'; Width : 819; Height : 433), (Name : 'PRC Umschlag 5 gedreht'; Width : 866; Height : 433), (Name : 'PRC Umschlag 6 gedreht'; Width : 906; Height : 472), (Name : 'PRC Umschlag 7 gedreht'; Width : 906; Height : 630), (Name : 'PRC Umschlag 8 gedreht'; Width : 1217; Height : 472), (Name : 'PRC Umschlag 9 gedreht'; Width : 1276; Height : 902) ); implementation end.
Code:
void Button1Click(object sender, EventArgs e)
{ PrintDocument pDoc = new PrintDocument(); PrintDialog pDlg = new PrintDialog(); pDlg.Document = pDoc; if (pDlg.ShowDialog() == DialogResult.OK) { textBox1.AppendText( string.Format("PaperSizes : array[0..{0}] of TPaperSize =\r\n(\r\n", pDlg.PrinterSettings.PaperSizes.Count -1)); foreach (PaperSize ps in pDoc.PrinterSettings.PaperSizes) { textBox1.AppendText( string.Format(" (Name : '{0}'; Width : {1}; Height : {2}),\r\n", ps.PaperName, ps.Width, ps.Height)); } textBox1.AppendText(");"); } } |
AW: Papierformate mit Beschreibung.
Wieder ist ein Tag mit Suchen vorübergegangen. Und nichts weiter gefunden. Das Array scheint im Moment das Richtige zu sein.
Wäre schön zu wissen, was beim Aufruf von TPrinterSetupDialog passiert, dass anschließend unterschiedliche Strings zur Verfügung stehen. |
AW: Papierformate mit Beschreibung.
Wohl GetDeviceCaps und/oder DeviceCapabilities Abfragen, nachgeschaut hab' ich aber nicht.
€: Kurz geschaut, von Delphi dort nur GetPrinter... Rest ist dann quasi in der Hand des ComControl. |
AW: Papierformate mit Beschreibung.
Danke, Satty67, für die Liste in #5!
|
AW: Papierformate mit Beschreibung.
GetDeviceCaps ist zwar sehr nützlich, hilft beim String leider nicht weiter. Ab .NET 2.0 gibt es eine
![]() Anscheinend gibt es zu den B-Formaten unterschiedliche Angaben. In Satty67's Tabelle ist JIS, in VB werden DIN/ISO-Werte angegeben. |
AW: Papierformate mit Beschreibung.
Ja, wie man oben sieht ist PaperSizes ein Member von PrinterSettings. Ohne Printer (also keine Zuweisung eines Druckers) bleibt PaperSizes eine leere Liste. Es gibt mit PaperKind noch eine Enumeration (Set), das aber nur die einfachen Namen bietet (also A3/A4 etc.), keine weiteren Daten.
Es macht imho auch Sinn. Nur der Drucker(Treiber) kann melden, welche Papierformate unterstützt werden. Wenn ich hier nur die Werte des Brother Etiketten-Druckers anschaue, da ist alles "Custom", keine Formate wie DIN-A4 etc. PDFCreator bietet witzigerweise auch HD-Formate an (weil PDF nicht nur auf Papier, sondern auch für Bildschirmausgaben optimiert werden kann). Die Liste oben war auch nicht wirklich mühsam, sondern nur ein ermitteln der PaperSizes eines generischen Druckers. Ist nur eine Basis, mit der man sich etwas leicher eine eigene Custom Liste aufbauen kann. Mit umrechnen von 1/100 inch auf mm ( Round(value * 0.254) ) lässt sich dann auch eine Liste wie im Startpost gewünscht generieren. Falsch oder anders interpretierte Werte kann man natürlich vorher anpassen. Sind halt Werte, die der XPS Dokument Printer liefert (denke ab NET 2.0 wird der mit installiert) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 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