度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 2116|回复: 1
打印 上一主题 下一主题

[分享] C#生成PDF文件流

[复制链接]

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
跳转到指定楼层
楼主
发表于 2020-3-1 17:38:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、设置字体
        static BaseFont FontBase = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        static iTextSharp.text.Font bodyFont = new iTextSharp.text.Font(FontBase, 12);
        static iTextSharp.text.Font titleFont = new iTextSharp.text.Font(FontBase, 18);
        static iTextSharp.text.Font paragraphFont = new iTextSharp.text.Font(FontBase, 15);
        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;
         }



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
发表于 2020-3-1 18:20:59 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-12-23 02:58 , Processed in 0.115961 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表