使用Java生成Pdf文档

原创 2004年12月30日 17:55:00
 

 <?xml:namespace prefix = o />

如今PDF格式文档的使用已经越来越普遍,它在文档压缩、安全等方面都表现的非常优秀,有关它的好处我就不在这里多说了。那么如何使用Java语言开发应用来输出PDF格式的文档呢?在这里给大家介绍iText,它是一个开发源代码的项目,你可以使用iText方便的实现PDF的输出。这篇文章我将向大家介绍如何使用iText来生成PDF文档。

HelloWorld

作为一个程序开发人员,对于HelloWorld程序并不陌生,几乎每一种语言或应用开始总是会举一个HelloWorld的例子来向大家介绍。在开始介绍iText时,我们不妨也从HelloWorld开始

 

 

 

现在运行上面的代码(记住在这之前把itext.jar放到你的ClassPath 之中),如果一切正常的话你会在”c:/”看到一个名为hello.pdf的文件。打开这个文件,看到了什么?是的文档里有一行字符“HelloWorld”,如下图。

<?xml:namespace prefix = v />

怎么样是不是很简单?当然我们在实际应用时不可能只是简单的输出一个字符串就完事了,还要作很多的工作,输出更复杂的PDF,下面就让我们开始进一步了解iText的其他功能。

更复杂的设置

   分析一下Document的构造方法,我们发现除了我们上一个例子中的无参数构造以外还有两个:

/*

 * Created on 2004-1-3,创建第一个Hello World程序

 */

package test1;

import java.io.FileNotFoundException;

import java.io.FileOutputStream; 

import com.lowagie.text.*;

import com.lowagie.text.pdf.*;

public class HelloWorld { 

    public static void main(String[] args) {

        //创建一个文档对象

        Document doc=new Document();

        try {

        //定义输出位置并把文档对象装入输出对象中

    PdfWriter.getInstance(doc, new FileOutputStream("c:/hello.pdf"));

            //打开文档对象

            doc.open();

         // 加入文字“Hello World”

            doc.add(new Paragraph("HelloWorld"));

         //  关闭文档对象,释放资源

            doc.close();           

       } catch (FileNotFoundException e) {

           e.printStackTrace();

       } catch (DocumentException e) {

           e.printStackTrace();

       }

    }

}

public Document();

public Document(Rectangle pageSize);

public Document(Rectangle pageSize,

   int marginLeft,

   int marginRight,

   int marginTop,

   int marginBottom);

 

第一个设置文档的页面大小,第二个除了设置文档的页面大小还设置页面边距。下面我分别给出例子。

Rectangle pSize=new Rectangle(144,90);

  //文档的背景色

        pSize.setBackgroundColor(Color.blue);       

        //创建一个文档对象,并设置他的初始化大小

        Document doc=new Document(pSize);

 

 Rectangle pSize=new Rectangle(144,90);

        //文档的背景色

        pSize.setBackgroundColor(Color.blue);          

  

        //创建一个文档对象,设置初始化大小和页边距

        Document doc=new Document(pSize,5,5,5,5);

将第一个例子中的代码按上面的方法修改然后运行,你可以看到输出的PDF文档将是这个样子,文档变得很小而且背景是蓝色:

 

在上面的例子中我们通过Rectangle设置了文档的大小,其实iText已经为我们定义好了许多常用的页面,比如:A0-A10, LEGAL, LETTER等等,这些都放在com.lowagie.text.PageSize这个类中,你可以通过调用PageSize中的静态方法直接引用页面信息。比如:

PageSize.A4;

 

设置字体

   使用iText可以设置文字的字体,对于我们中国的程序员来说如何显示中文是最紧要的问题。幸好iText中有一个专门的包用来设置亚洲国家的字体你可以从http://itext.sourceforge.net/downloads/iTextAsian.jar下载这个包。然后把它直接放到你的ClassPath中就可以了。如何设置字体呢?

 

BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);

在上面的代码中设置了中文字体的显示,你只要使用下面的代码就可以包中文加到PDF中了

String title = "我爱喝咖啡";

