zoukankan      html  css  js  c++  java
  • C#生成PDF文件流

    1。设置字体

    1 static BaseFont FontBase = BaseFont.CreateFont("C:\WINDOWS\FONTS\STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    2         static iTextSharp.text.Font bodyFont = new iTextSharp.text.Font(FontBase, 12);
    3         static iTextSharp.text.Font titleFont = new iTextSharp.text.Font(FontBase, 18);
    4         static iTextSharp.text.Font paragraphFont = new iTextSharp.text.Font(FontBase, 15);
    5         static iTextSharp.text.Font linkFont = new iTextSharp.text.Font(FontBase, 12, Font.UNDERLINE, BaseColor.BLUE);

    2.生成PDF文件流返回byte数组

     public byte[] DocCreate(System.Drawing.Image image, List<TreeNodes> list)
            {
                MemoryStream file = new MemoryStream();
    
                string fileName = string.Empty;
                Rectangle page = PageSize.A4;
                float y = page.Height;
                Document document = new Document(page, 15, 15, 30, 30);
                float docWidth = page.Width - 15 * 2;
                float docHeight = page.Height - document.BottomMargin - document.TopMargin;
                PdfWriter writer = PdfWriter.GetInstance(document, file);
                writer.CloseStream = false;
                writer.Open();
                PdfContentByte cb = writer.DirectContent;
                document.Open();
                //标题
                Paragraph title = new Paragraph(new Chunk("标题", titleFont));
                title.Alignment = Element.ALIGN_CENTER;
                document.Add(title);
                //图片
                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(image, ImageFormat.Png);
                float widthSzie = (page.Width - 30) / img.Width;
                if (widthSzie < 1)
                {
                    img.ScalePercent(widthSzie * 100);
                }
                document.Add(img);
                //文献出处
                Paragraph p2 = new Paragraph(new Chunk("出处", paragraphFont));
                p2.IndentationLeft = indentationLeft;
                document.Add(p2);
                InitData(list);//初始化业务数据
                CreateSteps(list, document, list.FirstOrDefault(it => it.PID == 0));//添加业务数据
                ////添加印章
                //iTextSharp.text.Image whyz = iTextSharp.text.Image.GetInstance(whyzPath);
                //whyz.ScalePercent(50);
                //whyz.PaddingTop = 100;
                //whyz.Alignment = Element.ALIGN_RIGHT;
                //document.Add(whyz);
                //添加日期
                Paragraph createtime = new Paragraph(new Chunk(DateTime.Now.ToLongDateString().ToString(), bodyFont));
                createtime.Alignment = Element.ALIGN_RIGHT;
                //createtime.SpacingBefore = -80;
                createtime.PaddingTop = 200;
    
                document.Add(createtime);
    
    
    
                document.Close();
                file.Position = 0;
                MemoryStream newfile = SetWaterMark(file, "水印内容", docWidth, docHeight);//添加水印,见另外一篇博客
                newfile.Position = 0;//重置流指针位置
                byte[] bytes = new byte[newfile.Length];
                newfile.Read(bytes, 0, bytes.Length);
                return bytes;
            }

  • 相关阅读:
    webbench之使用(二)
    webbench之编译安装(一)
    Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
    OneThink开发框架
    性能瓶颈调优
    Jmeter之Web端HTTP性能测试(九)
    RobotFramework自动化测试之脚本编写(一)
    LoadRunner之安装、破解、汉化教程(一)
    Java学习之Thread方法
    Java学习之线程通信(多线程(Lock))--生产者消费者
  • 原文地址:https://www.cnblogs.com/albertay/p/6606305.html
Copyright © 2011-2022 走看看