java 写入pdf文件_读取.doc文件内容并在java中写入pdf文件

本文档介绍了如何使用Apache POI读取MS Office .doc文件,包括文本和表格,并利用iText库将内容写入PDF。在尝试读取文档中的图像时遇到问题,代码无法正确识别并插入图像。问题在于`picture.hasPicture(run)`条件不满足,且在处理表格时出现异常。寻求解决方案。
摘要由CSDN通过智能技术生成

我正在编写一个java代码,利用Apache-poi读取ms-office .doc文件和itext jar API来创建和写入pdf文件 . 我已经读完了.doc文件中打印的文本和表格 . 现在我正在寻找一种能够读取文档中所写图像的解决方案 . 我编写如下代码来读取文档文件中的图像 . 为什么这段代码不起作用 .

public static void main(String[] args) {

POIFSFileSystem fs = null;

Document document = new Document();

WordExtractor extractor = null ;

try {

fs = new POIFSFileSystem(new FileInputStream("C:\\DATASTORE\\tableandImage.doc"));

HWPFDocument hdocument=new HWPFDocument(fs);

extractor = new WordExtractor(hdocument);

OutputStream fileOutput = new FileOutputStream(new File("C:/DATASTORE/tableandImage.pdf"));

PdfWriter.getInstance(document, fileOutput);

document.open();

Range range=hdocument.getRange();

String readText=null;

PdfPTable createTable;

CharacterRun run;

PicturesTable picture;

for(int i=0;i

Paragraph par = range.getParagraph(i);

readText=par.text();

if(!par.isInTable()) {

if(readText.endsWith("\n")) {

readText=readText+"\n";

document.add(new com.itextpdf.text.Paragraph(readText));

} if(readText.endsWith("\r")) {

readText += "\n";

document.add(new com.itextpdf.text.Paragraph(readText));

}

run =range.getCharacterRun(i);

picture=hdocument.getPicturesTable();

if(picture.hasPicture(run)) {

//if(run.isSpecialCharacter()) {

Picture pic=picture.extractPicture(run, true);

byte[] picturearray=pic.getContent();

com.itextpdf.text.Image image=com.itextpdf.text.Image.getInstance(picturearray);

document.add(image);

}

} else if (par.isInTable()) {

Table table = range.getTable(par);

TableRow tRow1= table.getRow(0);

int numColumns=tRow1.numCells();

createTable=new PdfPTable(numColumns);

for (int rowId=0;rowId

TableRow tRow = table.getRow(rowId);

for (int cellId=0;cellId

TableCell tCell = tRow.getCell(cellId);

PdfPCell c1 = new PdfPCell(new Phrase(tCell.text()));

createTable.addCell(c1);

}

}

document.add(createTable);

}

}

}catch(IOException e) {

System.out.println("IO Exception");

e.printStackTrace();

}

catch(Exception exep) {

exep.printStackTrace();

}finally {

document.close();

}

}

问题是:1 . 条件if(picture.hasPicture(run))不满意但文件有jpeg图像 .

我在阅读 table 时遇到异常 .

java.lang.IllegalArgumentException:此段落不是表格中第一个位于org.apache.poi.hwpf.usermodel.Range.getTable(Range.java:876)的pagecode.ReadDocxOrDocFile.main(ReadDocxOrDocFile.java:113)

任何人都可以帮我解决问题 . 谢谢 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值