Paragraph t = new Paragraph(title, FontChinese);

doc.add(t);

 

如果你觉得这样设置很麻烦的话,呵呵,那你要自己扩展它的源代码了,设置字体全部在那个BaseFont里边。

 

 

编辑表格

   iText中的表格很像HTML中表格的使用不过它有一个cell代表一个格子,基本上这里的TableSwing中的Table对象是一致的,比如上面代码中对于表格的设置:

//定义一个表格

           Table table = new Table(2);

            //设置表格边框

           table.setBorderWidth(1);

            Cell cell = new Cell("Matrix III");

           cell.setHeader(true);

            //分列

           cell.setColspan(2);

            cell.setBackgroundColor(Color.blue);

           table.addCell(cell);

 

 

放置图片

现在你一定知道如何把一个图片加到文档中了,没错只要声明一个Image对象就可以了,这里的ImageAWT中的Image使用方法是一样的。

//定义一个图片

           Image jpeg = Image.getInstance("C:/matrix.jpg");

            //图片居中

        jpeg.setAlignment(Image.ALIGN_CENTER);

结束

有关iText的使用我就大致介绍这些,更深入的东西只有大家参考源代码自己体会了。

 

java生成pdf文件的说明

一、前言   前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iText--用于生成PDF文档的一个Java类库。废话不多说,进入正题。   二、iText简介 ...
  • yin767833376
  • yin767833376
  • 2016年10月08日 11:35
  • 3213

Java生成word/pdf解决方案

首先介绍几种java导出word方案 1、Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的...
  • liuyun1197628
  • liuyun1197628
  • 2013年11月20日 10:50
  • 20797

Java Web项目中利用FreeMarker模板生成的word文档,其它格式文档同理,如pdf,txt,java,xml等等

利用FreeMarker模板生成的word文档,其它格式文档同理,如pdf,txt,java,xml等等 需要向项目中加入freemarker的JAR文件,可以通过下面的链接获得Freema...
  • qq_35624642
  • qq_35624642
  • 2016年08月15日 12:09
  • 1278

Java生成复杂word/pdf解决方案

常见的导出word的方案 1、Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在J...
  • lewee0215
  • lewee0215
  • 2015年03月13日 11:22
  • 2041

[JAVA] java动态生成PDF文档

生成PDF文档,虽然需求bu'duo
  • gopain
  • gopain
  • 2014年11月20日 19:59
  • 2265

【java】 iText使用PDF模板生成输出PDF 这个比较清晰

转载自:http://blog.csdn.net/leeyefang/article/details/46805617 本文所要用到的工具或jar主要有: Adobe Acroba...
  • LWJdear
  • LWJdear
  • 2017年11月28日 15:20
  • 302

java将word文档转换为pdf文档

要想通过java实现word文档转换为pdf文档,需下载一个jacob-1.17.zip文件,下载地址为: http://sourceforge.net/projects/jacob-project/...
  • ilovejavas
  • ilovejavas
  • 2013年12月23日 11:41
  • 3036

使用java生成pdf文档

 ----------使用iText输出PDF文件。 如今PDF格式文档的使用已经越来越普遍,它在文档压缩、安全等方面都表现的非常优秀,有关它的好处我就不在这里多说了。那么如何使用Java语言开发应用...
  • shmiluwei
  • shmiluwei
  • 2004年02月11日 14:07
  • 1502

Java IText使用PDF模板 生成 输出PDF

转载自:http://blog.csdn.net/binyao02123202/article/details/6773986 这是本人学习ITEXT的一些小实践,希望可以帮到大家。这也是我第一次写...
  • u012377333
  • u012377333
  • 2016年04月27日 20:11
  • 2902

php生成pdf格式的文件

首先下载TCPDF文件 然后require_once导入tcpdf.php文件,实例化TCPDF配置相关信息; 例如: include_once("libs/tcpdf/tcpdf.ph...
  • xudakaka
  • xudakaka
  • 2015年05月17日 16:41
  • 696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Java生成Pdf文档
举报原因:
原因补充:

(最多只允许输入30个字)