net mandar imprimir generar exportar desde con asp abrirlo c# asp.net pdf printing

generar - mandar a imprimir un pdf desde c#



Imprimir PDF desde ASP.Net sin vista previa (5)

¿Está el pdf incrustado en la página con etiqueta incrustada o simplemente abierto en un marco o cómo lo estás mostrando?

Si está incrustado, solo asegúrese de que el objeto esté seleccionado y luego imprima ().

Obtenga la referencia al documento incrustado.

var x = document.getElementById("mypdfembeddobject"); x.click(); x.setActive(); x.focus(); x.print();

He generado un pdf usando iTextSharp y puedo obtener una vista previa muy bien en ASP.Net pero necesito enviarlo directamente a la impresora sin una vista previa. Quiero que el usuario haga clic en el botón Imprimir y automáticamente se imprima el documento.

Sé que se puede enviar una página directamente a la impresora usando javascript window.print () pero no sé cómo hacerla para un PDF.

Editar: no está incrustado, lo genero así;

... FileStream stream = new FileStream(Request.PhysicalApplicationPath + "~1.pdf", FileMode.Create); Document pdf = new Document(PageSize.LETTER); PdfWriter writer = PdfWriter.GetInstance(pdf, stream); pdf.Open(); pdf.Add(new Paragraph(member.ToString())); pdf.Close(); Response.Redirect("~1.pdf"); ...

Y aquí estoy yo.


Es un poco más complicado si usas pdfsharp pero es bastante factible

PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic); // Draw the text gfx.DrawString("Hello, World!", font, XBrushes.Black, new XRect(0, 0, page.Width, page.Height), XStringFormats.Center); // real stuff starts here // current version of pdfsharp doesn''t support actions // http://www.pdfsharp.net/wiki/WorkOnPdfObjects-sample.ashx // so we got to get close to the metal see chapter 12.6.4 of // http://partners.adobe.com/public/developer/pdf/index_reference.html PdfDictionary dict = new PdfDictionary(document); // dict.Elements["/S"] = new PdfName("/JavaScript"); // dict.Elements["/JS"] = new PdfString("this.print(true);/r"); document.Internals.AddObject(dict); document.Internals.Catalog.Elements["/OpenAction"] = PdfInternals.GetReference(dict); document.Save(Server.MapPath("2.pdf")); frame1.Attributes["src"] = "2.pdf";


Finalmente lo hice, pero tuve que usar un IFRAME, definí un IFrame en el aspx y no configuré la propiedad src, en el archivo cs que hice generé el archivo pdf y establecí la propiedad src del iFrame como el generado nombre de archivo pdf, como este;

Document pdf = new Document(PageSize.LETTER); PdfWriter writer = PdfWriter.GetInstance(pdf, new FileStream(Request.PhysicalApplicationPath + "~1.pdf", FileMode.Create)); pdf.Open(); //This action leads directly to printer dialogue PdfAction jAction = PdfAction.JavaScript("this.print(true);/r", writer); writer.AddJavaScript(jAction); pdf.Add(new Paragraph("My first PDF on line")); pdf.Close(); //Open the pdf in the frame frame1.Attributes["src"] = "~1.pdf";

Y eso dio el truco, sin embargo, creo que debería implementar su solución Stefan, el problema es que soy nuevo en asp.net y javascript, y si no tengo un código fuente completo, no pude codificar su sugerencia, pero al menos es el primer paso, me sorprendió la cantidad de código en html y javascript que necesito aprender. Thnx.


Puede incrustar javascript en el pdf, de modo que el usuario reciba un cuadro de diálogo de impresión tan pronto como su navegador cargue el pdf.

No estoy seguro de iTextSharp, pero el javascript que uso es

var pp = this.getPrintParams(); pp.interactive = pp.constants.interactionLevel.automatic; this.print(pp);

Para iTextSharp, visita http://itextsharp.sourceforge.net/examples/Chap1106.cs


También, prueba esta joya:

<link ref="mypdf" media="print" href="mypdf.pdf">

No lo he probado, pero lo que he leído al respecto, se puede usar de esta manera para permitir que se imprima mypdf.pdf en lugar del contenido de la página, sea cual sea el método que esté utilizando para imprimir la página.

Busque medios = "imprimir" para ver más.