之前看过一些通过C#代码生成PDF文件的方式,用得最多的IText可以实现HTML页面生成PDF文件(也有一些人在机器上装了PDF打印机,使用打印来生成PDF),不过我个人觉得IText生成PDF的方法比较复杂,而在相当一段时间内查看资料后,发现有另外一个插件可以更好的控制HTML生成PDF文件。具体方法介绍如下:
首先,下载一个ABCpdf .NET 7.0,下载地址:http://www.oyksoft.com/soft/8576.html,然后安装。此外安装的时候需要注册一下。
其次,在安装目录下找到ABCpdf.dll文件,通过VS2008添加这个类库。
最后,就是在项目中使用了,如下:
一,在当前需要生成PDF文件的页面放一个按钮。按钮的 方法如下:
protected void lbPdf_Click(object sender, EventArgs e)
{
string name = Request.QueryString["name"];
Response.Redirect("Print.ashx?url=" + Request.Url.ToString() + "&name=" + name+"&group="+group);
}
二,新建一个print.ashx页,下面就是这个页面的代码:
<%@ WebHandler Language="C#" Class="print" %>
using System;
using System.Web;
using WebSupergoo.ABCpdf7;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.IO;
using System.Net;
using System.Text;
public class print : IHttpHandler {
public void ProcessRequest (HttpContext context) {
if (!string.IsNullOrEmpty(context.Request.QueryString["url"]) && !string.IsNullOrEmpty(context.Request.QueryString["name"]))
{
string url = context.Request.QueryString["url"];
getPdf(url, context.Request.QueryString["name"],context.Request.QueryString["group"]);
}
}
public bool IsReusable {
get {
return false;
}
}
public void getPdf(string pdf, string name,string group)
{
Random r = new Random();
Doc theDoc = new Doc();
theDoc.TopDown = true;
theDoc.Rect.String = "22 15 820 580";//控制显示的大小205 300 632 895
theDoc.MediaBox.String = "0 0 842 595";//控制页面的大小
string reg = @"/<a id/=(.)+/</a/>";//这段正则主要是去掉页面中自己不需要显示的东西
string reg1 = @"body/{(.)+/}";
string temp=Regex.Replace(Regex.Replace(getHtml(pdf),reg1,""),reg,"");
temp = temp.Replace("{$name$}", name.Split(',')[0]).Replace("{$group$}", group);
int theID = theDoc.AddImageHtml(temp, true, 0, false);
while (true)
{
if (!theDoc.Chainable(theID))
{
break;
}
theDoc.Page = theDoc.AddPage();
theID = theDoc.AddImageToChain(theID);
}
byte[] theData = theDoc.GetData();
FileCreate(name, theData);
if (File.Exists(HttpContext.Current.Server.MapPath(name + ".pdf")))
{
HttpContext.Current.Response.Write(string.Format("<a target='_blank' href='{0}'>下载</a>", name + ".pdf"));
}
}
//创建文件
public static void FileCreate(string name, byte[] datas)
{
FileInfo CreateFile = new FileInfo(HttpContext.Current.Server.MapPath(name + ".pdf")); //创建文件
if (CreateFile.Exists)
{
CreateFile.Delete();
}
FileStream FS = CreateFile.Create();
FS.Write(datas, 0, datas.Length);
FS.Close();
}
private string getHtml(string Url)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
strResult = streamReader.ReadToEnd();
}
catch
{
}
return strResult;
}
}
我在整个项目中生成PDF文件都是使用这个方法,我个人觉得这个方法很简单。我也经常在论坛里面看到不少的人都在询问HTML页面直接生成PDF文件的问题,所以今天就共享下我的做法
分享到:
相关推荐
在项目中实现HTML页面转PDF文件输出,HTML生成PDF文件,HTML生成PDF文件
.net(C#) 通过html模板文件生成pdf文件; ephtmltopdf.dll的功能优势: -支持HTML5和CSS3功能,包括画布和SVG -支持内联SVG在HTML文档 -支持网络字体 -支持Web开放字体格式WOFF -强大的...
利用flying和itext开源包,通过html模板生成PDF文件,使用简单,便于新手上手,附件是本人亲自测试通过的工程例子
java 使用ITextRenderer将html模块生成pdf文件工具类,可直接下载测试。
资源提供html、jsp文件导出生成pdf文件,采用客户端js方式生成pdf文件
通过java代码先生成html,然后再将html转换成所需要的pdf文件。
用PD4Ml将html转换成PDF文件,能够解析html的css样式。
laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,
原生js实现生成PDF文件 生成文件保存文件 两个文件 第一个 html2canvas.min.js 主要是实现将选择的元素转换成图片 第二个 jspdf.min.js 主要是实现生成PDF的主要文件 引入 <script src="/static/js/js/...
通过程序生成PDF文件, wkhtmltox-0.12.3.2_msvc2013-win64.exe html-url
能够将文本代码生成为Pdf文件,有助于程序员快速解决代码生成pdf问题
tcpdf 此压缩文件从其他地方下载,现在上传共享 html生成PDFtcpdf html生成PDFtcpdf html生成PDFtcpdf html生成PDF
里面内容分两部分第一步将html转换成图片,第二部分将图片转换成pdf文件,两部分可以分开独立使用。注(将html文件转换成图片的不是java源码而是一个可以调用的工具)
先制作pdf模板,然后动态将值填充到模板中,生成pdf文件 动态生成pdf文件,支持aviator表达式 <groupId>com.itextpdf</groupId> <artifactId>html2pdf</artifactId> <version>4.0.3</version> <groupId>...
把html文档直接生成pdf,不需要在服务器安装软件,可以在iis使用。
itext 生成pdf 目录,itext 生成pdf 目录,itext 生成pdf 目录
1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成jpg文件流
pdf报表生成,可以生成各类报表 iText作为一个文本输出的java开源代码,提供了PDF、Html、Rtf等多种文件格式的输出功能。为输出各种文本提供了一个比较好的封装。
通过MPDF工具,实现HTML5网页内容生成PDF文件,并实现PDF文件的预览和下载,PDF内容和网页内容一致
java工程中将word格式模板类型在浏览器中以pdf格式下载或预览,使用thymeleaf前端框架,maven工程的demo。