您的位置:首页 > Web前端 > HTML

html字符串转pdf源码

2016-07-14 22:22 405 查看
        /// <summary>  

        /// 将Html文字 输出到PDF  

        /// </summary>  

        /// <param name="htmlText"></param>  

        /// <returns></returns>  

        public static byte[] ConvertHtmlTextToPDF(string htmlText)

        {

            if (string.IsNullOrEmpty(htmlText))

            {

                return null;

            }

            MemoryStream outputStream = new MemoryStream();//要把PDF写到哪个串流

            byte[] data = Encoding.UTF8.GetBytes(htmlText);//字串转成byte[]  

            MemoryStream msInput = new MemoryStream(data);

            Document doc = new Document();//要写PDF的文件,建构子没填的话预设直式A4  

            PdfWriter writer = PdfWriter.GetInstance(doc, outputStream);

            //指定文件预设开档时的缩放为100%  

            //PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f);

            //开启Document文件   

            doc.Open();

            //使用XMLWorkerHelper把Html parse到PDF档里  

            XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msInput, null, Encoding.UTF8, new UnicodeFontFactory());

            //将pdfDest设定的资料写到PDF档  

            //PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer);

            //writer.SetOpenAction(action);

            doc.Close();

            msInput.Close();

            outputStream.Close();

            return outputStream.ToArray();

        }

        //设置字体类  

        public class UnicodeFontFactory : FontFactoryImp

        {

            private static readonly string arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts),

      "arialuni.ttf");//arial unicode MS是完整的unicode字型。  

            public override Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached)

            {

                BaseFont bfChiness = BaseFont.CreateFont(@"C:\Windows\Fonts\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

                //可用Arial或标楷体,自己选一个  

                BaseFont baseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

                return new Font(bfChiness, size, style, color);

            }
        }

感谢http://blog.csdn.net/jacky4955/article/details/38709867
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  html pdf