java有很多可以操作pdf的框架,pdfbox和itext就是其中的两种

pdfbox有如下作用

提取文本,包括Unicode字符。和Jakarta Lucene等文本搜索引擎的整合过程十分简单。加密/解密PDF文档。

从PDF和XFDF格式中导入或导出表单数据。

向已有PDF文档中追加内容。

将一个PDF文档切分为多个文档。

覆盖PDF文档。

下面是一个使用pdfbox的测试程序

public class PdfBoxTest {

public void getText(String file) throws Exception{

//是否排序

boolean sort = false;

//pdf文件名

String pdfFile = file;

//输入文本文件名称

String textFile = null;

//编码方式

String encoding = "UTF-8";

//开始提取页数

int startPage = 1;

//结束提取页数

int endPage = Integer.MAX_VALUE;

//文件输入流,输入文本文件

Writer output = null;

//内存中存储的PDF Document

PDDocument document = null;

try{

try{

//首先当作一个URL来加载文件,如果得到异常再从本地系统装载文件

URL url = new URL(pdfFile);

document = PDDocument.load(url);

String fileName = url.getFile();

if(fileName.length() > 4){

//以原来pdf名称来命名新产生的txt文件

File outputFile = new File(fileName.substring(0, fileName.length()-4) + ".txt");

textFile = outputFile.getName();

}

}catch(Exception e){

//如果作为URL装载得到异常则从文件系统装载

document = PDDocument.load(pdfFile);

if(pdfFile.length() > 4){

textFile = pdfFile.substring(0, pdfFile.length() - 4) + ".txt";

}

}

//文件输出流,写入文件到textFile

output = new OutputStreamWriter(new FileOutputStream(textFile),encoding);

//PDFTextStripper来提取文本

PDFTextStripper stripper = new PDFTextStripper();

//设置是否排序

stripper.setSortByPosition(sort);

//设置起始页

stripper.setStartPage(startPage);

//设置结束页

stripper.setEndPage(endPage);

//调用PDFTextStripper的writeText提取并输出文本

stripper.writeText(document, output);

}finally{

if(output != null){

output.close();

}

if(document != null){

document.close();

}

}

}

/** *//**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

PdfBoxTest test = new PdfBoxTest();

try{

test.getText("E://test.pdf");

}catch(Exception e){

e.printStackTrace();

}

}

} iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

下面是一个使用itext生成pdf的例子

public class ITextTest {

public static void main(String args[]){

writePdf();

}

public static void writePdf(){

Document document = new Document();

try {

PdfWriter.getInstance(document, new FileOutputStream("Helloworld.pdf"));

} catch (DocumentException e) {

e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.

} catch (FileNotFoundException e) {

e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.

}

document.open();

try {

document.add(new Paragraph("Hello World"));

} catch (DocumentException e) {

e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.

}

document.close();

}

}

默认的iText字体设置不支持中文字体,需要下载远东字体包iTextAsian.jar,否则不能往PDF文档中输出中文字体。通过下面的代码就可以在文档中使用中文了:

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

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

Paragraph pragraph=new Paragraph("你好", FontChinese);

总结一下,本文采用pdfbox和itext分别演示了如何读取pdf和生成pdf的简单方法。

java 操作pdf_java操作PDF(PDFBOX和Itext框架)相关推荐

  1. java 修改pdf_Java 操作PDF书签详解 - 添加、修改、读取和删除

    目录前言 Free Spire.PDF for Java库概述和安装 给PDF文档添加书签 修改现有书签 设置PDF文档打开时展开或折叠书签 读取书签标题 从PDF文档中删除书签 前言 书签在一些PD ...

  2. java 绘制pdf_Java 在PDF文档中绘制图形

    本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...

  3. java读取pdf_Java 读取PDF中的文本和图片的方法

    本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取. 使用工具:Free Spire.PDF for Java ...

  4. java打印pdf_java操作打印机打印pdf文件

    小弟近来用java开发系统需实现一个程序操控打印机直接打印pdf文档的功能,查阅API丛书后编写的代码如下: import javax.print.*; import javax.print.attr ...

  5. java 操作pdf_java操作pdf

    新项目里有个pdf的生成文件,折腾了两天,终于可以 用了,现在 记下来,方便后来者. 有些代码重复的地方,大家凑合着看了,项目太急,也不想优化了. 里面大部分地方都做了注释,一看就会明白了. 废话不多 ...

  6. java读取pdf_java读取pdf总结

    第三方软件 1.pdfbox PDFBox 0.7.3.PDFBox是一个开源的对pdf文件进行操作的库. PDFBox-0.7.3.jar加入classpath.同时FontBox1.0.jar加入 ...

  7. java生成pdf_Java实现PDF文件生成并且打印pdf文件 demo

    ## Java实现PDF生成并且打印pdf文件(附demo) #### 目录: 0. 效果预览 1. 准备环境 2. Java如何调用打印机进行打印 3. Java如何生成pdf打印文件 4. 实现p ...

  8. java response pdf_JAVA导出pdf实例

    一.直接导出成PDF Java代码 1. import java.io.FileNotFoundException; 2. import java.io.FileOutputStream; 3. 4. ...

  9. Java awt pdf_java生成pdf

    简述 生成pdf思路主要是分两种情况,情况一:如果模板里面不需要数组参数,那么可以根据html模板直接生成pdf:情况二:如果模板里面需要数组参数,需要先利用freemarker生成html模板,再根 ...

最新文章

  1. INSTALL_FAILED_TEST_ONLY
  2. SASE — Overview
  3. log4j.xml 简介
  4. 布局管理器 2----- 表格布局
  5. 从零开始的51单片机——(1)点亮LED
  6. 哈尔滨工业大学-数据库系统(基本知识与关系模型2)
  7. 在Windows下编译FFmpeg详细说明
  8. java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #4)
  9. 手把手教你写个小程序定时器管理库
  10. mysql的实现类注解_Mybaits (XML方式:无需在写Dao的实现类 注解方式:Dao的实现类与Mapper都可以不写 重点理解)...
  11. Simulink之三相桥式半控整流电路
  12. Visual C++ 设置适合自己的解决方案目录结构
  13. 代码一致性 java_java实现一致性hash算法实例代码
  14. C# await和async
  15. java awt addMouseListener 双击事件
  16. 工行u盾显示316_工行U盾无法被电脑识别(方法全集)
  17. 利用Python turtle库制作夜空
  18. Occupancy Map(Occupancy Grid)的更新
  19. 使用WarZone联机对战横扫千军(TA)指南
  20. 酒桌小游戏喝酒小程序

热门文章

  1. 追加股东为被执行人的情形
  2. 水力学(一、液体的物理性质和作用力)
  3. VIVO手机下载二维码APP
  4. 手写输入法实现过程中的问题
  5. Android中自定义ScrollView的滑动监听事件,并在滑动时渐变标题栏背景颜色
  6. 【数据分析】:数据分析三大思路及方法
  7. 用创新思维实现跨越式发展
  8. 解决office稿纸加载项,打开word老弹出窗口的问题
  9. Varnish 介绍和部署
  10. 投资合伙人股份分配_合伙人股权分配,你必须知道的三大要点!