简单了解 iTextSharp实现HTML to PDF
查了下 转PDF的各种框架 发现大部分都是收费的。 发现一款免费的iTextSharp 就想玩一下
只是简单做个HTML 转PDF 没有过深的探究。
首先 我在项目中引入iTextSharp 还是老方法 要么 NuGet上下载 或者 直接命令
然后在项目中建了一个HTML 里面就是一些简单的标签 和一些占位符
然后建了个PDF帮助类 里面实现具体转换的方法
public class PDFHelp
{
public byte[] ConvertHtmlTextToPDF(string htmltext)
{
if (string.IsNullOrEmpty(htmltext))
{
return null;
}
//避免htmlText没有任何html tag标签的純文字时,转PDF时会挂掉,所以一律加上<p>标签
//htmlText = "<p>" + htmltext + "</p>"; MemoryStream stream = new MemoryStream();
byte[] data = Encoding.UTF8.GetBytes(htmltext);
MemoryStream msInput = new MemoryStream(data);
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, stream);
//指定文件默认缩放标准100%
PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, , doc.PageSize.Height, 1f);
doc.Open();
//使用XMLWorkerHelper把Html parse到PDF
XMLWorkerHelper .GetInstance().ParseXHtml(writer, doc, msInput, null, Encoding.UTF8, new UnicodeFontFactory());
//將pdfDest 写入到PDF
PdfAction action = PdfAction.GotoLocalPage(, pdfDest, writer);
writer.SetOpenAction(action);
doc.Close();
msInput.Close();
stream.Close();
//回传PDF
return stream.ToArray();
}
}
占位符的简单替换 测试下。只写了三个 举个例子
public string Placeholderfill(string htmlContext)
{
var entity = _shopingRepository.FindAll().FirstOrDefault();
htmlContext = htmlContext.Replace("{{SHOPINGNAME}}", entity.ShopingName);
htmlContext = htmlContext.Replace("{{SHOPINGPric}}", entity.ShopingPric.ToString());
htmlContext = htmlContext.Replace("{{SHOPINGNuber}}", entity.ShopingCount.ToString());
return htmlContext;
}
接下了就是控制器 的调用了
public FileResult ExportPDF()
{
string htmlContext = System.IO.File.ReadAllText(Server.MapPath("~/HTMLTemplate/ShopingBuy.html"));
var context= _iShopingServer.Placeholderfill(htmlContext);
PDFHelp pf = new PDFHelp();
var ms= pf.ConvertHtmlTextToPDF(context);
return File(ms,"application/pdf", "shoping"+ DateTime.Now+ ".pdf");
}
在页面上写个点击PDF下载的按钮 Ajax 调用这个方法 然后就是最终实现的效果。 写的很粗糙。 但实现的过程还是比较容易的。
一般业务都是转PDF然后加入邮箱附件 用来发邮件的。
这里只是简单实现。 有时间还得继续深入研究
简单了解 iTextSharp实现HTML to PDF的更多相关文章
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
ADO.NET 一.ADO.NET概要 ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库 二.ADO.NET的组成 ①System.Data → DataTable, ...
- [ASP.NET]利用itextsharp将GridView汇出PDF档
原文 [ASP.NET]利用itextsharp将GridView汇出PDF档 最近在讨论区看到有人说itextsharp可以把网页变成PDF 小弟就去抓一下itextsharp来玩玩,先教大家最实用 ...
- C#使用iTextSharp+ZXing.Net+FreeSpire.PDF生成和打印pdf文档
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.Net+FreeSpire.PDF三个类库实现了生成pdf.生成条形码和打印pdf功能. 首先在项 ...
- C#&.Net干货分享- iTextSharp导出数据源到PDF
namespace Frame.ITextSharp{ /// <summary> /// iTextSharp导出数据源到PDF /// </summary> ...
- 使用iTextSharp來合併PDF檔
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- itextsharp利用模板生成pdf文件笔记
iTextSharp是一款开源的PDF操作类库,使用它可以快速的创建PDF文件. 中文参考网站:http://hardrock.cnblogs.com/ http://pdfhome.hope.com ...
- ITextSharp用来生成 PDF 的一个组件
iTextSharp 是用来生成 PDF 的一个组件,在 1998 年夏天的时候,Bruno Lowagie ,iText 的创作者,参与了学校的一个项目,当时使用 HTML 来生成报告,但是,使用 ...
- NET二进制图片存储与读取的常见方法,iTextSharp添加图片生成PDF文件
public void iTextSharpCreatPDF() { string pdfpath = System.Web.HttpContext.Current.Server.MapPath(&q ...
- itextsharp html转成pdf 特殊符号异常处理
项目中使用html转成pdf ,遇到包含& 特殊字符就会出错. 比如:<p>&</p>使用该html输出成pdf就会报异常 解决方案:需使用html转义符< ...
随机推荐
- python的协程和异步io【select|poll|epoll】
协程又叫做微线程,协程是一种用户态的轻量级的线程,操作系统根本就不知道协程的存在,完全由用户来控制,协程拥有自己的的寄存器的上下文和栈,协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来后, ...
- Ugly number丑数2,超级丑数
[抄题]: [思维问题]: [一句话思路]:Long.valueOf(2)转换为long型再做 [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入): [画图 ...
- Golang之(if)流程控制
(if)我能坚持做好一只地鼠,慢慢的刨坑,讲洞挖的深一点…… package main import ( "fmt" ) func testIf1() { num := //var ...
- Linux wget命令
一.简介 wget是一个Linux系统中的下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS ...
- js点击添加
1.点击变色 <div id="dd" style="width:100px;height: 100px;background-color: #ccc"& ...
- MySQL 开启远程访问权限
1.登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql;Database changedmysql> select host,u ...
- part1:4-linux快速体验
1.Linux部分目录结构介绍 /:根目录,一般根目录下只存放目录,尽量不要存放文件:/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中. /bin:可执行二进制文件目录, ...
- 2018.09.11 poj1845Sumdiv(质因数分解+二分求数列和)
传送门 显然需要先求出ab" role="presentation" style="position: relative;">abab的所有质因 ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat, hprof使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让 ...
- HDU6027 Easy Summation 2017-05-07 19:02 23人阅读 评论(0) 收藏
Easy Summation Time Limit: 2000/1000 MS ...