2010-11-25 9 views
0

Est-ce que quelqu'un sait comment faire un bouton d'impression de page imprimer un document PDF?Comment imprimer un PDF à partir d'une page Web

Au moment je suis en utilisant

<a href="javascript:window.print()" class="print_it" title="Print page">Print Page</a>

Il est évident que tout imprime la page bien. J'ai dû créer des pdf pour chaque page et j'ai pensé qu'il serait plus facile d'imprimer simplement le pdf au lieu de la page (les styles d'impression croisés de navigateur sont un peu suceurs;).

Des idées?

+1

Comment affichez-vous le PDF? Sont-ils des liens ou ouverts dans le navigateur Web? – Shoban

+0

duplication possible de [Impression silencieuse un PDF incorporé] (http://stackoverflow.com/questions/975652/silent-print-a-embedded-pdf) – JohnFx

+0

Le pdf est juste un lien à télécharger. Fondamentalement, je veux - quand un utilisateur clique sur la page d'impression, il imprime le pdf à la place. @JohnFx Je ne veux pas imprimer en silence. – Nik

Répondre

0

Il n'existe aucun moyen standard d'imprimer quoi que ce soit au format PDF dans un navigateur, par exemple sur la plate-forme Windows. Sur le Mac, il y a toujours une option pour imprimer quelque chose sous forme de fichier PDF, donc l'impression normale fera l'affaire.

0

Je vous suggère d'utiliser Itextsharp. Si vous utilisez asp.net C#, ce code fonctionne pour vous. Fonctionne du côté du serveur cependant. Vous pouvez simplement mettre le code HTML dans un panneau pour le rendre lisible sur le serveur.

/// import these namespaces 
    using System.IO; 
    using iTextSharp.text; 
    using iTextSharp.text.pdf; 
    using iTextSharp.text.html.simpleparser; 
    using System.Web.Services; 
    using System.Text; 

    /// Call this method whenever you need to convert 
    /// the html content inside the panel which runs in the server side. 
    [WebMethod] 
    public void ConvertHtmlStringToPDF() 
    { 
     StringBuilder sb = new StringBuilder(); 
     StringWriter tw = new StringWriter(sb); 
     HtmlTextWriter hw = new HtmlTextWriter(tw); 
     pnlPDF.RenderControl(hw); 
     string htmlDisplayText = sb.ToString(); 

     Document document = new Document(); 
     MemoryStream ms = new MemoryStream(); 
     PdfWriter writer = PdfWriter.GetInstance(document, ms); 
     StringReader se = new StringReader(htmlDisplayText); 
     HTMLWorker obj = new HTMLWorker(document); 
     document.Open(); 
     obj.Parse(se); 
     // step 5: we close the document 
     document.Close(); 
     Response.Clear(); 
     Response.AddHeader("content-disposition", "attachment; filename=report.pdf"); 
     Response.ContentType = "application/pdf"; 
     Response.Buffer = true; 
     Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); 
     Response.OutputStream.Flush(); 
     Response.End(); 
    } 
+0

Merci pour cela mais je dois être côté client qui peut impossible. – Nik