una tickets ticket tamaño puedo personalizar personalizado papel nuevo impresora cómo cual crear configurar agregar c# .net printing

c# - tickets - personalizar tamaño de papel



Cómo obtener un tamaño de papel predefinido por PaperKind (5)

Necesito obtener el tamaño de papel por System.Drawing.Printing.PaperKind. ¿Hay algún valor predefinido? No quiero codificar ni calcular tamaños de papel, solo quiero obtenerlo programáticamente. Gracias.


Puede probar la clase System.Drawing.Printing.PaperSize. Hay una propiedad RawKind que se puede establecer en System.Drawing.Printing.PaperKind.

Algo como:

PaperSize size = new PaperSize(); size.RawKind = (int) PaperKind.A3;


Se puede tener un subconjunto de valores predefinidos iterando sobre una colección PrinterSettings.PaperSizes .

Nuestra aplicación hace que el usuario seleccione una impresora, proporcionándonos un objeto PrinterSettings . Dentro de PrinterSettings hay una lista de PaperSize soportados por la impresora, no todo (tenga en cuenta que el controlador de documentos XPS (win7) admite todos los tamaños).

En nuestro caso, este subconjunto de tamaños compatibles es todo lo que necesitamos. Un PaperKind especificado por el usuario se pasa a nuestro código de impresión y pasa por nuestro objeto PrinterSettings hasta que encuentra la selección del usuario o se da por vencido y usa un valor predeterminado.

En el siguiente ejemplo, puede ver que los objetos de PaperSize están llenos correctamente.

PrinterSettings settings = new PrinterSettings(); foreach (PaperSize size in settings.PaperSizes) Debug.WriteLine(size);

Es solo un subconjunto, pero tal vez eso también es suficiente para ti. las API de impresión en .NET no son muy claras y msdn no es de mucha ayuda ... ¡Espero que te ponga en el camino correcto!


Una forma de LINQ para lograr tu objetivo es algo como esto:

PrinterSettings printerSettings = new PrinterSettings(); IQueryable<PaperSize> paperSizes = printerSettings.PaperSizes.Cast<PaperSize>().AsQueryable(); PaperSize a4rotated = paperSizes.Where(paperSize => paperSize.Kind == PaperKind.A4Rotated).FirstOrDefault();

¡Buena suerte!


public static PaperSize GetPaperSize(string Name) { PaperSize size1 = null; Name=Name.ToUpper(); PrinterSettings settings = new PrinterSettings(); foreach (PaperSize size in settings.PaperSizes) if (size.Kind.ToString().ToUpper() == Name) { size1 = size; break; } return size1; }


PaperSize pkSize; PrintDocument printDoc = new PrintDocument(); for (int i = 0; i < printDoc.PrinterSettings.PaperSizes.Count; i++) { pkSize = printDoc.PrinterSettings.PaperSizes[i]; cmbPaperSize.Items.Add(pkSize); }