admin管理员组文章数量:1605193
之前在逛网站时看到一个需求:实现将PDF中文字,图片,样式等转成word,xls,html等多种格式。
于是便尝试做了一下,总结如下(只有最下面的能实现,其他都只是我的总结):
package com.lin.test;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;
import java.io.*;
public class PdfToWord {
public static void main(String[] args) {
try {
String pdfFile = "C:\\Users\\a\\Desktop\\滴滴出行行程报销单.pdf";
PDDocument doc = PDDocument.load(new File(pdfFile));
// 获取PDF页数
int pageNumber = doc.getNumberOfPages();
String pfdName = pdfFile.substring(0, pdfFile.lastIndexOf(".")) + ".doc";
FileOutputStream fos = new FileOutputStream(pfdName);
Writer writer = new OutputStreamWriter(fos, "utf-8");
// PDF文本剥离器
PDFTextStripper stripper = new PDFTextStripper();
stripper.setSortByPosition(true);
stripper.setStartPage(1);
stripper.setEndPage(pageNumber);
stripper.writeText(doc,writer);
writer.close();
doc.close();
System.out.println("PDF转换WORD成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在开始时我是使用PDFTextStrippe转换格式,但发现这方法 只能转纯文本,图片和格式这些都是没有。。 毕竟名字已经写得很清楚了TextStrippe(文本剥离)
下面方法是 导出PDF内部图片
package com.lin.test;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class PdfToWord {
public static void main(String[] args) {
try {
String pdfFile = "C:\\Users\\a\\Desktop\\滴滴出行行程报销单.pdf";
PDDocument doc = PDDocument.load(new File(pdfFile));
List<PDPage> pages = doc.getDocumentCatalog().getAllPages();
int count = 0;
for (PDPage page : pages) {
PDResources resources = page.getResources();
Map<String, PDXObjectImage> images = resources.getImages();
if (images != null) {
Set<String> imageNames = images.keySet();
for (String imageName : imageNames) {
count++;
PDXObjectImage image = images.get(imageName);
String name = imageName + "_" + count;
image.write2file("C:\\Users\\a\\Desktop\\test\\" + name);
}
}
}
doc.close();
System.out.println("PDF导出内部图片成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
然后我便想将PDF中的图片全部导出来,然后再放到word中,但是这样的话文字和图片是没有办法对上,而且格式还是没有。。。
最后在网上瞎逛了,发现实现方法其实很简单的,只需要引入spire.pdf包就可以,转换方法几乎都在里面有:
package com.lin.test;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
public class Pdf4 {
public static void main(String[] args) {
try {
// PDF文件
String pdfFile = "C:\\Users\\a\\Desktop\\滴滴出行行程报销单.pdf";
PdfDocument pdf = new PdfDocument(pdfFile);
// DOC文件
String pfdName = pdfFile.substring(0, pdfFile.lastIndexOf(".")) + ".doc";
pdf.saveToFile(pfdName, FileFormat.DOC);
System.out.println("PDF导出内部图片成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
我这里直接简单转换格式而已,详细可以参考E-iceblue官网的帮助文档,里面有更多方法。。。
版权声明:本文标题:Java中PDF转WORD 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728478661a1159884.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论