`
reymont
  • 浏览: 529470 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

itext使用rtf格式生成word,使用image为页眉

    博客分类:
  • PDF
阅读更多

起因:

 

在生成word文档时,一般都要求生成固定的页眉。页眉,即可以是文字也可以图片。对于程序员来说,图片可以简化开发的复杂度,对于用户来说可以丰富页眉的样式。于是我尝试使用itext生成rtf格式来获得包含图片页眉的word文档。

 

尝试1:

直接使用document.add(Image),可以看到图片在文本内,就算使用Image.setAbsolutePosition(),图片的位置仍然没有变化。

 

 

尝试2:

使用new HeaderFooter(Phrase,false)。貌似可以达到预期效果,但是你一看代码,就知道这是以代码的复杂性为代价的,而且会额外的多处两个回车符。

 

 

尝试3:

使用 com.lowagie.text.rtf.headerfooter.RtfHeaderFooter。终于达到预期效果了。

 

 

 

 

package org.study.itext.rtf;

import java.awt.Color;
import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.rtf.RtfWriter2;
import com.lowagie.text.rtf.headerfooter.RtfHeaderFooter;
/**
 * @blog http://reymont.iteye.com/
 * @author reymont.li
 * @version create time:2011-7-21 下午04:02:59
 */
public class RtfWithImageHeader {
	public static void main(String[] args) {
		test1();
		test2();
		test3();
	}
	
	public static void test1(){
		Document document1 = new Document(PageSize.A4, 36, 36, 100, 36);
		try {
			RtfWriter2.getInstance(
					document1,
					new FileOutputStream("resource/RtfWithImageHeader1.doc"));
			Image headerImage = Image.getInstance("resource/reymont.png");
			BaseFont bfChinese = BaseFont.createFont("resource/STSONG.TTF",
					BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
			
			document1.open();
			document1.add(headerImage);
			
			Font topFont = new Font(bfChinese, 24, Font.NORMAL, Color.RED);
			Paragraph para = new Paragraph("这是个将图片作为Word页眉的例子!",topFont);
			
			document1.add(para);
		} catch (Exception e) {
			e.printStackTrace();
		} 
		document1.close();
	}
	
	public static void test2(){
		Document document2 = new Document(PageSize.A4, 36, 36, 100, 36);
		try {
			RtfWriter2 writer = RtfWriter2.getInstance(
					document2,
					new FileOutputStream("resource/RtfWithImageHeader2.doc"));
			BaseFont bfChinese = BaseFont.createFont("resource/STSONG.TTF",
					BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
			document2.open();
			
			
					
			Font topFont1 = new Font(bfChinese, 10, Font.NORMAL, Color.BLUE);
			Paragraph headerPara1 = new Paragraph("@blog 		http://reymont.iteye.com/", topFont1);
			Paragraph headerPara2 = new Paragraph("@author 	reymont.li", topFont1);
			Paragraph headerPara3 = new Paragraph("@MSN 		reymont.li@hotmail.com", topFont1);
			Paragraph headerPara = new Paragraph();
			headerPara.add(headerPara1);
			headerPara.add(headerPara2);
			headerPara.add(headerPara3);
			
			HeaderFooter header = new HeaderFooter(headerPara,	false);
			writer.setHeader(header);
			
			document2.add(header);
			
			Font topFont2 = new Font(bfChinese, 24, Font.NORMAL, Color.RED);
			Paragraph para = new Paragraph("这是个将图片作为Word页眉的例子!",topFont2);
			
			document2.add(para);
		} catch (Exception e) {
			e.printStackTrace();
		} 
		document2.close();
	}
	
	public static void test3(){
		Document document3 = new Document(PageSize.A4, 36, 36, 100, 36);
		try {
			RtfWriter2 writer = RtfWriter2.getInstance(
					document3,
					new FileOutputStream("resource/RtfWithImageHeader3.doc"));
			document3.open();
			
			Image headerImage = Image.getInstance("resource/reymont.png");
			
			RtfHeaderFooter header = new RtfHeaderFooter(headerImage);
			writer.setHeader(header);
			
			BaseFont bfChinese = BaseFont.createFont("resource/STSONG.TTF",
					BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
			Font topFont = new Font(bfChinese, 24, Font.NORMAL, Color.RED);
			Paragraph para = new Paragraph("这是个将图片作为Word页眉的例子!",topFont);
			
			document3.add(para);
		} catch (Exception e) {
			e.printStackTrace();
		} 
		document3.close();
	}
}

 相关资源:

 

 

 

 

 

 

  • 大小: 17.8 KB
  • 大小: 4.1 KB
  • 大小: 14.1 KB
分享到:
评论
5 楼 kisbo110 2013-07-03  
找不到 jar包啊,我看现在是itext-pdf 啊
4 楼 reymont 2012-06-07  
这个还要要对ByteArrayOutputStream 做些处理。ByteArrayOutputStream 主要作用是在内存中创建缓冲区,数据将被写入byte数组。而FileOutputStream主要作用是将数据写入文件或者一个FileDescriptor,也可以通过FileOutputStream 来包含image的数据。可以看到这个两个OutputStream处理数据时不同的,可以利用如下形式将ByteArrayOutputStream转换为FileOutputStream:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = bos.toByteArray();
File someFile = new File("java2.doc");
FileOutputStream fos = new FileOutputStream(someFile);
fos.write(bytes);
3 楼 liujian85 2012-06-06  
对的  但是我在尝试的时候发现  生成的word文件就会发生乱码了 感觉是图片放进流以后  再导出到word已经不再被识别  不知道有没有方法解决啊?
2 楼 reymont 2012-06-06  
查看其iText-2.0.8的API,第二个参数是OutputStream。而ByteArrayOutputStream extends OutputStream,所以这样做是可以的

public static RtfWriter2 getInstance(Document doc, OutputStream os)
1 楼 liujian85 2012-06-05  
你好,请问一下,当我RtfWriter2的第二个参数使用的是ByteArrayOutputStream时,页眉和页脚还能设置吗?

相关推荐

    iText操作Pdf简单整理

    iText不仅支持生成PDF和rtf格式的文档,还具备将XML和HTML文件转化为PDF的功能,大大扩展了其在各种应用场景中的实用性。 在使用iText时,首先需要引入相应的库文件,如压缩包中的`itextpdf-5.5.1.jar`,这是iText...

    Itext 文档

    - 直接生成 PDF 或 RTF 格式的文档。 - 支持将 XML、HTML 文件转换为 PDF 文件。 2. **文档编辑**: - 添加文本、图像、表格等元素。 - 设置文档的布局和样式。 - 生成复杂的报表和文档。 3. **其他功能**: ...

    asp·net生成PDF详解

    asp.net生成PDF详解 asp.net生成PDF PDF详解 用C#制作PDF文件全攻略 丽水市汽车运输集团有限公司信息中心 苟安廷 目 录 前 言 3 第一部分 iText的简单应用 4 第一章 创建一个Document 4 第一步 创建一个Document实例...

    用C#制作PDF文件全攻略

    在其他文档格式的支持方面,文章第二部分介绍了如何将XML和XHTML以及RTF文件转换成PDF格式,并讨论了RTF格式中特有的页眉和页脚的处理方法。 文章的第三部分则深入探讨了iText的高级应用,包括TrueType字体的应用和...

    C#pdf制作,itextsharp文件外加在网上下的一个制作表格的案例

    RTF中扩展的页眉和页脚 第三部分 iText的高级应用 第九章 字体 TrueType字体应用 TruType字体集合的应用 第十章 图象和文本的绝对位置 pdfContentByte 简单图形 文本 模板(Form xObjects) 分栏 ...

    ITextSharp中文教程用C#制作PDF文件全攻略.pdf

    - **Image对象**:使用`Image`类加载并插入图片。 - **图片的位置**:控制图片在文档中的位置。 - **缩放和旋转图片**:通过`ScalePercent`和`RotateDegrees`方法调整图片大小和方向。 - **原始图片数据**:直接处理...

    C#制作PDF文件(附Demo源码)

    RTF中扩展的页眉和页脚 26 第三部分 iText的高级应用 27 第九章 字体 27 TrueType字体应用 27 TruType字体集合的应用 28 第十章 图象和文本的绝对位置 28 pdfContentByte 28 简单图形 29 文本 29 模板(Form x...

    PDF文件全攻略.doc

    - **RTF文件**:还可以将RTF格式转换为PDF文档,尽管有一些功能可能不受支持。 #### 六、iText的高级应用 - **字体**:支持TrueType字体的应用和集合,提供丰富的文本样式。 - **图象和文本的绝对位置**:使用`...

    ITextSharp中文教程.pdf

    - RTF文件:创建和处理RTF格式文档,并将其转换为PDF。 9. iText的高级应用: - 字体支持:使用TrueType字体和字体集合来丰富文档内容。 - 图像和文本的绝对位置:使用pdfContentByte对象精确控制内容在PDF中的...

    C#制作PDF文档全攻略(教程)

    - **RTF中扩展的页眉和页脚**:可以在RTF文档中定义更复杂的页眉和页脚。 #### 第三部分 iText的高级应用 **九、字体** - **TrueType字体应用**:使用TrueType字体为文档增添更多样式。 - **TruType字体集合的...

    ITextSharp中文教程

    - **RTF文件**:将RTF格式的文档转换为PDF,保留原始文档的格式和样式。 #### iText的高级应用 对于更复杂的PDF处理需求,iTextSharp提供了以下高级功能: - **字体**:支持TrueType字体,可以应用于整个文档或...

Global site tag (gtag.js) - Google Analytics