簡體   English   中英

如何從網頁打印PDF

[英]How to print a PDF from a web page

有人知道如何使打印頁面按鈕打印pdf文檔嗎?

目前我正在使用

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

顯然,這只是打印頁面。 我不得不為每個頁面創建pdf,並認為僅打印pdf而不是頁面會更容易(跨瀏覽器的打印樣式有點爛;)。

有任何想法嗎?

沒有標准方法可以在任何瀏覽器(例如Windows平台)上以PDF打印任何內容。 在Mac上,始終可以選擇將某些內容打印為PDF文件,因此可以進行常規打印。

我建議您使用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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM