Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4025033
  • 博文数量: 626
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 11080
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-23 13:08
文章分类

全部博文(626)

文章存档

2015年(72)

2014年(48)

2013年(506)

分类: Java

2013-10-16 09:55:47

一、介绍

Apache PDFbox是一个开源的、基于Java的、支持PDF文档生成的工具库,它可以用于创建新的PDF文档,修改现有的PDF文档,还可以从PDF文档中提取所需的内容。Apache PDFBox还包含了数个命令行工具。
Apache PDFbox于前不久发布了最新的1.8.2版。

二、特征

Apache PDFBox主要有以下特征:
1)文本提取:从PDF文档中提取文本。
2)合并&分割:可以把多个PDF文档合并成单个,也可以把单个PDF分拆成多个PDF文档。
3)表单填充:可以从PDF表单中提取数据,或者是填充PDF表单。
4)PDF/A验证:验证PDF文档是否满足PDF/A ISO标准。
5)PDF打印:把PDF文档输出到打印机——利用了Java的打印API。
6)PDF转换:可以把PDF文档转换成映像文件。
7)PDF创建:可以从头创建新的PDF文档。
8)集成Lucene搜索引擎:Lucene搜索引擎与PDF索引相集成。

三、开发实战

Apache PDFbox既然是PDF工具库,那么最重要的例子就是用它创建一个PDF文档。下面我们开始这一历程。

1. 创建Java项目

在Eclipse下创建一个Java项目,项目名为PDFboxDemo。

2. 下载PDFbox包

地址:
1)pdfbox-1.8.2.jar
地址:
说明:满足一般的PDF操作需求。
2)pdfbox-app-1.8.2.jar

说明:PDFbox的多个命令行的工具包。
3)fontbox-1.8.2.jar
地址:
说明:PDF使用的字库包
因此,本例使用1、3项即可。

3. 创建类文件

先创建chszs.pdf源码包,在此包内创建类文件CreatePDF.java。
  1. package chszs.pdf;  
  2.   
  3. //import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import org.apache.pdfbox.exceptions.COSVisitorException;  
  7. import org.apache.pdfbox.pdmodel.PDDocument;  
  8. import org.apache.pdfbox.pdmodel.PDPage;  
  9. import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;  
  10. import org.apache.pdfbox.pdmodel.font.PDFont;  
  11. //import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;  
  12. import org.apache.pdfbox.pdmodel.font.PDType1Font;  
  13.   
  14. public class CreatePDF {  
  15.     public static void main(String[] args) throws IOException{  
  16.         PDDocument document = new PDDocument();  
  17.         PDPage page = new PDPage();  
  18.         document.addPage(page);  
  19.           
  20. //      PDFont font = PDTrueTypeFont.loadTTF(document, new File("SIMSUN.TTC"));  
  21.         PDFont font = PDType1Font.HELVETICA_BOLD;  
  22.           
  23.         PDPageContentStream contentStream = new PDPageContentStream(document, page);  
  24.         contentStream.beginText();  
  25.         contentStream.setFont(font, 14);  
  26.         contentStream.moveTextPositionByAmount(100700);  
  27.         contentStream.drawString("Hello World");  
  28. //      contentStream.drawString("中文");  
  29.         contentStream.endText();  
  30.           
  31.         contentStream.close();  
  32.           
  33.         try {  
  34.             document.save("E:/test.pdf");  
  35.         } catch (COSVisitorException e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.         document.close();  
  39.     }  
  40. }  

执行程序,在磁盘E盘产生test.pdf文件。

总结说明:至Apache PDFbox 1.8.2版,仍然不支持中文PDF的创建,比iText的功能要弱很多。
阅读(5293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~