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

使用Java创建与操作PDF文档

阅读更多

Pdf文档是办公中常见的一种文档格式,这种文档格式不依赖于系统安装的字体库,从而在多语言办公环境中广泛被使用。Java语言也可动态创建PDF文档,并且itext包提供了一系列用于操作PDF文档的API,从而为我们在实际开发中生成和定制PDF文档提供了一种良好的解决思路。

1.创建PDF文档

    首先,我们需要导入itext.jar和itexasian.jar(亚洲语言包)这两个依赖的包,主要代码如下:

 

public class PdfC01 {

	/**
	 * @author Helen
	 * @date 2015年7月17日 上午9:35:54 
	 */
	public static void main(String[] args) {
		com.lowagie.text.Document document = new com.lowagie.text.Document();
		try {
			PdfWriter.getInstance(document, new FileOutputStream("C:\\first.pdf"));
			document.open();
			document.add(new Paragraph("PDF Document!"));
			document.add(new Paragraph("Author:yan."));
			document.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}

 

    以上代码通过Document类来创建一个文档对象,然后使用PdfWriter类的getInstance()方法将这个文档对象与磁盘文件关联。随后,调用Document的open()方法打开文档对象,使用add()方法为创建的Pdf文档中添加内容(该程序中仅仅添加了两个段落),最后需要调用close() 方法来关闭文档对象,完成Pdf文档的创建和内容填充。

2.操作PDF文档属性

    每一个PDF文档在发布时,都会有文档属性,使用Java程序可以操作创建的PDF文档的属性(文档属性通过PDF Reader的"文件>>属性"菜单进行查看)。这些属性主要包括:标题、作者、主题、关键字、创建日期等。

    示例代码如下:

 

public class PdfC02 {

	/**
	 * @date 2015年7月17日 上午10:04:25 
	 */
	public static void main(String[] args) {
		Document document=new Document();
		try {
			PdfWriter.getInstance(document, new FileOutputStream("C:\\002.pdf"));
			document.addTitle("Title Info.");
			document.addSubject("For learning");
			document.addKeywords("iText");
			document.addAuthor("yan");
			document.addCreator("Samgung SDS");
			document.open();
			document.add(new Paragraph("Content."));
			document.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}

     操作PDF文档属性主要是通过Document类的一系列addXXX()方法来完成的,注意:操作属性一定要在文档对象open之前。这些API的统一格式为:public boolean addXXX(String arg);方法调用成功即返回true,否则返回false。

    Tips:1)创建文档时必须保证路径是正确且存在的,否则后续所有的操作都会失败;

          2)在创建PDF文档时,创建日期和修改日期默认会选定文档生成时的系统时间,因此调用addCreationDate()方法时,不需要传参数,会默认选定当前时间。

          3)操作文档属性的所有语句必须在文档对象打开之前,否则无法成功添加;

          4)确保在文档操作完成之后使用close()方法关闭文档对象,从而释放程序的资源占用。

3.文档的其它操作

    1)设置页面大小

    示例代码:

public class Pdf03C {

	/**
	 * @date 2015年7月17日 上午10:52:12 
	 */
	public static void main(String[] args) {
		Document document = new Document();
		try {
			PdfWriter.getInstance(document, new FileOutputStream("C:\\003.pdf"));
			Rectangle pageSize=new Rectangle(200, 100);
			pageSize=pageSize.rotate();
			document.setPageSize(pageSize);
			document.open();
			document.add(new Paragraph("PageSize:200*100"));
			document.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}

    在特定的使用场合中,PDF文档单页显示的尺寸一般是有限制的,通过Rectangle类即可为文档的页面设置尺寸大小。该类的构造方法可以接收两个float实数,用于表示页面所处矩形区域的宽度和高度,单位是磅,在这种情况下参照起点坐标是(0,0)。这个构造方法也可以接收四个实数作为参数,用起始坐标和矩形大小来确定页面的尺寸。

    2)设置页面显示方向
 PDF文档在创建时,默认的显示方向是纵向,即矩形区域参数对应的分别为宽度和高度。通过Rectangle类提供的rotate()方法可以设置页面的显示方向,可以切换纵向为横向;在显示方向为横向的情况下也可调用该方法设置显示方向为纵向。

