html 生成pdf
最近因为工作需要,小小的研究了一下HTML生成PDF的方法,这方面的内容很多,但要么是不尽如人意的方法,要么就是那种收费的类库!为了广大.neter的福利,把自己的一点小小心得总结出来与大家分享!
先说说我最后采用的方法吧!wkhtmltopdf,一个集成好了的exe文件(C++编写),基本的调用方法是,wkhtmltopdf www.jingzhengli.cn myhomepage.pdf,可以先在命令行测试一下,有其他的需要可以在命令行通过wkhtmltopdf --help查询,如果是超长页的花,可以用命令wkhtmltopdf www.jingzhengli.cn myhomepage.pdf -H --outline (-H是添加默认标题,--outline是添加pdf的左侧概要哦!)而且可以批量生成哦,中间用空格隔开,用命令wkhtmltopdf www.jingzhengli.cn www.jingzhengli.com myhomepage.pdf 快去试试吧!提醒下:如果是转换GB2132编码的网页是会出现乱码的哦! 好了,其他的自己琢磨琢磨吧!上面都是在命令行下测试,下面给出在C#下的调用方法:
using System.Diagnostics;
/// <summary>
/// HTML生成PDF
/// </summary>
/// <param name="url">地址</param>
/// <param name="path">PDF存放路径</param>
public static bool HtmlToPdf(string url, string path)
{
try
{
if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(path))
return false;
Process p = new Process();
string str = System.Web.HttpContext.Current.Server.MapPath("wkhtmltopdf.exe");
if (!System.IO.File.Exists(str))
return false;
p.StartInfo.FileName = str;
p.StartInfo.Arguments = " \"" + url + "\" " + path;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
System.Threading.Thread.Sleep(500);
return true;
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex);
}
return false;
}
调用方法:HtmlToPdf("网页URL", Server.MapPath("PDF存放路径"));
下载地址:http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.8.3.exe
源码地址:http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.8.3.tar.bz2
这里再给出个貌似是国人写的一个类似的,效果不佳,但值得鼓励:PageToPDF,调用方法类似,但这个的exe文件必须和itextsharp.dll放在同一目录下!且不支持长页面的生成PDF,转换新浪网就是一片白了!
下面给出几个国外网站卖的C#编写的类库的试用版,功能强大,可惜需要License key,大家可以下载下来看看。我尝试用reflector反编译到一半就卡住不动,望有志达人为了广大.neter的福利,破解一下!
1.ExpertPDF-HtmlToPdf-v5.4.0 $350(真黑,知识就是money啊)
2.WnvHtmlToPDF (这个一样的黑价,达人快来破解吧)
3.PDFKit.NET 2.0 http://tallcomponents.com 这个网站的
这收费的就太黑了,都开源时代了,还这样!下面呢,给出一些PDF生成相关的资料,有志之士可以自己研究下,说不定你也可以开发个类库,买¥350也好啊!
- iTextSharp,类库,创建PDF、RTF、XML等,并可解析PDF,功能最强;
- Report.NET,类库,创建PDF,不错;
- sharpPDF,类库,创建PDF,不错;
- iTextdotNET,类库,创建PDF,与Java原版最能保持更新同步;
- A pdf Forms Parser,类库,PDF解析器;
- pdf Library for creating pdf with tables and text, in C# ,类库,轻量级的创建,中文支持不好;
- pdfizer, a dumb HTML to pdf converter, in C#,转换HTML到PDF;
- TEXT to pdf Converter in .NET using Reporter.NET,利用Report.NET把纯文本转换成为PDF;
- pdf creation using C# (and Office) from RTF/DOC files,从RTF/Doc文件中生产PDF文件;
- Generate pdf docs from a HTML page using ASP.NET ,使用.NET把HTML生成PDF.
http://www.cnblogs.com/yzenet/archive/2012/07/13/2590555.html
http://www.cnblogs.com/leeolevis/archive/2010/12/07/1898917.html
http://www.cnblogs.com/gzh4455/archive/2012/09/18/2690733.html
html先转为图片,在输入到pdf
http://www.cnblogs.com/TNTZWC/archive/2010/10/07/1845023.html
ASP.NET MVC HTMLWORKER itextsharp
http://www.cnblogs.com/lonelyxmas/p/3619072.html
如何使用ITEXTSHARP将HTML代码字符串写进PDF
http://www.cnblogs.com/lonelyxmas/p/3493375.html
html 生成pdf的更多相关文章
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- iTextSharp生成pdf的一个简单例子
效果图: 参考:http://www.cnblogs.com/CareySon/archive/2011/11/09/2243496.html http://www.cnblogs.com/julyl ...
- 生成 PDF 全攻略【2】在已有PDF上添加内容
项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...
- PHP 生成PDF
一个项目中需要用到网页生成PDF,就是将整个网页生成一个PDF文件, 以前也用过HTML2PDF,只能生成一些简单的HTML代码,复杂的HTML + css 生成的效果惨不忍睹, 百度了一下,发现有个 ...
- 用js生成PDF的方案
在java里,我们常用Itext来生成pdf,在pdf文件里组合图片,文字,画表格,画线等操作,还会遇到中文支持的问题. 那好,现在想直接在web前端就生成pdf怎么办,目前有以下几个解决方案 1:J ...
- 使用TCPDF插件生成pdf以及pdf的中文处理
目录(?)[+] 多种多样的pdf开发库 WKHTMLTOPDF 2FPDF 3TCPDF 中文问题 做了这么多年项目,以前只是在别人的项目中了解过PHP生成pdf文件,知道并不难,但是涉及到了p ...
- linux下编译bib、tex生成pdf文件
实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...
- 【Java】使用iText生成PDF文件
iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- 生成PDF的新选择-Phantomjs
最近在node.js项目开发中,遇见生成PDF的需求,当然生成PDF不是一个新意的需求:我可以选择利用开源的pdfkit或者其他node pdf模块,或者通过edge.js调用.net/python下 ...
随机推荐
- 分布式服务协调技术zookeeper笔记
本文主要学习ZooKeeper的体系结构.节点类型.节点监听.常用命令等基础知识,最后还学习了ZooKeeper的高可用集群的搭建与测试.希望能给想快速掌握ZooKeeper的同学有所帮助. ZooK ...
- Java 正则表达式匹配模式[贪婪型、勉强型、占有型]
Greediness(贪婪型):最大匹配 X?.X*.X+.X{n,} 是最大匹配.例如你要用 “<.+>” 去匹配 “a<tr>aava </tr>abb”,也许 ...
- java-并发-线程
浏览以下内容前,请点击并阅读 声明 软件的并发是指同时做多件事情,java平台一开始就支持并发编程,java编程语言以及类库含有对并发最基本的支持,从5.0版本开始,java平台开始包含一些高并发的A ...
- 使用maven搭建ssh框架
首先搭建sturts2框架,配置pom文件: <properties> <!-- 文件拷贝时的编码 --> <project.build.sourceEncoding&g ...
- 运行jar应用程序引用其他jar包的四种方法
转载地址:http://www.iteye.com/topic/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个ja ...
- mysql主从复制配置
使用mysql主从复制的好处有: 1.采用主从服务器这种架构,稳定性得以提升.如果主服务器发生故障,我们可以使用从服务器来提供服务. 2.在主从服务器上分开处理用户的请求,可以提升数据处理效率. 3. ...
- 【PostgreSQL】PostgreSQL的安装
到了新公司,新公司的数据库是使用PostgreSQL,第一次学习,第一次安装. 开始安装:
- Github+Jekyll —— 创建个人免费博客(二)Ruby+Jekyll部署
摘要: 本文中我将介绍一下如何在github上搭建个人Blog(博客),也顺便让我们掌握一下github Pages功能,另外还涉及到Jekyll技术. ======================= ...
- js中几种常用的输出方式
1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...
- Sql判断不为Null也不为空的写法
看到不少人写: isnull(field,'')<>'' 其中这样写最经济实惠:field>''