博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C#] 网页Html转PDF档(一行程式码解决)
阅读量:6609 次
发布时间:2019-06-24

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

原文

网页转PDF档做法很多(  )

这边纪录一下老外最多人加分的那篇做法,使用 (采GPL授权)可以省很多程式码

 

首先到官网

找installer.exe下载,这边Demo我是下载wkhtmltopdf-0.9.9-installer.exe

下载完后执行安装它

image

image

选择要安装的路径

image

安装完成

image

(如果要解除安装的话,就到刚刚安装的资料夹下找uninstall.exe执行即可)

 

接着看它的原始使用方式

在安装路径下有个wkhtmltopdf.exe档

到命令提示字元(开始→执行→cmd)

输入

image

这边就抓中国MSDN论坛网页转PDF为例

按下Enter转换完成

image

 

打开刚刚转换完成的PDF档

image

该文字的地方就是文字,该图片的地方就是图片,该超连结的地方就是超连结

 

既然知道底层使用方式,那就可以使用

第一个参数传执行档路径,第二个传参数(URL和PDF档的存放路径)

如下:

protected void Button1_Click( object sender, EventArgs e)
{
                                                                                               //因为是两个argument,所以记得要空格
    System.Diagnostics.Process.Start( @"D:\wkhtmltopdf\wkhtmltopdf.exe" , @"  D:\myFileName.pdf" );
     
}

 

此小工具不会像WinForm的WebBrowser控制项一样会共用IE浏览器的Cookie

而且要抓的网页来源不一定要URL,也可以像这样直接抓本机上的Html档转PDF

protected void Button1_Click( object sender, EventArgs e)
{
    System.Diagnostics.Process.Start( @"D:\wkhtmltopdf\wkhtmltopdf.exe" , @"D:\index.html D:\myFileName.pdf" );
}

只是抓本机的Html转成PDF后,图片会不见这点要注意

 

 

相关讨论:

国外讨论:

 

另外GridView汇出PDF的话,请参考:

请注意使用iTextSharp预设不支援中文字和背景色

中文字的解决方案:

 

2011.11.29 好人做到底

把ASP.net C#的Code补完

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);
 
        
    }
}

 

2013.9.20 追记:

今天才发现此程式已经被包装成.dll,可以在.net程式码叫用:参考  by黑暗执行绪

然后根据之前同事经验,直接使用wkhtmltopdf.exe产PDF,可能在64位元作业系统上产不出来。

在ASP.net MVC中使用的话,请见:

转载地址:http://pqiso.baihongyu.com/

你可能感兴趣的文章
论程序猿的社会地位
查看>>
Android 布局自适应屏幕
查看>>
亿能提供的性能测试诊断分析与优化 培训课程
查看>>
《转》常用Petri网模拟软件工具简介
查看>>
unset MAILCHECK
查看>>
中文版Windows Server 2012 R2更改为英文显示语言
查看>>
教爸爸妈妈用微信
查看>>
SQLite中的PRAGMA语句攻略
查看>>
SecureCRT常用设置
查看>>
【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
查看>>
一个完整推荐系统的设计实现-以百度关键词搜索推荐为例
查看>>
java call sap
查看>>
理解传说中的roll、yaw、pitch
查看>>
SQL Server自动化运维系列——关于邮件通知那点事(.Net开发人员的福利)
查看>>
github上值得关注的前端项目
查看>>
Mac OS 后台服务注册
查看>>
redis 管道
查看>>
对于思考小端和大端字节顺序
查看>>
lua--从白开始(2)
查看>>
boost库学习之开篇
查看>>