Html 转化为 PDF
//evohtmltopdf.dll EvoHtmlToPdfWebDemo.dll evointernal.dll (需添加引用这三个类)
public void SavePdf()
{
PdfConverter pdfConverter = new PdfConverter();
// 设置的许可证密钥——要求
pdfConverter.LicenseKey = "ORIJGQoKGQkZCxcJGQoIFwgLFwAAAAA=";
// 通知转换器的HTML元素,我们想要的位置在PDF
//在这个示例,我们想要的位置,IMG,H1和H2元素和元素ID
//等于“id1’或‘id2”
//pdfConverter.HtmlElementsMappingOptions.HtmlElementSelectors = new string[] { "IMG", "H1", "H2", "#id1", "#id2" };
// 调用转换器,并得到一个文档对象从URL
string url = Request.Url.ToString();
// url = url.Replace("Default.aspx", "preview.aspx");
Document pdfDocument = pdfConverter.GetPdfDocumentObjectFromUrl(url); //URL表示地址,你要导那张页面就用那张页面的地址
// 迭代HTML元素位置和标出每个元素提供了一个绿色的矩形
foreach (HtmlElementMapping elementMapping in pdfConverter.HtmlElementsMappingOptions.HtmlElementsMappingResult)
{
//因为一个HTML元素可以跨越许多PDF页映射
// HTML元素在PDF文档包含在一个矩形列表,
//一个矩形对于每个PDF页面,这个元素被呈现
foreach (HtmlElementPdfRectangle elementLocationInPdf in elementMapping.PdfRectangles)
{
// 把PDF页面
PdfPage pdfPage = pdfDocument.Pages[elementLocationInPdf.PageIndex];
RectangleF pdfRectangleInPage = elementLocationInPdf.Rectangle;
// 创建一个RectangleElement突出显示的HTML元素
RectangleElement highlightRectangle = new RectangleElement(pdfRectangleInPage.X, pdfRectangleInPage.Y,
pdfRectangleInPage.Width, pdfRectangleInPage.Height);
//highlightRectangle.ForeColor = Color.Green;
pdfPage.AddElement(highlightRectangle);
}
}
byte[] pdfBytes = null;
try
{
pdfBytes = pdfDocument.Save();
}
finally
{
// 创建一个RectangleElement突出显示的HTML元素
pdfDocument.Close();
}
// 把PDF文档作为来响应浏览器下载
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Type", "application/pdf");
response.AddHeader("Content-Disposition", String.Format("attachment; filename=HtmlElementsLocation.pdf; size={0}", pdfBytes.Length.ToString()));
response.BinaryWrite(pdfBytes);
//注意:重要的是要结束响应,否则asp . net
// web页面将显示其内容为PDF文档流
response.End();
}