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

  • 相关阅读:
    刷脸背后:人脸检测人脸识别人脸检索_张重生资料整理
    webpack工具
    js精度缺失和最大安全整数
    在线文档预览(干货篇)
    讨论js比较两个数组(对象)是否相等的范围
    js不同数据类型中==与===的对比
    js中this的指向
    前后端数据类型
    js网页节点操作
    圆角渐变边框实现
  • 原文地址:https://www.cnblogs.com/albertay/p/6606305.html
Copyright © 2011-2022 走看看