`
speed_guo
  • 浏览: 311013 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

java itext生成rtf文档

阅读更多

      要用itext来生成rtf文档,首先需下载三个包,分别是:iText-2.1.7.jar、iText-rtf-2.1.7.jar以及iTextAsian.jar,这几个包已上传,可从“itext应用包”下载。

      网上有很多这方面的应用讲解,我也下载了一些说明,可以借鉴。

      具体应用如下:

 

     iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

 

     iText中用文本块(Chunk)、短语(Phrase)和段落(paragraph)处理文本。

 

     文本块(Chunk)是处理文本的最小单位。

     

     短语(Phrase)由一个或多个文本块(Chunk)组成,可以通过短语(Phrase)成员函数add将一个文本块(Chunk)加到短语(Phrase)中,如:phrase6.add(chunk)。

 

     段落(paragraph)由一个或多个文本块(Chunk)或短语(Phrase)组成,相当于WORD文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。

 

     

 

/**
*生成rtf文档,如果成功则反回true,然后保存到数据库,否则将不会向数据库插入
*@param1 单选题
*@param1 多选题
*@realPath文件保存路径
*@f_questionTitle 标题
*@f_today 当前时间
*@fileIndex 文件生成次数
*@return boolean
*/
public boolean createRTFContext(ArrayList list1,ArrayList list2,String realPath,String f_questionTitle,String today,String fileIndex) throws DocumentException, IOException {   
  		
  		try {       
           //调用createFolder方法创建文件夹
			String currentFolder = createFolder(realPath,today);
			
			//String fileIndex = today+"第"+fileCount+"次";
			
          //真正需保存到数据库的文件路径
			String strFileName = realPath+currentFolder+"/"+fileIndex+f_questionTitle+".rtf";
			
			
			Document document = new Document(PageSize.A4);   
			RtfWriter2.getInstance(document, new FileOutputStream(strFileName));   
			document.open();  
			
			/*if(strFileName==null) strFileName="";

               //获得列表需显示的文件名
			String fileName = strFileName.substring(strFileName.lastIndexOf("/")+1,strFileName.length()-4);*/
			   
			// 设置中文字体   
			BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);   
			// 标题字体风格   
			Font titleFont = new Font(bfChinese, 16, Font.BOLD);   
			// 小标题字体风格   
			Font subTitleFont = new Font(bfChinese, 14, Font.BOLD);   
			// 正文字体风格   
			Font contextFont = new Font(bfChinese, 12, Font.NORMAL);   
			// 页眉页脚字体风格   
			Font headerFooterFont = new Font(bfChinese, 10, Font.BOLD);   
			    
			// footer页角显示页数   
			Table footer = new Table(1);   
			footer.setBorder(0);   
			footer.setWidth(100);         
   
			Paragraph pageNumber = new Paragraph("第 ");   
			pageNumber.add(new RtfPageNumber());   
			pageNumber.add(new Chunk(" 页"));   
			pageNumber.setAlignment(Paragraph.ALIGN_RIGHT);   
			pageNumber.setFont(headerFooterFont);   
			Cell cell02 = new Cell(pageNumber);    
			cell02.setBorder(0);   
			footer.addCell(cell02);   
			               
			document.setFooter(new RtfHeaderFooter(footer));   
			// 设置rtf标题  
			Paragraph title = new Paragraph(fileIndex+f_questionTitle);   
			title.setAlignment(Element.ALIGN_CENTER);   
			title.setFont(titleFont); 
			document.add(title);   
			
			Paragraph subSigleTitle = new Paragraph("一、单选题");   
			subSigleTitle.setFont(subTitleFont);   
			subSigleTitle.setSpacingBefore(10);  // 本段与上一段之间的空行   
			subSigleTitle.setFirstLineIndent(0); // 本段行首缩进
			document.add(subSigleTitle);  
			// 试题内容  
			S_test_question s = new S_test_question ();
			    for (int i = 0; i < list1.size(); i++) {   //单选题
			    	
			    	s = (S_test_question) list1.get(i); 
			        String contextString = (i+1)+"、"+s.getf_questions();   
			        String rest = contextString.replaceAll("\r"," ");
			        contextString = rest;
			        Paragraph context = new Paragraph(contextString);   
			        context.setAlignment(Element.ALIGN_LEFT);   
			        context.setFont(contextFont);  
			        context.setSpacingBefore(10);   // 本段与上一段之间的空行  
			        context.setFirstLineIndent(0);  // 本段行首缩进  
			        document.add(context);  
			    }  
			    
			    Paragraph subMultiTitle = new Paragraph("二、多选题");   
			    subMultiTitle.setFont(subTitleFont);   
			    subMultiTitle.setSpacingBefore(10);  // 本段与上一段之间的空行   
			    subMultiTitle.setFirstLineIndent(0); // 本段行首缩进   
			    document.add(subMultiTitle);  
			    
			    
			    for (int i = 0; i < list2.size(); i++) { //多选题
			    	int index = list1.size()+1;
			    	s = (S_test_question) list2.get(i); 
			        String contextString = (index+i)+"、"+s.getf_questions();   
			        String rest = contextString.replaceAll("\r"," ");
			        contextString = rest;
			        Paragraph context = new Paragraph(contextString);   
			        context.setAlignment(Element.ALIGN_LEFT);   
			        context.setFont(contextFont);  
			        context.setSpacingBefore(10);   // 本段与上一段之间的空行  
			        context.setFirstLineIndent(0);  // 本段行首缩进  
			        document.add(context);  
			    }  
			    
			    document.newPage();   //分页,下一页
			    //在表格末尾添加答案  
			    //String fileCount = fileName.substring(fileName.length()-3,fileName.length()-1);
			    Paragraph subAnswerTitle = new Paragraph(fileIndex+"试题答案");   
			    subAnswerTitle.setFont(subTitleFont);   
			  //subAnswerTitle.setSpacingBefore(100);  // 本段与上一段之间的空行   
			    subAnswerTitle.setFirstLineIndent(0); // 本段行首缩进   
			    document.add(subAnswerTitle);  
			    
			    for (int i = 0; i < list1.size(); i++) { //单选题答案
			    	
			    s = (S_test_question) list1.get(i); 
			    String answerString =(i+1)+"、"+s.getf_answer()+"   ";
			   //Paragraph anwser = new Paragraph(answerString);
			   //anwser.setAlignment(Element.ALIGN_LEFT); 
			   //document.add(anwser1); 
			    Chunk chunk = new Chunk(); 
			    chunk.append(answerString);
			    Phrase phAnwser = new Phrase();
			    phAnwser.add(chunk);
			    
			    document.add(phAnwser); 
			    }
			    for (int i = 0; i < list2.size(); i++) { //多选题答案
			    	int index = list1.size()+1;
			        s = (S_test_question) list2.get(i); 
			        String answerString =(index+i)+"、"+s.getf_answer()+"   ";
			        //Paragraph anwser1 = new Paragraph(answerString);
			        //anwser1.setAlignment(Element.ALIGN_LEFT);
			        //document.add(anwser1); 
			        Chunk chunk = new Chunk(answerString); 
			        Phrase phAnwser = new Phrase();
			        phAnwser.add(chunk);
			        document.add(phAnwser); 
			           
			        }
			    document.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return false;
		} catch (BadElementException e) {
			e.printStackTrace();
			return false;
		} catch (DocumentException e) {
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
		return true;   
    } 

 

 

分享到:
评论
1 楼 yinhaibo01 2012-11-24  
写的简单明了,很快捷的就搭建了iText使用例子,强烈推荐

相关推荐

    itext-2.1.7.jar itext-rtf-2.1.7.jar

    java导出word文档,使用itext包,可以生成pdf,word,生成段落,插入图图片,页码

    iText生成PDF文档demo

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,...

    iText中文帮助文档.pdf

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    iText中文api文档.pdf

    Text中文教程.pdf .........可生成pdf文件和rtf文件。h5转pdf 在示例代码0104中你可以看到该文档有一个0.5英寸的左边距和1英寸的右 边距,上边距为1.5英寸,下边距为2.5英寸 说明

    iText是用于生成PDF文档的一个java类库

    iText是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    itext5-5.5.10

    iText是用于生成PDF文档的一个java类库。版本号:5.5.10。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装:下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText....

    itext-2.1.7.jar itext-rtf-2.1.7.jar 和源码

    java导出word文档,使用itext包,可以生成pdf,word,生成段落,插入图图片,页码

    Itext word转pdf

    文档POI只支持往生成的中填入文本,对于图片根本就不支持。使用itext 生成rtf格式的直接保存为word

    itext生成word

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。" 通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 下载iText.jar文件后,只需要在系统的...

    Itext API帮助文档下载.chm格式下载

    itextpdf 英文api手册 iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    itext中关于pdf的各种功能

    itext生成pdf文档的各种方法,iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    pdf生成之itext使用

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。  iText的安装非常方便,在...

    itext5-itextpdf

    iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    java 生成word表格包括表格插入图片

    如何用java生成动态word表格,以及在表格中插入图片是一个难题,花了两天时间做出来的,希望对大家有帮助 需要jar包:iText-2.1.7.jar, iText-rtf-2.1.7.jar, iTextAsian.jar和jxl.jar 注意前两个jar包的版本要能...

    跨平台的word(doc,docx,rtf)插入图片功能

    跨平台支持doc,docx,rtf的图片插入,不是生成文档,而是在现有文档上追加后生成新文档。 另外需要安装OpenOffic,并且启动服务,详情见jodconverter的官网。 使用到的技术有iText,poi,jodconverter 使用方法: 1、...

    iText操作Pdf简单整理

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    Itext 文档

    在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText。iText是著名的开放源码的站点...通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

    itext的jar

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,...

    itext 5.5.1 API CHM 帮助文档 英文版

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,...

    itext解析pdf全能最新jar

    iText是著名的开放源码的站点sourceforge的一个项目,它是一个用于生成PDF文档的一个java开源库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。如果PDF是标记的且包含一个结构树,...

Global site tag (gtag.js) - Google Analytics