`
iwfy
  • 浏览: 36991 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

初学PDF类库 itext

阅读更多

使用PDF类库itext2.1.4
javaDoc下载地址:http://nchc.dl.sourceforge.net/sourceforge/itext/iText-docs-2.1.4.tar.gz
iText-2.1.4.jar URL:http://jaist.dl.sourceforge.net/sourceforge/itext/iText-2.1.4.jar
iText-2.1.4-sources.jar URL:http://jaist.dl.sourceforge.net/sourceforge/itext/iText-2.1.4-sources.jar

1.生成简单hello world级别PDF文件
 * 引入itext.2.1.4.jar
  import com.lowagie.text.*;
 
 * 生成文档对象: Document document = new Document();
 * 生成PdfWriter对象: PdfWriter.getInstance(document, new FileOutputStream("d:\\helloworldB.pdf"));
 * 打开文档对象: document.open();
 * 给文档加入内容对象: document.add(new Chunk("Hello World!"));
  Chunk是可加入的最小单元,其它可加入对象还有Phrase Paragraph等
 * 关闭文档对象: document.close();
 
2.更改默认分隔符,当文本内容太长需要换行时,itext会根据分隔符截断文本进行换行
 * 使用setSplitCharacter(SplitCharacter splitCharacter)方法
 
 * SplitCharacter是一个接口,需要我们传递一个类实现它的isSplitCharacter方法
  参见splitCharacter()方法或itext文档
  
 * 无意间发现: 在对一个对象改变内容后,有可能会影响到前面已经使用过这个对象的地方
  Chunk chunk = new Chunk("a");
  Paragraph paragraph = new Paragraph(chunk);
  //此时paragraph 的内容应该是"a";
  chunk.append("bc");
  //此时paragraph 的内容就改变成是"abc";
  参见testChange()方法

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

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.SplitCharacter;
import com.lowagie.text.pdf.PdfChunk;
import com.lowagie.text.pdf.PdfWriter;

/**
 * @author wfy
 *
 */
public class HelloWorld {
	public HelloWorld(){		
	}
	
	public static void main(String[] args){
		try {
			HelloWorld hw = new HelloWorld();
			
			//生成一个简单PDF文件
			//hw.createHelloWorldPdf();
			
			//测试分隔符
			//hw.splitCharacter();
			
			hw.testChange();
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public void createHelloWorldPdf() throws Exception{
		Document document = new Document();
		//PdfWriter pdfWriterA = PdfWriter.getInstance(document, new FileOutputStream("d:\\helloworldA.pdf"));
		PdfWriter pdfWriterB = PdfWriter.getInstance(document, new FileOutputStream("d:\\helloworldB.pdf"));
		document.open();
		//pdfWriterA.pause();
		document.add(new Paragraph("Writer to :"));
		//pdfWriterA.resume();
		Chunk chunk = new Chunk("Hello World", FontFactory.getFont(FontFactory.COURIER, 20, Font.ITALIC, new Color(255, 0, 0)));
		document.add(chunk);
		chunk.setTextRise((float) 2.0);
		Paragraph paragraph1 = new Paragraph("this is a Paragraph");
		paragraph1.add(new Chunk("add a chunk", FontFactory.getFont(FontFactory.COURIER_BOLD, 20, Font.SYMBOL, new Color(10, 0 , 250))));
		paragraph1.add(new Paragraph( "insert"));
		paragraph1.add("String");
		paragraph1.add(new Paragraph(" Paragraph2"));
		Phrase phrase1 = new Phrase("string1 ", new Font(Font.TIMES_ROMAN));
		phrase1.add("string2 ");
		phrase1.add(new Phrase("string3", new Font(Font.HELVETICA)));
		document.add(phrase1);
		document.add(paragraph1);
		document.close();
	}
	public void splitCharacter() throws Exception{
		Document document = new Document();
		PdfWriter.getInstance(document, new FileOutputStream("d:\\splitchar.pdf"));
		document.open();
		Chunk chunk = new Chunk("app-*.xml/i text ");
		
		//更改默认分隔符" "和"-"为"/"
		chunk.setSplitCharacter(new SplitCharacter(){

			public boolean isSplitCharacter(int start, int current, int end,
					char[] cc, PdfChunk[] ck) {
				char c;
			    if (ck == null)
			        c = cc[current];
			    else
			        c = (char) ck[Math.min(current, ck.length - 1)].getUnicodeEquivalent(cc[current]);
			    
			    //用此句替换下面被注释的默认设置
			    if(c == '/')
			    	return true;
			    /*if (c <= ' ' || c == '-') {
			        return true;
			    }*/
			    
			    if (c < 0x2e80)
			        return false;
			    return ((c >= 0x2e80 && c < 0xd7a0)
			    || (c >= 0xf900 && c < 0xfb00)
			    || (c >= 0xfe30 && c < 0xfe50)
			    || (c >= 0xff61 && c < 0xffa0));

			}
			
		});
		Paragraph paragraph1 = new Paragraph("01" + chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		
		//此语句影响到前面使用过chunk的地方
		paragraph1.add(chunk.append(" wfy ").toString());
		
		document.add(paragraph1);
		//document.add(new Phrase("WFY"));
		paragraph1.clear();
		
		paragraph1.add("02" + chunk+ "wfy789 ");
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		paragraph1.add(chunk);
		document.add(paragraph1);
		document.close();
	}
	
	public void testChange() throws Exception{
		Document doc = new Document();
		PdfWriter.getInstance(doc, new FileOutputStream("d:\\testChange.pdf"));
		doc.open();
		Chunk chunk = new Chunk("a");
		doc.add(new Paragraph("before change: " + chunk));
		
		//在chunk对象更改之前已经定义好了paragraph对象
		Paragraph p = new Paragraph(chunk);
		
		chunk.append("bc");
		doc.add(new Chunk("after change: " + chunk));
		doc.add(p);
		doc.close();
	}
}

 

分享到:
评论

相关推荐

    itext C#下操作PDF的类库及中文教程

    itext是一款强大的PDF处理库,最初在Java平台上开发,后来被移植到C#等其他编程语言中,使得开发者能够轻松地在.NET环境中创建、编辑和操作PDF文档。这个压缩包包含了一些关键资源,如DLL库文件以及相关的中文教程,...

    iText中文帮助文档

    iText是一款广泛使用的Java库,专门用于创建和编辑PDF文档。这个中文帮助文档可能是开发者社区中热心人士编译翻译的,旨在为不熟悉英文文档的用户提供便利,使其能更好地理解和运用iText进行PDF处理。 iText的核心...

    基于java的开发源码-用iText类库制作PDF文档.zip

    这个压缩包"基于java的开发源码-用iText类库制作PDF文档.zip"显然包含了使用iText库进行PDF文档生成的示例代码和相关资源。 iText库主要提供了以下关键功能: 1. **PDF文档创建**:iText允许开发者从头开始创建PDF...

    IText入门开发文档

    你可以从中了解到IText的基本结构、类库和方法,以及如何安装和配置IText到你的项目中。对于初学者来说,这是了解IText功能和API的一个重要资源。 "示例代码.doc"则是一份包含实际代码示例的文档,这些示例覆盖了...

    OpenPDF是用于创建和编辑PDF文件的开源Java库

    OpenPDF是基于iText 4构建的,iText是一款知名的PDF处理库,而OpenPDF则在它的基础上进行了优化和扩展,更加适合Java开发者的需求。 OpenPDF库的核心功能包括: 1. **PDF文档创建**:OpenPDF可以让你从零开始创建...

    itext-2.0.8.jar

    iText是一款功能强大的Java类库,专为生成和处理PDF文档而设计。源自sourceforge.net的开源项目,它提供了一套全面的API,使得开发者能够方便地创建、编辑和读取PDF文档。这个版本——iText 2.0.8,尽管已经相对较为...

    用iText类库制作PDF文档

    iText是一个强大的开源类库,专门用于创建和修改PDF文档。它提供了丰富的API,使得开发者能够轻松地实现各种复杂的PDF布局和格式。在这个主题中,我们将深入探讨如何利用iText在Java中制作PDF文档。 首先,让我们...

    itext使用方法

    itextsharp是itext的C#移植版本,itext原本是一个用Java编写的开源类库,用于在.NET平台上创建和操作PDF文档。它不仅支持基本的文本、图像和表格元素的插入,还提供了复杂的布局和样式控制功能,使得开发者能够创建...

    Itext5所需的全部jar包

    iText 是一个强大的Java库,专门...而"pdfItext"这个文件名可能是指一个包含使用iText创建或操作PDF的示例代码的Java源文件,这对于初学者来说是一个很好的学习资源,可以通过阅读和运行代码来直观地理解iText的用法。

    2份pdf开发源码.rar

    - **Java特性**:Java的跨平台性使其成为PDF开发的理想选择,其丰富的类库和强大的内存管理能力使得处理复杂PDF任务变得简单。 2. **C++ PDF开发** - **C++ PDF库**:C++也有类似的库,如Poppler、PDFium和QPDF。...

    MFC PDF教程全套

    对于PDF文档处理,虽然MFC本身不直接支持PDF格式,但可以利用第三方库如PDFlib、iText等,结合MFC进行集成开发,实现PDF的生成、读取和修改功能。 本教程中提到的“PDF教程”可能包含了如何在MFC项目中集成PDF处理...

    pdf2经典JAVA教程

    总的来说,"pdf2经典JAVA教程"可能涵盖了从Java基础知识到PDF处理的进阶内容,是Java初学者和希望扩展PDF处理能力的开发者的重要学习资源。通过深入学习,你将能够熟练地运用Java进行PDF文档的处理工作。

    java_PDF.rar

    "Java_PDF.rar" 文件很可能是包含一系列关于Java基础知识的PDF文档,帮助初学者或有经验的开发者深入理解Java的核心概念。这里,我们将深入探讨Java语言的基础知识,包括其语法、类库、开发工具和常见应用。 首先,...

    jfreeChart报表小demo

    **JFreeChart报表小demo** 是一个基于Java的项目,主要展示了如何使用JFreeChart库创建各种图表,如饼图、柱状图和线图,并将这些图表嵌入到PDF文档中,使用了iText库进行PDF处理。这个项目非常适合初学者了解数据...

    JFreeChart开发指南.pdf

    - 使用iText工具导出为PDF格式; - 使用Batik工具导出为SVG格式。 5. **交互性支持**:图表支持鼠标事件,这意味着可以实现诸如悬停提示、点击放大等功能。 6. **注解支持**:可以在图表上添加额外的信息,如文字...

    jfreechart资料

    - 导出为PDF时,可以使用iText库,并涉及到Graphics2D的使用。 - 导出为SVG格式,需要了解SVG的基本概念,并且可以使用Batik工具集。 7. JFreeChart包结构 - JFreeChart的类和接口被组织在多个包中。 - 比如,...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例 Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式 //给客户发一个感谢...

    jasperReport资料文档2

    否则,需要手动下载并安装依赖库,如 iText(用于 PDF 输出)、JRXMLParser 等。 4. **设置开发环境** - **IDE 配置**:确保 IDE 支持 JAR 文件的加载。 - **编译配置**:如果使用构建工具(如 Ant),需要正确...

    IReport导出模板制作步骤

    这个教程主要针对初学者,旨在帮助他们理解如何通过IReport来制作模板,特别适用于那些对IReport使用感到困惑的用户。 首先,启动IReport的步骤非常简单,只需双击已安装的IReport.exe图标。然后,通过“文件”菜单...

    JFreeChart用户开发指南1.0.6(中文).doc

    同时,通过集成第三方工具如 iText 和 Batik,还可以导出 PDF 和 SVG 格式的文件。 - **高级交互特性**:支持图表上的鼠标事件,使得用户可以进行更复杂的交互操作;此外还支持 HTML 图像映射,便于在 Web 环境中...

Global site tag (gtag.js) - Google Analytics