`
speed_guo
  • 浏览: 313872 次
  • 性别: 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使用例子,强烈推荐

相关推荐

    Java使用iText生成word文件的解决方案

    总结起来,使用iText生成Word文件是一项实用的技能,尤其在需要程序自动化生成报告或文档的场合。通过理解和熟练运用iText,你可以轻松地将数据转换为专业格式的文档,提高工作效率。对于那些需要处理大量文本和格式...

    itext2,itext-rtf jar包

    总结,iText 2.1.7和iText-RTF是Java开发中处理PDF和RTF文档的利器,它们为开发者提供了丰富的功能,使得在处理文档格式转换和内容操作时更加便捷高效。无论是在企业应用还是个人项目中,合理运用这两个库都能显著...

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

    总的来说,iText是一个强大且灵活的Java库,对于需要处理PDF和RTF文档的开发人员来说,它是一个不可或缺的工具。通过熟练运用iText,开发者可以大大提高文档生成的效率和质量,使得Java应用程序在文档处理方面展现出...

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

    `itext-2.1.7.jar`是iText的基本库,主要用于生成PDF文件,而`itext-rtf-2.1.7.jar`是其RTF扩展,使我们能够创建和编辑RTF格式的文件,包括Word文档。 1. **创建RTFWriter对象** 要开始生成Word文档,首先需要创建...

    itext+itext-rtf+iTextAsian

    iText-RTF使得开发者能够轻松地将RTF文档转换成更稳定的PDF格式,以供长期存储或打印。 在给定的压缩包文件中,我们看到了"itext+itext-rtf"的文件,这意味着它可能包含了iText的基本库和iText-RTF的组件。通常,...

    itext-rtf-2.1.7

    使用iText RFT时,开发者可以调用`com.lowagie.text.rtf`包下的类,如`RtfWriter2`用于创建RTF文件,`RtfDocument`用于打开和修改现有RTF文档,`RtfParagraph`和`RtfTable`则可以帮助构造文档的段落和表格等元素。...

    itext-rtf-2.1.7.jar,iTextAsian.jar,iText-5.0.6.jar,itext-2.1.7.jar

    iText 是一个流行的Java库,专门用于处理PDF文档。它提供了创建、编辑、读取PDF文件的功能,并且具有高度灵活性和可扩展性。在提供的文件列表中,我们看到几个与iText相关的JAR文件,分别是: 1. itext-rtf-2.1.7....

    iText-2.1.7.jar+iTextAsian.jar+iTextAsianCmaps.jar+itext-rtf-2.1.7.jar.zip

    通过这个库,开发者可以将iText生成的PDF内容转换为RTF,以便于在其他应用程序中进一步编辑或处理。 这些组件结合在一起,提供了一个强大的工具集,可以方便地处理PDF和RTF文档,尤其是在处理亚洲语言方面。在实际...

    iText1.2.7、iText-rtf2.1.7、iTextAsian

    iText-rtf库允许开发者将RTF文档转换为PDF,或者从PDF导出为RTF,这样用户就能在不支持PDF的应用程序中查看或编辑内容。这个模块在需要跨平台兼容性的项目中尤其有用。 接下来,iTextAsian是iText的一个特殊版本,...

    iText生成word代码及jar包(含页眉页脚)

    4. **Itext生成页眉页脚代码.txt**:这个文本文件包含了使用iText来添加页眉和页脚的具体Java代码。通常,页眉和页脚在文档中起到标识、标题和页码的作用。这个代码示例将指导开发者如何在创建的Word文档每一页上...

    iText-2.1.3 iTextAsian iText-rtf-2.1.3 jar包

    通过iText-2.1.3,iTextAsian和iText-rtf-2.1.3,开发者可以轻松地在各种项目中实现文本处理和文档生成的需求,无论这些项目是否涉及到亚洲语言的处理。由于这是一个早期版本,用户需要注意可能存在的安全性和兼容性...

    iText生成PDF文档demo

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

    iText-2.1.5.jar,iTextAsian.jar,iText-rtf-2.1.4.jar及execl生成代码实现

    通过这个库,你可以将RTF文档转换为更稳定的PDF格式,或者反之,将PDF文档转换为RTF,以便于编辑和共享。 至于提到的`AuditAction.java`文件,这可能是一个包含具体实现代码的Java类,用于利用iText库进行PDF或...

    iText中文帮助文档.pdf

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

    iText中文文档.pdf

    在这部分中,我们将学习如何使用iText生成RTF、HTML、XML等格式的文档。 第三部分 iText的高级应用 在iText的高级应用部分,我们将学习如何使用iText库实现一些高级的文档处理功能,如文档合并、文档分割、表格...

    itext生成word需要的jar包

    在标题提到的场景中,“iText生成word需要的jar包”是指使用iText库来实现这个功能时所需的Java类库文件,也就是JAR文件。 首先,我们来看一下压缩包中的三个文件: 1. `iTextAsian.jar`:这是一个扩展包,专门...

    Itext生成Word依赖.rar 亲测可用,最新

    Itext是一款广泛使用的Java库,...总的来说,Itext是一个强大的Java库,提供了丰富的功能来处理PDF和RTF文档。通过合理利用这些依赖,开发者可以在Java应用程序中轻松生成Word文档,尤其是在需要处理亚洲语言的场景下。

    Java利用Itext2.1.7生成word需要jar及doc.rar

    在IT行业中,生成文档是常见的任务之一,尤其是在服务器端编程如Java中。本文将深入探讨如何使用Itext 2.1.7库在Java环境中创建Word文档,以及所需的依赖和步骤。 Itext是一个流行的开源Java库,允许开发人员创建、...

    iText中文api文档.pdf

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

    IText 2.1.7 jar 包

    5. **itext-rtf-2.1.7.jar**:这是IText的RTF(Rich Text Format)模块,用于处理和生成RTF格式。RTF是一种常见的文本格式,可以被多种文字处理软件读取,包括Microsoft Word。通过这个模块,IText能够将内容导出为...

Global site tag (gtag.js) - Google Analytics