首页 > 编程语言 >html字符串转pdf源码

html字符串转pdf源码

时间:2022-11-18 13:03:12浏览次数:50  
标签:outputStream string BaseFont doc html PDF 源码 new pdf


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

        }



标签:outputStream,string,BaseFont,doc,html,PDF,源码,new,pdf
From: https://blog.51cto.com/u_14751752/5868394

相关文章

  • Vue3源码解读之patch
    例子代码本篇将要讲解domdiff,那么咱们结合下面的例子来进行讲解,这个例子是在上一篇文章的基础上,加了一个数据变更,也就是list的值发生了改变。html中增加了一个按钮change......
  • 如何正确学习vue3.0源码
    为什么要学源码技术是第一生产力学习API的设计目的、思路、取舍学习优秀的代码风格学习组织代码的方式学习实现方法的技巧学习ES67新API、TS高级用法不给自......
  • 上帝视角看Vue源码整体架构+相关源码问答
    前言这段时间利用课余时间夹杂了很多很多事把Vue2源码学习了一遍,但很多都是跟着视频大概过了一遍,也都画了自己的思维导图。但还是对详情的感念模糊不清,故这段时间对源码......
  • React源码中的dom-diff
    这一章就来讲讲React在协调阶段的beginWork里面主要做的事情--domdiff。本文主要讲的是React17.0.2版本的diff,在此我也画了一个简单的流程图:reconcileChildrendomd......
  • JavaScript语法_与html结合方式和JavaScript语法_注释&数据类型
    JavaScript语法_与html结合方式:ECMAscript:客户端脚本语言的标准1.基本语法∶与html结合方式1.内部JS:定义<script>,标签体内容就是js代码2.外部JS:定义<script>,通过s......
  • 如何分析html中的json
    在js逆向的过程中,时常要使用正则表达式去匹配htnl的内容,有时候关键的数据都在json中,这个怎么分析这个json呢1.使用vscode打开htmlvscode的js插件会分析html文件,这样就可......
  • html grid 布局与拖动
    1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8"/>5<metahttp-equiv="X-UA-Compatible"content="IE=edge"......
  • 计算机体系结构基础 第三版 电子书 pdf
    胡伟武等著 关注公众号:红宸笑。回复:电子书即可 ......
  • C++20实践入门 第6版 电子书 pdf
    关注公众号,回复【电子书】即可:  ......
  • 现代操作系统 原理与实现 电子书 pdf
    作者:陈海波/夏虞斌出版社:机械工业出版社 关注公众号,回复【电子书】即可:  ......