PrintCapabilities printCapabilites = SelectedPrinter.GetPrintCapabilities(); IEnumerable pagesizeList = printCapabilites.PageMediaSizeCapability;GetPrintCapabilities gibt nicht alle Seitengrößen zurück
Der obige Code listet nicht alle Seitengrößen auf, die der Druckertreiber unterstützt, und das ist mein Problem.
Als Beispiel, wenn Sie den Microsoft XPS Druckertreiber verwenden, werden Sie feststellen, dass pagesizeList (oben) einige Seitengrößen fehlen. "Letter Small" ist eine der fehlenden Seitengrößen (MS Word wird diese Seitengröße jedoch erfolgreich auflisten).
Als schnell Kontrolle abgeladen ich die Druckerfunktionen, wie unten XML:
long gpCLen = _selectedPrinter.GetPrintCapabilitiesAsXml().Length;
FileStream fs = File.OpenWrite(@"c:\test.txt");
MemoryStream ms = _selectedPrinter.GetPrintCapabilitiesAsXml();
byte[] b = new byte[gpCLen];
ms.Read(b, 0, (int)gpCLen);
fs.Write(b, 0, (int)gpCLen);
fs.Close();
Der PageMediaSize Knoten in der XML-Datei in der Tat alle Seitengrößen produziert hat, und die fehlenden.
Angezeigte Seiten scheinen ihren Anfang psk haben:
<psf:Option name="psk:ISOA4" constrained="psk:None">
aber nicht angezeigten Seiten zu haben scheinen:
<psf:Option name="ns0000:LETTERSMALL" constrained="psk:None">
nicht angezeigten Epson Druckertreiber Seiten sind ähnlich:
<psf:Option name="epns200:IndexCard5x8" constrained="psk:None">
Grundsätzlich wird eine Seite mit dem Namen 'psk' PageMediaSizeCapability angezeigt, aber wenn es hergestellt wird benutzerdefiniert, zB epns200, ns0000, wird nicht aufgelistet. Irgendwelche Ideen, warum und wie bitte? Die Knoten/Seiten sind da aber PageMediaSizeCapability gefällt mir nicht!
Vielen Dank im Voraus
EDIT:
Als MS Zustand ‚Ein PrintCapabilities Objekt ist ein einfach zu arbeits mit Darstellung einer bestimmten Art von XML-Dokument eines PrintCapabilities Dokument namens‘ Aber das Dokument hat mehr Informationen als das Objekt Full description
+1: das funktioniert und sollte als Antwort akzeptiert werden. –