Como imprimir desde páginas ASP?
Según he averiguado se puede:
En mi caso lo que necesito es poder definir una alineación especifica, que se ajuste a un papel preimpreso. Por lo que resulta critico poder controlar perfectamente cada uno de los elementos.
Que opción recomendaríais? Conocéis de algun buen tutorial que explique como hacerlo? Hay algun componente en el mercado que lo simplifique?
Reconozco que la opción que más me gusta es la de usar PDFs, pero cualquiera me vale.
Gracias
- Generar una version imprimible con CSS
- Crear un PDF formateado para visualizarlo e imprimir despues
- Embeber un windows control en la aplicacion para acceder a la impresora
Ok, Después de investigar un poco he descubierto que existe una librería gratuita que resuelve el problema bastante bien: iTextSharp
[http://sourceforge.net/projects/itextsharp/][1]
La librería permite generar documentos PDF programáticamente desde C#. También desde otros lenguajes, pero no los he probado.
La única pega que le pongo es que utiliza elementos como Table,Row,Cell que no se correponden con los habituales controles de System.Web.UI, por lo que es necesario incluir los siguientes usings en el code-behind:
using iTextSharp.text; using iTextSharp.text.pdf; using Table=iTextSharp.text.Table; using Image=iTextSharp.text.Image;
Por lo demás está bastante bien. Se pueden incluir imágenes y códigos de barras (soporta muchos tipos CODE39, EAN, UPC,..). Este es el código que he probado:
protected void Button1_Click(object sender, EventArgs e)
{
var doc = new Document();
var writer = PdfWriter.GetInstance(doc, new FileStream(Request.PhysicalApplicationPath + @"\2.pdf", FileMode.Create));
doc.Open();
PdfContentByte cb = writer.DirectContent;
BarcodeEAN bcode = new BarcodeEAN();
bcode.CodeType = BarcodeEAN.EAN13;
bcode.Code = "1234567890123";
Image bcodeimg = bcode.CreateImageWithBarcode(cb, Color.BLACK, null);
var table2 = new Table(2,2);
var cell1 = new Cell("1");
var cell2 = new Cell("2");
var cell3 = new Cell("3");
var cell4 = new Cell();
cell4.Add(new Chunk(bcodeimg, 0, 0));
table2.AddCell(cell1,0,0);
table2.AddCell(cell2,0,1);
table2.AddCell(cell3,1,0);
table2.AddCell(cell4,1,1);
doc.Add(table2);
doc.Add(new Phrase(new Chunk(bcodeimg, 0, 0)));
doc.Close();
Response.Redirect("~/2.pdf");
}
Me genera un pdf con una tabla y dentro de la tabla incluyo un código de barras.
Lamentablemente el proceso de crear un layout bonito es muy muy muy manual como podéis ver en el código anterior. Asi que en pro de maximizar la productividad creo que finalmente compraré Telerik Reporting Tool. Pero si necesitáis algo gratuito y eficaz para cosas puntuales iTextSharp resulta excelente!!
iTextSharp como recomienda Gonzalo es interesante, pero muy laborioso de usar. Permite también interpretar HTML pero es muy rudimentario y seguramente no cumple con tus expectativas.
Para convertir HTML a PDF hay varios productos en el mercado que seguramente ofrecen versiones de prueba para que busques la que te conviene.
Yo lo que puedo recomendar es hacer una CSS para impresión que limpie la página ocultando todo lo que no es necesario de modo que el propio navegador es quien se encarga de imprimir y es lo más transparente para el usuario, ya que simplemente tiene que ir a la opción de imprimir del menú archivo. Más información aqui:
Hojas de estilo CSS para imprimir
Tu Respuesta
YoProgramo.NET es una comunidad para unir y ayudar a los programadores hispanos.
Aquí los desarrolladores pueden encontrar repuesta a sus dudas y colaborar con los demás, compartiendo sus conocimientos y experiencia.