书签 分享 收藏 举报 版权申诉 / 27
上传文档赚钱

类型《Spring编程技术与应用》课件17.ppt

  • 上传人(卖家):momomo
  • 文档编号:5818478
  • 上传时间:2023-05-11
  • 格式:PPT
  • 页数:27
  • 大小:317.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《Spring编程技术与应用》课件17.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Spring编程技术与应用 Spring 编程 技术 应用 课件 17
    资源描述:

    1、17.1 完全用iText编程生成含报表的PDF文档17.1.1 用用iText通过直接编程生成通过直接编程生成PDF文档步骤文档步骤(1)建立)建立com.lowagie.text.Document对象。例如:对象。例如:Document document=new Document();(2)建立一个与)建立一个与document对象关联的书写器对象关联的书写器(Writer)。例如:。例如:PDFWriter.getInstance(document,new FileOutputStream(Helloworld.PDF);(3)打开文档。)打开文档。document.open();(4)

    2、向文档中添加内容。)向文档中添加内容。document.add(new Paragraph(Hello World);/添加一个段落添加一个段落(5)关闭文档。)关闭文档。document.close();17.1.2 Document对象简介Document有三种构造函数:有三种构造函数:Document():生成的文档将自动采用:生成的文档将自动采用A4大小的纸张。大小的纸张。Document(Rectangle pageSize):可以定义纸张的大小。:可以定义纸张的大小。Document(Rectangle pageSize,float marginLeft,float marginR

    3、ight,float marginTop,float marginBottom):该构:该构造方法不仅可以定义纸张大小,而且还能定义页面的左右上下边距。造方法不仅可以定义纸张大小,而且还能定义页面的左右上下边距。以下定义一个以下定义一个Document对象,页面大小为对象,页面大小为A4,四周边距均为,四周边距均为50。Document document=new Document(PageSize.A4,50,50,50,50);如果页面需要采用横排模式,只要修改第一个参数就行:如果页面需要采用横排模式,只要修改第一个参数就行:Document doc=new Document(PageSiz

    4、e.A4.rotate(),50,50,50,50);document对象的方法newPage():换页换页boolean addTitle(String title)/标题标题boolean addSubject(String subject)/主题主题boolean addKeywords(String keywords)/关键字关键字boolean addAuthor(String author)/作作者者boolean addCreationDate()/创建日期创建日期boolean setPageSize(Rectangle pageSize)/页面大小页面大小boolean ad

    5、d(Watermark watermark)/增加水印增加水印void removeWatermark()/删除水印删除水印void setHeader(HeaderFooter header)/页面头部标注页面头部标注void setFooter(HeaderFooter footer)/脚注脚注void setPageCount(int pageN)/页数页数17.1.3 书写器(Writer)对象通过书写器通过书写器(Writer)对象可以将具体文档对象可以将具体文档存盘成需要的格式,存盘成需要的格式,PDFWriter可以将文档存可以将文档存成成PDF文件,文件,HtmlWriter可

    6、以将文档存成可以将文档存成html文件。例如:文件。例如:PdfWriter writer=PdfWriter.getInstance(document,new FileOutputStream(d:/user/记录表记录表1.pdf);17.1.4 文本处理 所有向文档添加的内容都是以对象为单位的,所有向文档添加的内容都是以对象为单位的,iText中用文本块中用文本块(Chunk)、短语、短语(Phrase)和段落和段落(paragraph)处理文本。处理文本。值得注意的是文本中汉字的显示,默认的值得注意的是文本中汉字的显示,默认的iText字字体设置不支持中文字体,需要下载远东字体包体设置

    7、不支持中文字体,需要下载远东字体包iTextAsian.jar,否则不能往,否则不能往PDF文档中输出中文字文档中输出中文字体。体。有的网站提供的有的网站提供的iTextAsian.jar包中使用的是以前包中使用的是以前iText-2.1.3.jar一样的包名,与现在一样的包名,与现在iText5.0包名不包名不符,要解开进行处理,将其中包路径符,要解开进行处理,将其中包路径com.lowagie.text.Font改为改为com.itextpdf.text.Font,然后,重新打包即可。,然后,重新打包即可。1.文本块(Chunk)文本块文本块(Chunk)是处理文本的最小单位,是处理文本的

    8、最小单位,可以为可以为Chunk对象指定颜色,字体。例如,以对象指定颜色,字体。例如,以下产生一个字体为下产生一个字体为HELVETICA、大小为、大小为10、带下划线的字符串:带下划线的字符串:Chunk chunk1=new Chunk(ZipCode,FontFactory.getFont(FontFactory.HELVETICA,12,Font.UNDERLINE);2.短语(Phrase)短语短语(Phrase)由一个或多个文本块由一个或多个文本块(Chunk)组成,短语组成,短语(Phrase)也可以设定字体,但对于其中已经设定过字也可以设定字体,但对于其中已经设定过字体的文本块

    9、体的文本块(Chunk)无效。以下为无效。以下为Phrase的构造方法:的构造方法:Phrase(String string)Phrase(String string,Font font)Phrase(float leading,String string)其中,参数其中,参数leading设置的是设置的是Phrase对象的行间距。对象的行间距。通过短语通过短语(Phrase)的的add方法可以将一个文本块方法可以将一个文本块(Chunk)加到短语加到短语(Phrase)中。中。3.段落(paragraph)段落段落(paragraph)由一个或多个文本块由一个或多个文本块(Chunk)或短语

    10、或短语(Phrase)组成,相当于组成,相当于WORD文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。定义好一个定义好一个Paragraph对象之后,将其加入文档中。例如:对象之后,将其加入文档中。例如:Paragraph p=new Paragraph();Chunk chunk=new Chunk(Title);p.add(chunk);document.add(p);另外也可以设定段落的首行缩进、对齐方式(左对齐、右对齐、居中对齐)。另外也可以设定段落的首行缩进、对齐方式(左对齐、右对齐、居中对齐)。通过方法通过方法se

    11、tAlignment可以设定段落的对齐方式,例如:可以设定段落的对齐方式,例如:p.setAlignment(Element.ALIGN_JUSTIFIED);/对齐方式对齐方式 p.setIndentationLeft(15f);/左侧缩进距离左侧缩进距离p.setSpacingBefore(15f);/段前间距段前间距 p.setSpacingAfter(5f);/段后间距段后间距4.List类文档中可加入文档中可加入List对象,对象,List类实现的效果类似于类实现的效果类似于Word中的中的“项目符号和编号项目符号和编号”。以下通过。以下通过List的构造方法创建一个的构造方法创建一

    12、个List对对象。象。List my=new List(true,false,10);【说明说明】构造方法的第构造方法的第1个参数指明是否为有编号的列表,个参数指明是否为有编号的列表,true表示创建的是有编号的列表;第表示创建的是有编号的列表;第2个参数表示是否采用字母进行个参数表示是否采用字母进行编号,编号,true为字母,为字母,false为数字;第为数字;第3个参数是列表的缩进量。个参数是列表的缩进量。列表由列表项(列表由列表项(ListItem)组成,通过)组成,通过List的的add()方法可将方法可将列表项加入列表中。列表项加入列表中。my.add(new ListItem(Fi

    13、rst item of list);my.add(new ListItem(Second item of list);也可以直接将一个字符串加入也可以直接将一个字符串加入List列表,或者在列表中加入另列表,或者在列表中加入另一个列表对象。一个列表对象。17.1.5 表格处理类类com.lowagie.text.Table的构造方法有的构造方法有3个:个:Table(int columns)Table(int columns,int rows)Table(Properties attributes)其中,参数其中,参数columns、rows、attributes分别为表格的列数、行数、表分别

    14、为表格的列数、行数、表格属性。创建表格时必须指定表格的列数,而对于行数可以不用指定。格属性。创建表格时必须指定表格的列数,而对于行数可以不用指定。建立表格后,可以设定表格的属性,例如:建立表格后,可以设定表格的属性,例如:Table t=new Table(3,2);/创建创建3列列2行的表格行的表格 t.setBorderColor(Color.white);/设置边框颜色设置边框颜色 t.setPadding(5);/设置填充间隙设置填充间隙 t.setBorderWidth(1);/设置边框宽度设置边框宽度表格是有一个个单元格组成的。以下为单元格的创建以及将其加入表格是有一个个单元格组成

    15、的。以下为单元格的创建以及将其加入表格的方法。表格的方法。Cell c1=new Cell(Header1);t.addCell(c1);它将在表格的第它将在表格的第1行第行第1列中写入了内容列中写入了内容“Header1”。默认加入顺序是。默认加入顺序是按从左到右、从上到下的顺序。用以下方法可指定单元格的加入位置。按从左到右、从上到下的顺序。用以下方法可指定单元格的加入位置。addCell(Cell aCell,int row,int column)addCell(Cell aCell,Point aLocation)用用insertTable(Table table)方法可以将一个表格加入

    16、另一个表格中,方法可以将一个表格加入另一个表格中,实现表格嵌套。实现表格嵌套。2.使用PdfPTable类生成表格创建创建PdfPTable对象只需要指定列数,不对象只需要指定列数,不用指定行数。例如:用指定行数。例如:PdfPTable table=new PdfPTable(3);/创建一个创建一个3列的表格。列的表格。(1)设定表格宽度 通常生成的表格默认以通常生成的表格默认以80%的比例显示在页面上,用的比例显示在页面上,用setWidthPercentage(float widthPercentage)方法可设置表格的按方法可设置表格的按百分比的宽度。百分比的宽度。而用而用setTo

    17、talWidth则可设置表格按像素计算的宽度。例如:以下则可设置表格按像素计算的宽度。例如:以下设定宽度为设定宽度为300px,如果表格的内容超过了,如果表格的内容超过了300px,表格的宽度会自动,表格的宽度会自动加长。加长。table.setTotalWidth(300);创建表格时也可指定每一列的宽度。例如,以下定义含创建表格时也可指定每一列的宽度。例如,以下定义含3列的表格,列的表格,每列的宽度分别为每列的宽度分别为15%、25%、60%。float widths=15f,25f,60f;PdfPTable table=new PdfPTable(widths);如果要锁定表格宽度可使

    18、用如下方法:如果要锁定表格宽度可使用如下方法:table.setLockedWidth(true)获取表格列和行相关的信息getTotalHeight():获取高度;:获取高度;getTotalWidth():获取宽度;:获取宽度;getRowHeight(idx):获取某行高度;:获取某行高度;getRows();获取所有行,返回一个获取所有行,返回一个ArrayList的列表;的列表;getNumberOfColumns():获取栏数。:获取栏数。设置表格的边界以及对齐、填充方式table.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);

    19、/水平居左水平居左 table.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);/垂直居中垂直居中 table.setAutoFillEmptyCells(true);/自动填满自动填满 table.setPadding(1);/数据内容与边框的间隙数据内容与边框的间隙 table.setBorder(0);/表格边界表格边界(2)添加单元格 使用表格对象的使用表格对象的addCell(Object object)方法插入元素,其方法插入元素,其中,中,Object对象可以是对象可以是PdfPCell(单元格)、(单元格)、String、Ph

    20、rase、Image,也可以是,也可以是PdfPTable对象,实现表格嵌套。对象,实现表格嵌套。单元格的常用方法包括:单元格的常用方法包括:setColspan(int n):设置单元格的列跨度。设置单元格的列跨度。setBorder(int n):设置单元格的边框粗细。设置单元格的边框粗细。setVerticalAlignment(int v):设置单元格的垂直对齐方式。:设置单元格的垂直对齐方式。setHorizontalAlignment(int h):设置单元格的水平对齐方式。:设置单元格的水平对齐方式。setPadding(float padding):设置单元格的填充间隙。设置单

    21、元格的填充间隙。setFixedHeight(float height):设置单元格的绝对高度。:设置单元格的绝对高度。【程序清单17-1】绘制简易检测记录表import java.io.FileOutputStream;import com.itextpdf.text.*;import com.itextpdf.text.pdf.*;public class ItextPrint public static void main(String a)Document document=new Document();try PdfWriter.getInstance(document,new Fi

    22、leOutputStream(d:/score.pdf);document.open();document.addAuthor(丁振凡丁振凡);BaseFont bfChinese=BaseFont.createFont(STSong-Light,UniGB-UCS2-H,BaseFont.NOT_EMBEDDED);/字体定义字体定义Font FontChinese=new Font(bfChinese,10,Font.BOLD);Font FontChinese1=new Font(bfChinese,20,Font.BOLD);float widths=60f,60f,60f;PdfPT

    23、able t=new PdfPTable(widths);/以下设置表格单元格的水平对齐方式为居中对齐以下设置表格单元格的水平对齐方式为居中对齐 t.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);Paragraph title1=new Paragraph(检测记录表检测记录表,FontChinese1);title1.setSpacingAfter(5f);/段后间距段后间距title1.setAlignment(Element.ALIGN_CENTER);document.add(title1);t.addCel

    24、l(new Phrase(低速低速,FontChinese);t.addCell(new Phrase(1U1K,FontChinese);t.addCell();t.addCell(new Phrase(高速高速,FontChinese);t.addCell(new Phrase(2U1K,FontChinese);t.addCell();document.add(t);catch(Exception de)document.close();(3)合并单元格PdfPCell类提供了类提供了setColspan(int colspan)方法用于合并横向单元格,参数方法用于合并横向单元格,参数c

    25、olspan为合并的单元格数。但要合并纵向单为合并的单元格数。但要合并纵向单元格需要使用嵌套表格的方法。将某个子表加元格需要使用嵌套表格的方法。将某个子表加入单元格,且安排单元格所占列数为子表中列入单元格,且安排单元格所占列数为子表中列数,则其行跨度也就是子表中的行数。数,则其行跨度也就是子表中的行数。(4)表头处理通常的表格都需要一个表头,定义表格的通常的表格都需要一个表头,定义表格的每一列所代表的含义。表头的内容也是通过每一列所代表的含义。表头的内容也是通过table.addCell()方法添加到表格中的,完成方法添加到表格中的,完成之后调用之后调用table.setHeaderRows(

    26、1)方法告诉方法告诉程序这一行是表头。当表内容很大,一页无法程序这一行是表头。当表内容很大,一页无法显示时,程序会自动将表格进行分页,并且会显示时,程序会自动将表格进行分页,并且会在每一页的表格头部都加上表头。在每一页的表格头部都加上表头。17.1.6 图像处理 iText中处理图像的类为中处理图像的类为com.lowagie.text.Image,目前,目前iText支持的图像格式有:支持的图像格式有:GIF、JPEG、PNG、WMF等格式,等格式,iText将自动识别图像格式。用以下方法获取图像实例。将自动识别图像格式。用以下方法获取图像实例。Image img=Image.getInst

    27、ance(sun.gif);图像对象的常用方法有:图像对象的常用方法有:p void setAlignment(int alignment):设置图像的对齐方式。当:设置图像的对齐方式。当参数参数alignment为为Image.TEXTWRAP、Image.UNDERLYING分别分别指文字绕图形显示、图形作为文字的背景显示。指文字绕图形显示、图形作为文字的背景显示。p void scaleAbsolute(int newWidth,int newHeight):设定显示绝:设定显示绝对尺寸对尺寸p void scalePercent(int percent):设定显示比例。:设定显示比例。

    28、p void scalePercent(int percentX,int percentY):设定图像高宽的显:设定图像高宽的显示比例。示比例。p void setRotation(double r):旋转一定角度,参数:旋转一定角度,参数r为弧度。为弧度。17.2 基于PDF报表模板的报表填写处理基于报表模板的报表处理步骤如下:基于报表模板的报表处理步骤如下:(1)利用利用Word制作打印报表;制作打印报表;(2)利用利用Adobe Acrobat 7.0 Professional将将Word文档转换为文档转换为PDF格式;格式;(3)利用利用Adobe Designer 7.0对对PDF进

    29、行设计,进行设计,定义数据域;定义数据域;(4)利用利用iText组件实现对报表数据字段的写入。组件实现对报表数据字段的写入。【程序清单17-2】给PDF报表模板填写数据PdfReader r=new PdfReader(d:预检模板预检模板(DC600V方式方式).pdf);PdfStamper s=new PdfStamper(r,new FileOutputStream(d:结结果果.pdf);AcroFields form=s.getAcroFields();String x=detectlog.getYjdata(date,cheNumber,code);/读取数读取数据库数据据库数

    30、据form.setField(日期日期,x1);form.setField(修程修程,x2);form.setField(工长工长,x3);form.setField(检测员检测员,x4);form.setField(相对湿度相对湿度,x5);17.3 在Spring3.1中使用PDF视图在在Web应用开发中应用开发中,有时需要动态生成有时需要动态生成PDF视图作为报表输出。视图作为报表输出。Spring3.1提供了提供了AbstractPdfView抽象类用于生成抽象类用于生成PDF格式格式视图,通过编写覆盖视图,通过编写覆盖buildPdfDocument方法方法可将产生的可将产生的PDF

    31、文档送客户端。该方法形态如文档送客户端。该方法形态如下:下:buildPdfDocument(Map map,Document doc,PdfWriter writer,HttpServletRequest req,HttpServletResponse resp)其中,其中,Map代表模型,代表模型,Document代表要生代表要生成的文档,成的文档,PdfWriter为书写器。为书写器。以打印某班的学生名单为例public class PdfView extends AbstractPdfView public void buildPdfDocument(Map map,Document

    32、doc,PdfWriter writer,HttpServletRequest req,HttpServletResponse resp)throws Exception Table table=new Table(2);table.setWidth(90);table.setBorderWidth(1);doc.add(new Paragraph(String)map.get(classname);/表头表头 List students=(List)map.get(students);Iterator personIt=students.iterator();while(personIt.h

    33、asNext()table.addCell(personIt.next();/学生姓名加入表格的单元格学生姓名加入表格的单元格 doc.add(table);2.MVC控制器设计Controllerpublic class PdfViewController RequestMapping(value=/outputpdf,method=RequestMethod.GET)public ModelAndView handle()ModelMap modelMap=new ModelMap();modelMap.put(classname,computer 08-1);/班级班级List students=new ArrayList();students.addAll(Arrays.asList(mary,John,jerry);/班级学生班级学生modelMap.put(students,students);return new ModelAndView(new views.PdfView(),modelMap);

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《Spring编程技术与应用》课件17.ppt
    链接地址:https://www.163wenku.com/p-5818478.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库