博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML生成PDF(c#)
阅读量:4561 次
发布时间:2019-06-08

本文共 1694 字,大约阅读时间需要 5 分钟。

老外最多人加分的那篇做法,使用wkhtmtopdf(GPL协议)可以省很多程序代码, 首先到官网

找installer.exe下载

wkhtmltopdf,一个集成好了的exe文件(C++编写),基本的调用方法是, wkhtmltopdf.exe

count/register e:\yupskyreg.pdf

,可以先在命令行测试一下,有其他的需要可以在命令行通过wkhtmltopdf --help查询,如果是超长页的花,可以用命令

wkhtmltopdf.exe

count/register e:\yupskyreg.pdf  -H --outline (-H是添加默认标题,--outline是添加pdf的左侧概要哦!)而且可以批量生成哦,中间用空格隔开

 

using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*要引用以下命名空间*/
using System.Diagnostics;
using System.IO;

public partial class _Default : System.Web.UI.Page

{

//Button的Click事件(把Url的网页内容转成PDF)

    protected void btn_execute_Click(object sender, EventArgs e)
    {

        //因为Web 是多线程环境,避免甲产生的文件被乙下载去,所以档名都用唯一

        string fileNameWithOutExtention = Guid.NewGuid().ToString();

        //执行wkhtmltopdf.exe

        Process p = System.Diagnostics.Process.Start(@"D:\wkhtmltopdf\wkhtmltopdf.exe", @" D:\" + fileNameWithOutExtention + ".pdf");

        //若不加这一行,程序就会马上执行下一句而抓不到文件发生意外:System.IO.FileNotFoundException: 找不到文件 ''。

        p.WaitForExit();

        //把文件读进文件流
        FileStream fs = new FileStream(@"D:\" + fileNameWithOutExtention + ".pdf", FileMode.Open);
        byte[] file = new byte[fs.Length];
        fs.Read(file, 0, file.Length);
        fs.Close();

        //Response给客户端下载

        Response.Clear();
        Response.AddHeader("content-disposition", "attachment; filename=" + fileNameWithOutExtention + ".pdf");//强制下载
        Response.ContentType = "application/octet-stream";
        Response.BinaryWrite(file);

    }
}

在GitHub上发现2个相关的项目,其中Pechkin这个项目不需要单独安装wkhtmltopdf ,就是.NET的库了。

C# wrapper around excellent wkhtmltopdf console utility 

.NET Wrapper for WkHtmlToPdf static DLL. Allows you to utilize full power of the libra:

转载于:https://www.cnblogs.com/shanyou/archive/2012/09/07/2676026.html

你可能感兴趣的文章
ssm框架的一些基本写法(纯自己总结的,如有雷同纯属巧合)
查看>>
43个优秀的Swift开源项目
查看>>
5.13Js练习题
查看>>
mysql系列之8.mysql高可用 (mha4mysql)
查看>>
DIY_DE2之DM9000A网卡调试系列例程(二)——DM9000A测试、自收发、实现UDP
查看>>
配置远程连接mysql数据库 Connect to remote mysql database
查看>>
HDU 5374 Tetris (2015年多校比赛第7场)
查看>>
《Android源代码设计模式解析与实战》读书笔记(二十二)
查看>>
Javascript
查看>>
百度之星初赛A hdu6112
查看>>
Nginx 503错误总结
查看>>
如何允许WebGL从本地载入资源
查看>>
gcc编译器局部变量在栈中的内存分配
查看>>
mapreduce中控制mapper的数量
查看>>
java海量数据处理(千万级别)(2)-海量数据FTP下载
查看>>
50个Android开发技巧(24 处理ListView数据为空的情况)
查看>>
2018-3-17-湖南多校第二场
查看>>
cocos2d CC_PROPERTY
查看>>
[原]Failed connect to mirrors.cloud.aliyuncs.com:80; Connection refused
查看>>
AOP:使用命令模式实现AOP
查看>>