c# 免费组件html转pdf的实现过程

目录
  • 免费组件html转pdf
    • 背景
    • 1.在guget下载组件
    • 2.使用:直接上代码
  • C#如何将html转pdf

免费组件html转pdf

背景

我们在公司可能遇到一些文件转pdf的场景,这里主要讲述html转pdf。

通常在c#里面有很多html转pdf的组件,我们采用第三方的组件,比如 iTextSharp, aspose等,但是有些组件用起来复杂,需要很多配置,而且在转换出来之后可能出现排版不正确的场景

下面主要介绍Select.HtmlToPdf的使用,很简单且方面,可以一次性生成几百页不是问题,关键是免费哦。

1.在guget下载组件

如上有Select.HtmlToPdf和 Select.HtmlToPdf.netcore,两种的使用差不多,只是Select.HtmlToPdf.netcore支持css效果更好,不过Select.HtmlToPdf.netcore只支持win,不支持linux,这个有点坑,其他还好,接下来我们使用Select.HtmlToPdf.netcore进行演示

2.使用:直接上代码

 static void Main(string[] args)
        {
            try
            {
                string fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "文件夹", "文件夹下的html文件");
                string line = "";
                var testStr = new StringBuilder();
                using (StreamReader sr = new StreamReader(fullPath))
                {
                    while ((line = sr.ReadLine()) != null)
                    {
                        testStr.Append(line);
                    }
                }
                SelectPdf.HtmlToPdf converter = new SelectPdf.HtmlToPdf();
                PdfDocument doc = new PdfDocument();
                for (int i = 0; i < 10; i++)
                {
                    testStr.Replace("#ImageUrl#", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "文件夹", "文件夹下的图片"));//由于html中图片,使用相对地址解析不出来,所以使用替换方式去解决
                    var docStr = converter.ConvertHtmlString(testStr.ToString());
                    doc.Append(docStr);
                }
                doc.Save("xxxx");保存到xxx路径下
                doc.Close();

            }
            catch (Exception e)
            {
                //dosomething
            }
            Console.ReadLine();
        }
    }

如上一次性打印多张pdf,思路:

1.在本地找到要转换的html文件,当然你也可以配置在程序里面,通过流的形式读出来,也可用file的方法去读,拿到html字符串

2.创建一个html转pdf的对象,创建一个新的pdf文件对象

3.通过html转pdf对象的converthtmlstring去获取html字符串,另外还提供converurl的方法去把一个网页转换换成pdf,是不是很方便切功能强大。

4.save用来保存pdf的路径,关闭pdf对象,操作文成,即可看到

这样就是实现了html 转pdf,另外,这个组件还提供了很多api可用

附上链接:https://selectpdf.com/docs/Index.htm

C#如何将html转pdf

public string HtmlToPdf(string url)
        {
            bool success = true;
           // string dwbh = url.Split('?')[1].Split('=')[1];
            //CommonBllHelper.CreateUserDir(dwbh);
            //url = Request.Url.Host + "/html/" + url;
            string guid = DateTime.Now.ToString("yyyyMMddhhmmss");
            string pdfName =   "1.pdf";
            //string path = Server.MapPath("~/kehu/" + dwbh + "/pdf/") + pdfName;
            string path = "D:\\" + pdfName;
            try
            {
                if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(path))
                    success = false;
                string str = Server.MapPath("~\\bin\\wkhtmltopdf.exe");
                Process p = System.Diagnostics.Process.Start(str, url+" "+path);
                p.WaitForExit();
                if (!System.IO.File.Exists(str))
                    success = false;
                if (System.IO.File.Exists(path))
                {
                    FileStream fs = new FileStream(path, FileMode.Open);
                    byte[] bytes = new byte[(int)fs.Length];
                    fs.Read(bytes, 0, bytes.Length);
                    fs.Close();
                    if (Request.UserAgent != null)
                    {
                        string userAgent = Request.UserAgent.ToUpper();
                        if (userAgent.IndexOf("FIREFOX", StringComparison.Ordinal) <= 0)
                        {
                            Response.AddHeader("Content-Disposition",
                                          "attachment;  filename=" + HttpUtility.UrlEncode(pdfName, Encoding.UTF8));
                        }
                        else
                        {
                            Response.AddHeader("Content-Disposition", "attachment;  filename=" + pdfName);
                        }
                    }
                    Response.ContentEncoding = Encoding.UTF8;
                    Response.ContentType = "application/octet-stream";
                    //通知浏览器下载文件而不是打开
                    Response.BinaryWrite(bytes);
                    Response.Flush();
                    Response.End();
                    fs.Close();
                    System.IO.File.Delete(path);
                }
                else
                {
                    Response.Write("文件未找到,可能已经被删除");
                    Response.Flush();
                    Response.End();
                }
            }
            catch (Exception ex)
            {
                success = false;
            }
            return "";
        }
