C#生成PDF文件流
程序员文章站
2023-11-25 15:09:22
本文实例为大家分享了c#生成pdf文件流的具体代码,供大家参考,具体内容如下
1、设置字体
static basefont fontbase = basefon...
本文实例为大家分享了c#生成pdf文件流的具体代码,供大家参考,具体内容如下
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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: SQL函数substr使用简介