2008-11-06 78 views
14

He generado un pdf usando iTextSharp y puedo obtener una vista previa muy bien en ASP.Net, pero tengo que 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.Imprimir PDF desde ASP.Net sin previa vista

Sé que se puede enviar una página directamente a la impresora mediante 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.

Respuesta

1

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

Si está incrustado, simplemente 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(); 
0

Además, trate de esta joya:

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

No Lo He probado, pero lo que he leído sobre él, que se puede utilizar de esta manera para que el mypdf.pdf ser impresos en lugar de 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.

+0

Encuentro este enfoque imprime una página en blanco en IE8. –

+0

Buena idea, pero no pude hacer que funcione. Chrome y FF simplemente lo ignoran, donde IE9 da una página en blanco. –

0

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 acerca de iTextSharp, pero el javascript que yo uso es

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

Para iTextSharp, echa un vistazo a http://itextsharp.sourceforge.net/examples/Chap1106.cs

5

finalmente lo hizo, pero tenía que usar un IFRAME, me definí un IFrame en el aspx y no configuré la propiedad src, en el archivo cs que hice generé el archivo pdf y configuré la propiedad src del iFrame como el nombre del archivo pdf generado, 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 hizo el truco, sin embargo, creo que debería implementar la solución de 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.

1

Es un poco más complicado si usted está utilizando PDFsharp pero 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"; 
Cuestiones relacionadas