protected void Page_Load(object sender, EventArgs e)
{
HtmlToPdf("http://www.deriva.cn");
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C#生成PDF的方法

    之前项目中是通过wkhtmltopdf渲染web页面生成的pdf文件,这个方案一直不是很稳定,并且在不同的场景样式也常不一样,老需要调整. 今天研究了一下C#直接生成PDF的方案,还是比较简单的,整体方案如下: 通过WPF库生成XPS文件 通过PdfSharp将XPS文件转成PDF文件 首先看一下生成xps文件的代码.,代码如下: var fixedDoc = new FixedDocument(); var pageContent = new PageContent(); var fixedP

  • C#实现HTML转WORD及WORD转PDF的方法

    本文实例讲述了C#实现HTML转WORD及WORD转PDF的方法.分享给大家供大家参考.具体如下: 功能:实现HTML转WORD,WORD转PDF 具体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; usi

  • C#导出pdf的实现方法(浏览器不预览直接下载)

    前言 这篇文章主要给大家介绍了关于C#导出pdf的实现方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下: 一.接口部分的代码 [HttpGet] public HttpResponseMessage ExportPdf(string id) { string pdfName = ""; //id 查询条件,根据实际情况修改即可 //pdfName 例如download.pdf byte[] pdfData= _policyGapManagerService

  • c# 免费组件html转pdf的实现过程

    目录 免费组件html转pdf 背景 1.在guget下载组件 2.使用:直接上代码 C#如何将html转pdf 免费组件html转pdf 背景 我们在公司可能遇到一些文件转pdf的场景,这里主要讲述html转pdf. 通常在c#里面有很多html转pdf的组件,我们采用第三方的组件,比如 iTextSharp, aspose等,但是有些组件用起来复杂,需要很多配置,而且在转换出来之后可能出现排版不正确的场景 下面主要介绍Select.HtmlToPdf的使用,很简单且方面,可以一次性生成几百页

  • vue+element树组件 实现树懒加载的过程详解

    一.页面样式 二.数据库 三.前端页面代码 <template> <el-tree :props="props" :load="loadNode" lazy show-checkbox> </el-tree> </template> <script> export default { data () { return { props: { label: 'name', children: 'zones',

  • 从零搭建react+ts组件库(封装antd)的详细过程

    目录 整体需求 开发与打包工具选型 使用webpack作为打包工具 使用babel来处理typescript代码 使用less-loader.css-loader等处理样式代码 项目搭建思路 整体结构 方案思路 项目搭建实施 初始化 Babel引入 了解Babel webpack的基于babel-loader的处理流程 引入React相关库(externals方式) 编写组件代码 编译打包组件库 效果演示 处理样式(less编译与css导出) 依赖引入 配置webpack 编写样式代码 编译组件

  • python sklearn 画出决策树并保存为PDF的实现过程

    目录 利用sklearn画出决策树并保存为PDF 下载Graphviz python sklearn 决策树运用 数据形式(tree.csv) 利用sklearn画出决策树并保存为PDF 下载Graphviz 进入官网下载并安装: https://graphviz.gitlab.io/_pages/Download/Download_windows.html 并将下列路径配置为环境变量: D:\software\Graphviz\bin 在cmd中测试: dot -version python代

  • 利用C#如何给PDF文档添加文本与图片页眉

    前言 下面这篇文章向大家分享如何使用了免费组件Free Spire.PDF给PDF文档添加文本和图片页眉.这个组件提供了一些方法,可以帮助我们快速方便地实现此目的. 添加页眉步骤: 首先,创建一个Visual C#控制台项目,添加组件引用并使用以下命名空间. using System; using System.Drawing; using Spire.Pdf; using Spire.Pdf.Graphics; 在下列代码中,我们先定义一个SetDocumentTemplate()方法来创建一

  • vue2.0全局组件之pdf详解

    目的:像elementUI那样注册全局组件 预览pdf文件 技术支持:使用火狐的pdf.js http://mozilla.github.io/pdf.js/ 准备:新建一个CPdf.vue文件,把火狐demo里面的build里面的pdf.js下载来,并且依赖了elementUI开发的其实就是用了<el-button> 编写: template <template> <div class="cpdf"> <div class="cen

  • 使用C#给PDF文档添加注释的实现代码

    整理文档时,我们可能会需要在一些或一段文字上添加注释加以说明,那如何以编程的方式实现呢?本文将实例讲述C#中如何使用免费组件给PDF文档添加文本注释,包括自由文本注释.自由文本注释能允许我们自定义它的风格和外观,非常具有实用价值. 首先,下载这个免费版组件Free Spire.PDF.组件下载安装后,Visual Studio创建C#控制台项目,添加bin文件夹的.DLL作为引用以及以下命名空间: using System; using System.Drawing; using System.

  • C#合并多种格式文件为PDF的方法

    文档合并是一种高效文档处理方式.如果能够有一个方法能将多种不同类型的文档合并成一种文档格式,那么在文档存储管理上将为我们提供极大的便利.因此,本篇文章介绍了一种如何使用免费组件Free Spire.Office for .NET来实现将多种各式的文档合并为PDF的方法.本方法中可合并的文档格式可以是doc.docx.xls.xlsx.pdf等.下面将进行详细阐述. 使用方法:安装Free Spire.Office for .NET后,添加引用spire.doc.dll, spire.xls.dl

  • PHP在网页中动态生成PDF文件详细教程

    本文详细介绍使用 PHP 动态构建 PDF 文件的整个过程.使用免费 PDF 库 (FPDF) 或 PDFLib-Lite 等开源工具进行实验,并使用 PHP 代码控制 PDF 内容格式. 有时您需要准确控制要打印的页面的呈现方式.在这种情况下,HTML 就不再是最佳选择了.PDF 文件使您能够完全控制页面的呈现方式,以及文本.图形和图像在页面上的呈现方式.遗憾的是,用来构建 PDF 文件的 API 不属于 PHP 工具包的标准部件.现在您需要提供一点帮助. 当您在网络上搜索,寻找对 PHP 的

  • C#如何给PDF文件添加水印

    水印种类及功能介绍 PDF水印分为两种:文本水印和图片水印.文本水印一般被用在商业领域,提醒读者该文档是受版权保护的,其他人不能抄袭或者免费使用.除了这个特征,水印还可以用来标记这个文档 的一些基本状态信息,例如是草稿状态还是最终版本?图片水印是美化PDF文件的一个很好的选择,它可以用多彩的.独特的图片来作为PDF文件的背景.那么,怎样用编程的方式给PDF文件 添加水印呢?有很多种实现方法,其中一种最快最容易的办法也许是用第三方软件,例如Spire.PDF.本文会阐述怎样用免费的第三方软件Spi

随机推荐