`
nlx0201
  • 浏览: 29004 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

关于HTML生成PDF文件

阅读更多

之前看过一些通过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文件,HTML生成PDF文件

    .net(C#) 通过html模板文件生成pdf文件

    .net(C#) 通过html模板文件生成pdf文件; ephtmltopdf.dll的功能优势: -支持HTML5和CSS3功能,包括画布和SVG -支持内联SVG在HTML文档 -支持网络字体 -支持Web开放字体格式WOFF -强大的...

    html生成pdf文件

    利用flying和itext开源包,通过html模板生成PDF文件,使用简单,便于新手上手,附件是本人亲自测试通过的工程例子

    java 使用ITextRenderer将html模块生成pdf文件工具类

    java 使用ITextRenderer将html模块生成pdf文件工具类,可直接下载测试。

    html文件生成pdf文件

    资源提供html、jsp文件导出生成pdf文件,采用客户端js方式生成pdf文件

    java生成pdf文件Demo

    通过java代码先生成html,然后再将html转换成所需要的pdf文件。

    java Html生成PDF文件 PD4ML

    用PD4Ml将html转换成PDF文件,能够解析html的css样式。

    laravel生成pdf

    laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,

    原生js实现生成PDF文件

    原生js实现生成PDF文件 生成文件保存文件 两个文件 第一个 html2canvas.min.js 主要是实现将选择的元素转换成图片 第二个 jspdf.min.js 主要是实现生成PDF的主要文件 引入 &lt;script src="/static/js/js/...

    通过freemarker模板 生成PDF

    通过程序生成PDF文件, wkhtmltox-0.12.3.2_msvc2013-win64.exe html-url

    .net html 生成 pdf

    能够将文本代码生成为Pdf文件,有助于程序员快速解决代码生成pdf问题

    tcpdf html生成PDF

    tcpdf 此压缩文件从其他地方下载,现在上传共享 html生成PDFtcpdf html生成PDFtcpdf html生成PDFtcpdf html生成PDF

    html转成pdf文件

    里面内容分两部分第一步将html转换成图片,第二部分将图片转换成pdf文件,两部分可以分开独立使用。注(将html文件转换成图片的不是java源码而是一个可以调用的工具)

    java动态生成pdf文件

    先制作pdf模板,然后动态将值填充到模板中,生成pdf文件 动态生成pdf文件,支持aviator表达式 &lt;groupId&gt;com.itextpdf&lt;/groupId&gt; &lt;artifactId&gt;html2pdf&lt;/artifactId&gt; &lt;version&gt;4.0.3&lt;/version&gt; &lt;groupId&gt;...

    Asp.net C#生成pdf文件

    把html文档直接生成pdf,不需要在服务器安装软件,可以在iis使用。

    itext 生成pdf 目录

    itext 生成pdf 目录,itext 生成pdf 目录,itext 生成pdf 目录

    Java中使用 FreeMarker 生成pdf盖章合同文件

    1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成jpg文件流

    pdf类库以及如何生成pdf文件

    pdf报表生成,可以生成各类报表 iText作为一个文本输出的java开源代码,提供了PDF、Html、Rtf等多种文件格式的输出功能。为输出各种文本提供了一个比较好的封装。

    HTML网页生成PDF文件并下载(MPDF)

    通过MPDF工具,实现HTML5网页内容生成PDF文件,并实现PDF文件的预览和下载,PDF内容和网页内容一致

    thymeleaf框架通过java渲染html生成pdf

    java工程中将word格式模板类型在浏览器中以pdf格式下载或预览,使用thymeleaf前端框架,maven工程的demo。

Global site tag (gtag.js) - Google Analytics