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

 

posted @ 2017-03-23 17:32  恝置  Views(8776)  Comments(0Edit  收藏  举报