简单了解 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的paramiko模块简单应用
用法1,SSHClient 分别可以使用密码和秘钥登陆,然后执行命令,并且获取执行结果 import paramiko #创建一个SSH对象 ssh = paramiko.SSHClient() #允 ...
- 查找ipa包,删除接的ipa包
- ubuntu自动拉黑破解ssh服务的IP
2013年的脚本,今天拿出来备份一下. vim /root/secure_ssh.sh #!/bin/bash cat /var/log/auth.log|awk '/Failed/{print $( ...
- Golang之(if)流程控制
(if)我能坚持做好一只地鼠,慢慢的刨坑,讲洞挖的深一点…… package main import ( "fmt" ) func testIf1() { num := //var ...
- Nginx 分析access日志文件
Nginx Access Log日志统计分析常用命令 IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时 ...
- Object类中通用方法之:toString()方法
1.Java所有的对象都是Object类的实例,都可以直接调用该类中定义的方法,这些方法称为通用方法 2.toString()方法即为Object类中定义的通用方法之一 3.平时我们如果在控制台直接打 ...
- linux中如何检测设备驱动模块是否存在
linux系统中的设备驱动是否安装好一般检查几个方面:1.系统日志.嵌入式系统多是直接dmesg一下,看有没有设备关键字相关的出错信息(通用系统可检查/var/log/messages文件).2.已加 ...
- BZOJ2424 [HAOI2010]订货 - 费用流
题解 (非常裸的费用流 题意有一点表明不清: 该月卖出的商品可以不用算进仓库里面. 然后套上费用流模板 代码 #include<cstring> #include<queue> ...
- js点击添加
1.点击变色 <div id="dd" style="width:100px;height: 100px;background-color: #ccc"& ...
- OSGi 系列(十八)之 基于注解的 Blueprint
OSGi 系列(十八)之 基于注解的 Blueprint 1. 注解实现 blueprint 第一步:bundle 添加 Bundle-Blueprint-Annotation <plugin& ...