AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Papierformate mit Beschreibung.

Ein Thema von Garfield · begonnen am 10. Nov 2010 · letzter Beitrag vom 16. Nov 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 00:10
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 http://www.delphipraxis.net/91547-pa...-auslesen.html funktioniert es für meinen Samsung, für FreePDF jedoch nicht. Mit
Delphi-Quellcode:
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;
funktioniert es für beide, wenn vorher der Samsung in einem TPrinterSetupDialog ausgewählt wurde, sonst für beide nicht.

Weiß jemand, wie man die Beschreibung immer erhält?
Miniaturansicht angehängter Grafiken
beispiel.png  
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 00:26
Meines Wissens nach ist das eine Sache des Druckertreibers.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 00:52
Dann müsste ich also ein Array mit den Formaten deklarieren und anstelle von dmFormName dmPaperSize verwenden ...
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 01:07
Dann müsste ich also ein Array mit den Formaten deklarieren und anstelle von dmFormName dmPaperSize verwenden ...
Ich befürchte ja. Aber vielleicht kennt noch jemand hier einen Kniff.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 09:51
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:
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.
Wer es sich die Liste selber von einem anderen Drucker erstellen will oder etwas im Format anpassen:
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(");");
         }
      }

Geändert von Satty67 (10. Nov 2010 um 12:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 17:51
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 18:09
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.

Geändert von Satty67 (10. Nov 2010 um 18:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von vergessen
vergessen

Registriert seit: 29. Jun 2010
85 Beiträge
 
Delphi 5 Professional
 
#8

AW: Papierformate mit Beschreibung.

  Alt 10. Nov 2010, 22:35
Danke, Satty67, für die Liste in #5!
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Papierformate mit Beschreibung.

  Alt 11. Nov 2010, 08:34
GetDeviceCaps ist zwar sehr nützlich, hilft beim String leider nicht weiter. Ab .NET 2.0 gibt es eine Papersize-Class. Dort kann man den Namen auslesen und auch selbst setzen. Vielleicht ist es so wie Assarbad schrieb, dass der Druckertreiber bei der Übermittlung der unterstützten Formate auch die Strings setzt. Dann müsste man sehen, ob man die Strings in TDeviceMode selbst setzen kann. Dazu braucht man dann auch die obige Tabelle.

Anscheinend gibt es zu den B-Formaten unterschiedliche Angaben. In Satty67's Tabelle ist JIS, in VB werden DIN/ISO-Werte angegeben.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof

Geändert von Garfield (11. Nov 2010 um 08:53 Uhr)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Papierformate mit Beschreibung.

  Alt 11. Nov 2010, 09:13
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)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz