java 操作pdf_java操作PDF(PDFBOX和Itext框架)
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框架)相关推荐
- java 修改pdf_Java 操作PDF书签详解 - 添加、修改、读取和删除
目录前言 Free Spire.PDF for Java库概述和安装 给PDF文档添加书签 修改现有书签 设置PDF文档打开时展开或折叠书签 读取书签标题 从PDF文档中删除书签 前言 书签在一些PD ...
- java 绘制pdf_Java 在PDF文档中绘制图形
本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...
- java读取pdf_Java 读取PDF中的文本和图片的方法
本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取. 使用工具:Free Spire.PDF for Java ...
- java打印pdf_java操作打印机打印pdf文件
小弟近来用java开发系统需实现一个程序操控打印机直接打印pdf文档的功能,查阅API丛书后编写的代码如下: import javax.print.*; import javax.print.attr ...
- java 操作pdf_java操作pdf
新项目里有个pdf的生成文件,折腾了两天,终于可以 用了,现在 记下来,方便后来者. 有些代码重复的地方,大家凑合着看了,项目太急,也不想优化了. 里面大部分地方都做了注释,一看就会明白了. 废话不多 ...
- java读取pdf_java读取pdf总结
第三方软件 1.pdfbox PDFBox 0.7.3.PDFBox是一个开源的对pdf文件进行操作的库. PDFBox-0.7.3.jar加入classpath.同时FontBox1.0.jar加入 ...
- java生成pdf_Java实现PDF文件生成并且打印pdf文件 demo
## Java实现PDF生成并且打印pdf文件(附demo) #### 目录: 0. 效果预览 1. 准备环境 2. Java如何调用打印机进行打印 3. Java如何生成pdf打印文件 4. 实现p ...
- java response pdf_JAVA导出pdf实例
一.直接导出成PDF Java代码 1. import java.io.FileNotFoundException; 2. import java.io.FileOutputStream; 3. 4. ...
- Java awt pdf_java生成pdf
简述 生成pdf思路主要是分两种情况,情况一:如果模板里面不需要数组参数,那么可以根据html模板直接生成pdf:情况二:如果模板里面需要数组参数,需要先利用freemarker生成html模板,再根 ...
最新文章
- INSTALL_FAILED_TEST_ONLY
- SASE — Overview
- log4j.xml 简介
- 布局管理器 2----- 表格布局
- 从零开始的51单片机——(1)点亮LED
- 哈尔滨工业大学-数据库系统(基本知识与关系模型2)
- 在Windows下编译FFmpeg详细说明
- java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #4)
- 手把手教你写个小程序定时器管理库
- mysql的实现类注解_Mybaits (XML方式:无需在写Dao的实现类 注解方式:Dao的实现类与Mapper都可以不写 重点理解)...
- Simulink之三相桥式半控整流电路
- Visual C++ 设置适合自己的解决方案目录结构
- 代码一致性 java_java实现一致性hash算法实例代码
- C# await和async
- java awt addMouseListener 双击事件
- 工行u盾显示316_工行U盾无法被电脑识别(方法全集)
- 利用Python turtle库制作夜空
- Occupancy Map(Occupancy Grid)的更新
- 使用WarZone联机对战横扫千军(TA)指南
- 酒桌小游戏喝酒小程序