生活随笔
收集整理的這篇文章主要介紹了
C#使用iTextSharp操作PDF文件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
概述
html文件怎么轉(zhuǎn)成PDF文件?有的招聘網(wǎng)上的簡歷導(dǎo)成DOC文件,不能直接使用,這樣造成很大的困擾,那么它還有一個(gè)格式,那就是html格式。將文件導(dǎo)出成html格式,然后再轉(zhuǎn)成PDF文件,這樣便可以直接使用了。平常在項(xiàng)目中也是很多這樣的需求,需要把內(nèi)容轉(zhuǎn)成pdf文件。
下面我們來看下使用? iTextSharp實(shí)現(xiàn)HTML轉(zhuǎn)PDF的方法。
代碼實(shí)現(xiàn)
1、nuget 安裝iTextSharp。
using iTextSharp.text;
using iTextSharp.text.pdf;
2、將Html文檔轉(zhuǎn)換為pdf。
/// <summary>/// 將Html文檔轉(zhuǎn)換為pdf/// </summary>/// <param name="htmlText"></param>/// <returns></returns>public byte[] ConvertHtmlTextToPDF(string htmlText){if (string.IsNullOrEmpty(htmlText))return null;//避免當(dāng)htmlText無任何html tag標(biāo)簽的純文字時(shí),轉(zhuǎn)PDF時(shí)會(huì)掛掉,所以一律加上<p>標(biāo)簽htmlText = "<p>" + htmlText + "</p>";using (var outputStream = new MemoryStream()){byte[] data = Encoding.UTF8.GetBytes(htmlText);var msInput = new MemoryStream(data);var doc = new Document();//pdf文檔,默認(rèn)A4格式。var writer = PdfWriter.GetInstance(doc, outputStream);doc.Open();//使用XMLWorkerHelper把Html parse到PDFiTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msInput, null, Encoding.UTF8, new UnicodeFontFactory());//指定默認(rèn)縮放比例為100%var pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f);//將默認(rèn)設(shè)置寫入pdfvar action = PdfAction.GotoLocalPage(1, pdfDest, writer);writer.SetOpenAction(action);doc.Close();msInput.Close();outputStream.Close();return outputStream.ToArray();}}
3、Unicode 字體支持。
/// <summary>/// Unicode 字體支持/// </summary>public class UnicodeFontFactory : FontFactoryImp{public override Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached){//使用微軟雅黑字體解決中文亂碼的問題,因?yàn)檠藕谧煮w為字體集合所以需要使用,0來指定具體的字體。//var chineseFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "msyh.ttc,0");//宋體//BaseFont baseFont = BaseFont.CreateFont(@"c:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//黑體BaseFont baseFont = BaseFont.CreateFont(@"c:\Windows\Fonts\SIMHEI.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//var baseFont = BaseFont.CreateFont(chineseFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);return new Font(baseFont, size, style, color);}}
4、調(diào)用生成。
string content = temp.Content;foreach (var dict in dicts){content = content.Replace("{{" + dict.Key + "}}", dict.Value);}var path = _esignInfo.Value.ContractPath;//if (entity.ContractType == ContractType.First)//{// path += "/" + appId + "/Agreements";//}entity.OriginalFileUrl = _pdfHelper.WritePdfFile(content, contractNo, path, "PDF");bool isSucc = !String.IsNullOrEmpty(entity.OriginalFileUrl);
總結(jié)
以上是生活随笔為你收集整理的C#使用iTextSharp操作PDF文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。