2008-11-06 8 views
14

J'ai généré un pdf en utilisant iTextSharp et je peux très bien le prévisualiser dans ASP.Net mais je dois l'envoyer directement à l'imprimante sans prévisualisation. Je veux que l'utilisateur clique sur le bouton d'impression et que le document s'imprime automatiquement.Imprimer PDF à partir d'ASP.Net sans prévisualisation

Je sais qu'une page peut être envoyée directement à l'imprimante en utilisant le javascript window.print() mais je ne sais pas comment le faire pour un PDF.

Éditer: il n'est pas intégré, je le génère comme ceci;

   ... 
       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"); 
       ... 

Et je suis là.

Répondre

1

Le pdf est-il intégré dans la page avec embedd-tag ou simplement ouvert dans un cadre ou comment l'affichez-vous? Si elle est intégrée, assurez-vous simplement que l'objet est sélectionné, puis faites un print().

Obtenez la référence au document incorporé.

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

Alsó, essayez ce petit bijou:

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

Je nai testé, mais ce que je lis à ce sujet, il peut être utilisé de cette façon de laisser le mypdf.pdf être imprimé au lieu de contenu de la page quelle que soit la méthode que vous utilisez pour imprimer la page.

Rechercher media = "print" pour en savoir plus.

+0

Je trouve cette approche imprime une page vierge sur IE8. –

+0

Bonne idée, mais je ne pouvais pas le faire fonctionner. Chrome et FF l'ignorent, où IE9 donne une page blanche. –

0

Vous pouvez intégrer javascript dans le pdf, de sorte que l'utilisateur obtienne une boîte de dialogue d'impression dès que leur navigateur charge le pdf.

Je ne suis pas sûr de iTextSharp, mais le javascript que j'utilise est

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

Pour iTextSharp, consultez http://itextsharp.sourceforge.net/examples/Chap1106.cs

5

Enfin je l'ai fait, mais je devais utiliser un IFRAME, je défini un IFrame dans l'aspx et n'a pas défini la propriété src, dans le fichier cs que j'ai fait générer le fichier pdf et définir la propriété src de l'iFrame comme le nom de fichier pdf généré, comme ceci;

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"; 

Et qui a fait l'affaire, cependant, je pense que je devrais mettre en œuvre votre solution Stefan, le problème est que je suis nouveau et asp.net javascript et si je n'ai pas de code source complet Je ne pouvais pas coder votre suggestion, mais au moins est la première étape, j'ai été très surpris de savoir combien de code en HTML et javascript j'ai besoin d'apprendre. Thnx.

1

Il est un peu plus délicat si vous utilisez PdfSharp mais tout à fait faisable

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";