itextdef将动态html转为pdf,[C#]使用第三方开源库iText7.pdfHtml,将Html转换成Pdf,以及如何以Html作为打印模板...

使用第三方开源库iText7.pdfHtml,将html和css转成pdf,官方:https://itextpdf.com/en/demos/convert-html-css-to-pdf-free-online;

官方示例:

usingSystem.IO;usingiText.Html2pdf;namespaceWebsiteDemoPdfHtml

{classProgram

{private static string ORIG = "/uploads/input.html";private static string OUTPUT_FOLDER = "/myfiles/";static void Main(string[] args)

{string pdfDest = OUTPUT_FOLDER + "output.pdf";

HtmlConverter.ConvertToPdf(new FileStream(ORIG, FileMode.Open), newFileStream(pdfDest, FileMode.Create));

}

}

}

官方可以下载到详细的使用说明文档:

d2420e0ae4da2f867d51aa620c3452f6.png

设置默认打印纸张大小:

var pdfDest = "hello.pdf";var pdfWriter = newPdfWriter (pdfDest);var pdf = newPdfDocument (pdfWriter);var pageSize = PageSize.A4; //设置默认打印纸张大小,css @page规则可覆盖这个

pdf.SetDefaultPageSize (pageSize);

支持css @page规则控制打印设置选项,例如css @page设置A3打印纸,横向打印,这些规规将覆盖上面的设置默认打印纸张大小:

@page{size:A3 landscape;

}

如果需要引入其他资源,比如插入图片,需要设置根目录,将资源文件放入根目录或子文件夹下:

var properties = newConverterProperties ();

properties.SetBaseUri ("wwwroot"); //设置根目录

默认不支持中文字体,需要修改默认字体提供者,使其支持系统字体:

var provider = new DefaultFontProvider (true, true, true); //第三个参数为True,以支持系统字体,否则不支持中文

properties.SetFontProvider (provider);

支持css @media规则,使其在不同设备上显示不同效果,比如在预览时使用Screen设备显示彩色效果,在打印时使用Print设备增强黑白效果:

var mediaDeviceDescription = new MediaDeviceDescription (MediaType.PRINT); //指当前设备类型,如果是预览使用SCREEN

mediaDeviceDescription.SetWidth (pageSize.GetWidth ());

properties.SetMediaDeviceDescription (mediaDeviceDescription);

最后是以html作为打印模板,加载数据,再转成pdf;

官方推荐的是使用XSL转换(xmlns:xsl="http://www.w3.org/1999/XSL/Transform"),将xml转换成html,但该示例目前仅支持java,c#找不到相关源码,并且该方式不支持模板预览,不方便用户修改模板:

6df06cba53f126019f8f9c881811b228.png

所以还是推荐使用正则替换规则导入数据,下面是示例html:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@page{size:A4 landscape;

}ul{margin-left:0;padding-left:0;

}ul li{list-style:none;

}ul li:after{content:"";display:block;clear:both;

}ul li p{float:left;margin-left:2em;

}ul li p:first-child{margin-left:0;

}ul li p img{width:36px;height:36px;

}

使用第三方库iText7.pdfHtml,将Html转换成Pdf,以及如何以Html作为打印模板

{{ListOfNames}}
  • 姓名:{{Name}}

    年龄:{{Age}}

    性别:{{Sex}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值