2010-11-25 107 views
0

有人知道如何打印PDF文檔的打印頁面按鈕嗎?如何從網頁上打印PDF

目前我使用

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

顯然,這只是打印的頁面雖然。我不得不爲每個頁面創建pdf,並認爲只需打印pdf而不是頁面(跨瀏覽器打印樣式有點吸吮;)。

任何想法?

+1

如何顯示PDF?它們是鏈接還是在Web瀏覽器中打開? – Shoban 2010-11-25 04:01:52

+0

[無聲打印嵌入PDF]的可能重複(http://stackoverflow.com/questions/975652/silent-print-a-embedded-pdf) – JohnFx 2010-11-25 04:08:15

回答

0

在任何瀏覽器(如Windows平臺)上,沒有任何標準方式可以在PDF中打印任何內容。在Mac上,總是有一個選項可以將某些內容打印爲PDF文件,因此常規打印可以。

0

我建議你使用Itextsharp。如果您使用的是asp.net c#,則此代碼適用於您。儘管運行在服務器端。您可以將HTML放在面板中,以便在服務器中可讀。

/// 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(); 
    }