    3)添加页眉和页脚

    示例代码:

public class Pdf04C {

	/**
	 * @date 2015年7月17日 上午11:19:46 
	 */
	public static void main(String[] args) {
		try {
			PdfReader reader = new PdfReader("C:\\first.pdf");
			PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("C:\\first_pre.pdf"));
			PdfContentByte head = stamp.getOverContent(1);
			head.setTextRise(800);
			head.beginText();
			BaseFont chinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
			head.setFontAndSize(chinese, 16);
			head.showText("页眉");
			head.endText();
			stamp.insertPage(2, PageSize.A4);
			PdfContentByte bottom = stamp.getUnderContent(2);
			bottom.setTextRise(20);
			bottom.beginText();
			bottom.setFontAndSize(chinese, 16);
			bottom.showText("页脚");
			bottom.endText();
			stamp.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

    注意:添加页眉和页脚内容时,需要使用PdfReader类来读取一个已创建的PDF文档,使用PdfStamper 类来修改读取的文档完成页眉和页脚添加。主要API:

  • public PdfContentByte getOverContent(int pageNum),获得指定页面的内容。

  • public void setTextRise(float rise),使当前文本位置上移,如果将参数设置为小数,则必须使用标准的单精度表示(如100.5f)

  • 使用beginText()标记文本开始,使用showText(String text)设置页眉页脚的显示内容,使用endText()标记文本结束。

     以上示例代码读取C盘下的first.pdf文档进行编辑,为其添加页眉,并在第二页添加页脚,最终修改完成的文件以first_pre.pdf文件输出。

分享到:
评论

相关推荐

    java创建和解析PDF

    首先,我们来看如何使用Java创建PDF文件。通常,我们可以借助Apache PDFBox、iText或 Flying Saucer 这样的第三方库。以Apache PDFBox为例,它提供了丰富的API用于创建PDF文档。以下是一个简单的创建PDF文件的步骤:...

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

    1. **PDF文档创建**:OpenPDF可以让你从零开始创建PDF文档,设置页面大小、边距、方向等属性。同时,它支持添加文本、图像、表格、图形和超链接到PDF页面上,使得生成复杂的PDF文档变得简单。 2. **文本格式化**:...

    Java创建和填充PDF表单域方法

    以下是一个使用Free Spire.PDF for Java创建和填充PDF表单域的示例代码片段: ```java import java.awt.*; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import com.spire.pdf.FileFormat; ...

    java使用itext实现pdf文件下载

    Itext提供了一系列的API,可以方便地创建PDF文档的各个元素,如文本、图像、表格等。在项目中引入Itext依赖,通常使用Maven或Gradle进行管理,例如在Maven的pom.xml中添加如下依赖: ```xml <groupId>...

    【Java】基于Pdfbox解析PDF文档中指定位置的文字和图片

    我们可以使用PDFBox开发可以创建,转换和操作PDF文档的Java程序。PDFBox的主要功能: Extract Text – 使用PDFBox,您可以从PDF文件中提取Unicode文本。 Split & Merge – 使用PDFBox,您可以将单个PDF文件分成多个...

    JavaPDF操作类库API_Free Spire.PDF for Java_5.1.0

    1.功能:该API为适用于Java平台下,通过后端程序代码调用API接口操作PDF文档,可实现如下功能: 1.1 文档转换:PDF转图片/Word/SVG/XPS/HTML/XPS/TIFF、图片转PDF 1.2 文档操作:文档创建、合并、拆分、压缩、复制...

    java 创建和读取PDF例子

    1. **库的选择**:Java中创建PDF文件,通常会用到第三方库,如iText、Apache PDFBox和 Flying Saucer。这里我们以iText为例,它是一个强大的PDF处理库,提供API来创建、修改和解析PDF文档。 2. **添加依赖**:首先...

    使用java生成pdf文件

    在本例中,我们看到使用的是 `iText` 库,这是一个强大的 Java 库,专门用于创建和修改 PDF 文档。以下是 `iText` 的核心概念和使用方法的详细解释: 1. **Document 对象**:`Document` 是 iText 中的基本容器,...

    java读取pdf文件属性

    PDFBox可以用来创建新的PDF文档,从现有的PDF文档中提取文本,提取元数据(如作者、标题、主题、关键词等),还可以用来渲染PDF页面到图像,以及对PDF文档进行加密和解密等操作。 ### 三、读取PDF元数据的步骤 ###...

    java操作Pdf文档详情

    在Java中,处理PDF文档是一项常见的任务,包括读取、修改、添加内容以及删除页面等操作。本篇文章将深入探讨如何在Java环境中实现对PDF文档的高效操作。 首先,我们需要引入一个可靠的库来支持PDF处理。Apache ...

    java操作pdf,pdf-demo

    本项目“java操作pdf,pdf-demo”就是基于Java实现的PDF操作示例,它可以帮助开发者了解如何在Java环境下与PDF文档进行交互。 首先,让我们了解一些关键的Java库,它们是处理PDF文档的基础: 1. Apache PDFBox:...

    java使用pdfbox打印PDF

    在Java开发中,有时我们需要处理PDF文档,例如打印PDF文件。在这种情况下,原生的Java API可能不提供全面的支持,特别是在兼容各种打印机方面。为了解决这个问题,我们可以借助开源库如PDFBox。在这个场景中,我们...

    java Excel文件转PDF文件

    总结一下,使用Java将Excel文件转换为PDF,主要涉及Apache POI库来处理Excel数据,以及iText库来创建PDF文档。通过创建一个Java类,读取Excel文件,然后使用iText将数据逐行写入PDF,即可完成转换。注意处理各种...

    java操作pdf文件

    在Java编程环境中,处理PDF(Portable Document Format)文件是一项常见的任务,这主要涉及到读取、创建、编辑或打印PDF文档。在这个场景下,我们聚焦于使用iText库来实现Java报表打印。iText是一个强大的开源Java库...

    JAVA根据PDF模板生成PDF文件.rar

    在IT行业中,生成PDF文档是常见的需求,尤其是在Java Web应用中。这个压缩包"JAVA根据PDF模板生成PDF文件.rar"提供了实现这一功能的资源。主要包含一个Java类`PdfUtilsPic.java`,一个PDF模板文件`M8.pdf`,以及一个...

    java 操作PDF实例

    例如,可以使用`Document`对象来创建PDF结构,`Paragraph`和`Font`来设置文本样式,`Image`类处理图像,`PdfWriter`负责写入数据到PDF文件。此外,IText还提供了对PDF安全性和数字签名的支持,以及表格、列表和...

    java URL转PDF文件(完美支持中文)

    4. **创建PDF文档**:使用`com.itextpdf.text.Document`和`DocumentWriter`创建一个新的PDF文档对象。 5. **设置字体**:为了支持中文,你需要定义一个支持中文的字体,例如`com.itextpdf.text.pdf.Font`,可以从...

    Java 读取PDF文件

    Apache PDFBox是一个广泛使用的开源Java库,它可以方便地读取、创建和修改PDF文档。要使用PDFBox,你需要在项目中添加其依赖。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache....

    JAVA PDF JAVA PDF JAVA PDF

    在Java世界中,PDF(Portable Document Format)是一种广泛使用的文件格式,用于呈现文档,包括文本格式和图像,不受操作系统、硬件或软件的影响。本篇主要针对"JAVA PDF從0開始學習哦"这一主题,深入讲解如何在Java...

Global site tag (gtag.js) - Google Analytics