有人知道如何让打印页面按钮打印pdf文档吗?
目前我正在使用
<a href="javascript:window.print()" class="print_it" title="Print page">Print Page</a>
显然,只是打印页面。我不得不为每个页面创建pdf,并认为打印pdf而不是页面会更容易(跨浏览器打印样式有点吸吮;)。
有什么想法吗?
答案 0 :(得分:0)
没有标准方法可以在任何浏览器中以PDF格式打印任何内容,例如在Windows平台上。在Mac上,始终可以选择将某些内容打印为PDF文件,因此可以进行常规打印。
答案 1 :(得分: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();
}