La respuesta es: serializando el objeto printerSettings. Pero ojo, la serialización del objeto printerSettings sólo funciona con Framework 2.0 o superior, aunque no os podría asegurar si en el extraño 3.0 funcionará ya que creo que no es el mismo que del 3.5. Nosotros vamos a hablar de la clase System.Drawing.Printing.PrinterSettings que nos permiten serializar.
Para serializar las características de una impresora tenemos que hacer lo siguiente:
XmlSerializer serializer = new
XmlSerializer(typeof(System.Drawing.Printing.PrinterSettings));
System.IO.TextWriter writer = new System.IO.StringWriter();
//fineprint PDF no deja serializar los datos de impresión, capturamos el error
//para no serializarlo y guardar sólo el nombre o la propiedad que queramos:
try
{
serializer.Serialize(writer, Impresora);
}
catch (Exception ex)
{
writer.Close();
writer = new System.IO.StringWriter();
writer.WriteLine("
writer.WriteLine("
writer.WriteLine("
}
//En writer tenemos serializada la impresora en XML.
Console.WriteLine(writer.ToString());
writer.Close();
Pues ya está serializada y podemos hacer con ella lo que queramos, como por ejemplo guardarlo en una bd o en un fichero de configuración, etc.
Para deserializarla tendremos que hacer este proceso:
XmlSerializer serializer =
new XmlSerializer(typeof(System.Drawing.Printing.PrinterSettings));
System.IO.TextReader sImpresora =
new System.IO.StringReader(MiCadenaXMLGuardada);
System.Drawing.Printing.PrinterSettings printer=
((System.Drawing.Printing.PrinterSettings)serializer.Deserialize(sImpresoa);
Y voilá, con esto os evitaréis tener que crear vuestra propia clase de impresora.
No hay comentarios:
Publicar un comentario