可以用PDFBox
至于生成word,用POI;HTML的话,自己解析就可以了
PDFBox是一个开源的可以操作PDF文档的Java PDF类库。它可以创建一个新PDF文档,操作现有PDF文档并提取文档中的内容。
它具有以下特性:
1.将一个PDF文档转换输出为一个文本文件。
2.可以从文本文件创建一个PDF文档。
3.加密/解密PDF文档。
4.向已有PDF文档中追加内容。
5.可以从PDF文档生成一张图片。
6.可以与Jakarta Lucene搜索引擎的整合
B. 如何用java将pdf文件转换成word文件
需要用到插件jacob,自己去下载吧。
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class D2P {
private ActiveXComponent wordCom = null;
private Object wordDoc = null;
private final Variant False = new Variant(false);
private final Variant True = new Variant(true);
/** *//** *//** *//**
* 打开word文档
*
* @param filePath
* word文档
* @return 返回word文档对象
*/
public boolean openWord(String filePath) {
//建立ActiveX部件
wordCom = new ActiveXComponent("Word.Application");
try {
//返回wrdCom.Documents的Dispatch
Dispatch wrdDocs = wordCom.getProperty("Documents").toDispatch();
//调用wrdCom.Documents.Open方法打开指定的word文档,返回wordDoc
wordDoc = Dispatch.invoke(wrdDocs, "Open", Dispatch.Method,
new Object[] { filePath }, new int[1]).toDispatch();
return true;
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
/** *//** *//** *//**
* 关闭word文档
*/
public void closeWord() {
//关闭word文件
wordCom.invoke("Quit", new Variant[] {});
}
/** *//** *//** *//**
* * 将word文档打印为PS文件后,使用Distiller将PS文件转换为PDF文件 *
*
* @param sourceFilePath
* 源文件路径 *
* @param destinPSFilePath
* 首先生成的PS文件路径 *
* @param destinPDFFilePath
* 生成PDF文件路径
*/
public void docToPDF(String sourceFilePath, String destinPSFilePath,
String destinPDFFilePath) {
if (!openWord(sourceFilePath)) {
closeWord();
return;
}
//建立Adobe Distiller的com对象
ActiveXComponent distiller = new ActiveXComponent(
"PDFDistiller.PDFDistiller.1");
try {
//设置当前使用的打印机,我的Adobe Distiller打印机名字为"Adobe PDF"
wordCom.setProperty("ActivePrinter", new Variant("MS Publisher Color Printer"));
//设置printout的参数,将word文档打印为postscript文档。目前只使用了前5个参数,如果要使用更多的话可以参考MSDN的office开发相关api
//是否在后台运行
Variant Background = False;
//是否追加打印
Variant Append = False;
//打印所有文档
int wdPrintAllDocument = 0;
Variant Range = new Variant(wdPrintAllDocument);
//输出的postscript文件的路径
Variant OutputFileName = new Variant(destinPSFilePath);
Dispatch.callN((Dispatch) wordDoc, "PrintOut", new Variant[] {
Background, Append, Range, OutputFileName });
System.out.println("由word文档打印为ps文档成功!");
//调用Distiller对象的FileToPDF方法所用的参数,详细内容参考Distiller Api手册
//作为输入的ps文档路径
Variant inputPostScriptFilePath = new Variant(destinPSFilePath);
//作为输出的pdf文档的路径
Variant outputPDFFilePath = new Variant(destinPDFFilePath);
//定义FileToPDF方法要使用adobe pdf设置文件的路径,在这里没有赋值表示并不使用pdf配置文件
Variant PDFOption = new Variant("");
//调用FileToPDF方法将ps文档转换为pdf文档
Dispatch.callN(distiller, "FileToPDF", new Variant[] {
inputPostScriptFilePath, outputPDFFilePath, PDFOption });
System.out.println("由ps文档转换为pdf文档成功!");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
closeWord();
wordCom=null;
//释放在程序线程中引用的其它com,比如Adobe PDFDistiller
ComThread.Release();
}
}
public static void main(String[] argv) {
D2P d2p = new D2P();
d2p.docToPDF("d:/12.doc", "d:/1p.ps", "d:/1p.pdf");
//这里是你建一个叫12.doc的word文档,生成的文档将在D盘下
//1p.ps和1p.pdf(这是我们要的)
}
}
C. java读取pdf文件的时候出现异常
当时想把pdf中的文字读取成txt文件,方便我的手机阅读,写了以下代码,解决了这个小问题
所需要的包:PDFBox-0.7.3.zip 解压文件夹下:external下的全部,lib文件下的PDFBox-0.7.3.jar
注意:只能读取文本格式的pdf,如果pdf为图片格式的,本程序不能使用!
程序介绍:本程序将文本格式pdf中的文字读取出来,存入与pdf文件同文件名的TXT文本文档。
支持中文,但是在某些文字上会出现乱码.
package com.small;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;
public class Pdfreader {
public void readFdf(String file) throws Exception {
// 是否排序
boolean sort = false;
// pdf文件名
String pdfFile = file;
// 输入文本文件名称
String textFile = null;
// 编码方式
String encoding = "GB2312";
// 开始提取页数
int startPage = 1;
// 结束提取页数
int endPage = Integer.MAX_VALUE;
// 文件输入流,生成文本文件
Writer output = null;
// 内存中存储的PDF Document
PDDocument document = null;
try {
try {
// 首先当作一个URL来装载文件,如果得到异常再从本地文件系统//去装载文件
URL url = new URL(pdfFile); //注意参数已不是以前版本中的URL.而是File。
document = PDDocument.load(pdfFile);
// 获取PDF的文件名
String fileName = url.getFile();
// 以原来PDF的名称来命名新产生的txt文件
if (fileName.length() > 4) {
File outputFile = new File(fileName.substring(0, fileName
.length() - 4)
+ ".txt");
textFile = outputFile.getName();
}
} catch (MalformedURLException e) {
// 如果作为URL装载得到异常则从文件系统装载 //注意参数已不是以前版本中的URL.而是File。
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 = null;
stripper = new PDFTextStripper();
// 设置是否排序
stripper.setSortByPosition(sort);
// 设置起始页
stripper.setStartPage(startPage);
// 设置结束页
System.out.print(stripper.getText(document));
stripper.setEndPage(endPage);
// 调用PDFTextStripper的writeText提取并输出文本
stripper.writeText(document, output);
} finally {
if (output != null) {
// 关闭输出流
output.close();
}
if (document != null) {
// 关闭PDF Document
document.close();
}
}
} /**
* @param args
*/
public static void main(String[] args) {
Pdfreader pdfReader = new Pdfreader();
try {
// 读取pdf文件
pdfReader.readFdf("d:\\2\\D.pdf");
} catch (Exception e) {
e.printStackTrace();
}
}
}
http://hi..com/websays/blog/item/bb5a9daa950dc1baca130c7f.html
D. java核心技术书pdf的能转换成txt不
pdf是照片直接压在一起形成的,也就是打包的图片,所以是无法直接转换为txt的,你要是不怕麻烦的话,可以用office 2003 完整版里面的OCR识别器来识别吧
要将它们变成txt格式的文本。需要以下必要软件。
1.office 2003 完整版。记住,必须是完整版的,大约500M左右。(因为只有它才有虚拟打印机和OCR识别功能。)
2.pdf\pdg阅读软件。
3.虚拟打印机软件。
4.一本pdf或pdg电子书。
现在,我们开始转变。
1.安装pdf或pdg阅读软件。(如果你下载的是pdg电子书,那么你就安装pdg阅读软件。如果是pdf格式的电子书,你就安装pdf阅读软件。总之,你要将你的电子书用相关的软件打开。)
2.安装,office 2003完整版。安装office 2003完整版时,电脑会问你是否重启计算机,如果是你的私人计算机,那么你就重启你的计算机,安装上office 2003完整版也不错。但如果你是在网吧里上网的话,你就不重启电脑,因为网吧里一般都安装有还原精灵。一重启,电脑上的数据就没有了。所以这里你不一定要重启,但是你必须安装(虚拟打印机)这个软件。一定要安装哦!
3.用你的阅读器打开你下载的电子书。
4.打开电子书后,点击——文件——打印(电脑将用你的虚拟打印机打印你下载的电子书,打印完后,它会自动生成一个文档。)
5.在这个自动生成的文档里边,你点击——工具——发送到word文档。在对话框里完成相关的设置。电脑将用office2003的OCR功能将你打印的电子书的字自动生成word文档。
6.在这个word文档里面,你可以将里面的内容修改、删除、复制,就可以将你下载的电子书变成txt纯文本了。
7.用office 2003的OCR功能识别的字,有一定的乱码,这是一定的,你只需将乱码的删掉,错误的改改,就大功告成了。
8.在这里,我们主要运用的是office 2003的虚拟打印机和它的OCR识别功能。(再次提醒,office 2003必须是完整版的。)这儿有一个比较好的pdg阅读器。叫什么老马的,到网上搜搜就应该能找到,比那个超星阅读器强多了。那个超星限制太多,不好。pdf内格式的阅读软件比较多,很好找的。
9.在虚拟打印机打印和OCR识别功能的时候,里面的设置你自己好好看看,应该没什么问题的。