admin管理员组文章数量:1605136
通过Spire-java实现word和pdf文件相互转换
- 导入依赖包
- iceBlue官网
- 简介
- 接口文档
- 两个工具类
- WordConvertUtils
- PdfConvertUtils
导入依赖包
spire的office依赖包包含了doc和pdf等一些相关依赖,所以只导入这个包即可,而且还避免了依赖包版本冲突的问题
<!-- 设置iceblue的仓库 -->
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<!-- 这个是官方免费版本的依赖包,无水印版本 -->
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
前提:如何引入指定的依赖包???
地址:maven仓库
iceBlue官网
简介
iceBlue研发的工具是我觉得做word、pdf相关文件格式转换比较好的,里面除了word和pdf互转之外,还可以将word转为execl、image、html、加密的pdf等等,当然pdf也可以转为其类似的文件格式。不过它分为两个版本:收费/免费,使用免费版本的有页数的限制但是转换格式出来的文件没有官方水印,用于个人来说足以满足需求
接口文档
ICEBLUE接口文档
两个工具类
WordConvertUtils
public class WordConvertUtils {
// pdf文件的路径
static final String source = "C:\\Users\\RichZhou\\Desktop\\sample.docx";
// 需要转为指定格式的存放路径
static final String pdfDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙pdf.pdf";
static final String imageDestination = "C:\\Users\\RichZhou\\Desktop\\";
static final String htmlDestination = "C:\\Users\\RichZhou\\Desktop\\toHtml.html";
public static void main(String[] args) {
// docx 转为 pdf
docxConvertPdf(source, pdfDestination);
// docx 转为 image
docxConvertImage(source, imageDestination);
// docx 转为 html
docxConvertHtml(source, htmlDestination);
}
public static void docxConvertPdf(String source, String pdfDestination) {
try {
// 创建doc对象
Document doc = new Document();
// 加载docx文件
doc.loadFromFile(source);
// 创建ToPdfParameterList对象
ToPdfParameterList ppl = new ToPdfParameterList();
// 在PDF文档中嵌入所有字体
ppl.isEmbeddedAllFonts(true);
// 删除超链接并保留字符格式
ppl.setDisableLink(false);
// 设置输出图像质量为原始图像的40%,默认设置为80%。
doc.setJPEGQuality(40);
// 转为pdf
doc.saveToFile(pdfDestination, ppl);
System.out.println("docx文件转为pdf成功...");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void docxConvertImage(String source, String imageDestination) {
try {
// 创建doc对象
Document doc = new Document();
// 加载docx文件
doc.loadFromFile(source);
// 将整个文档转换为单独的缓冲图像
BufferedImage[] images = doc.saveToImages(ImageType.Bitmap);
// 循环遍历图片数组
for (int i = 0; i < images.length; i++) {
// 获取图片
BufferedImage image = images[i];
// 用不同的颜色空间重写图像
BufferedImage newImg = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
newImg.getGraphics().drawImage(image, 0, 0, null);
// 将图片存入指定文件中
File file = new File(imageDestination + String.format(("Image-%d.jpg"), i));
ImageIO.write(newImg, "JPEG", file);
// ImageIO.write(newImg, "PNG", file);
// ImageIO.write(newImg, "SVG", file);
System.out.println("docx文件转为图片成功...");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void docxConvertHtml(String source, String htmlDestination) {
try {
// 创建doc对象
Document doc = new Document();
// 加载docx文件
doc.loadFromFile(source);
// 转为html
doc.saveToFile(htmlDestination, FileFormat.Html);
System.out.println("docx文件转为html成功...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
word不仅仅只能转为上述代码中的格式,还有的格式在接口文档中有,自行查看
PdfConvertUtils
public class PdfConvertUtils {
// pdf文件的路径
static final String source = "C:\\Users\\RichZhou\\Desktop\\敖丙.pdf";
// 需要转为指定格式的存放路径
static final String docDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙doc.doc";
static final String docxDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙docx.docx";
static final String xlsxDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙xlsx.xlsx";
static final String imageDestination = "C:\\Users\\RichZhou\\Desktop";
static final String htmlDestination = "C:\\Users\\RichZhou\\Desktop\\ToHtml.html";
public static void main(String[] args) {
// 转为doc
pdfConvertDoc(source, docDestination);
// 转为docx
pdfConvertDocx(source, docxDestination);
// 转为xlsx
pdfConvertXlsx(source, xlsxDestination);
// 转为image
pdfConvertImage(source, imageDestination);
// 转为html
pdfConvertHtml(source, htmlDestination);
}
public static void pdfConvertDoc(String source, String destination) {
try {
//创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
//加载pdf文件
pdf.loadFromFile(source);
//转为doc
pdf.saveToFile(destination, FileFormat.DOC);
System.out.println("pdf转为doc文件成功...");
pdf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void pdfConvertDocx(String source, String destination) {
try {
//创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
//加载pdf文件
pdf.loadFromFile(source);
//转为docx
pdf.saveToFile(destination, FileFormat.DOCX);
System.out.println("pdf转为docx文件成功...");
pdf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void pdfConvertXlsx(String source, String destination) {
try {
//创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
//加载pdf文件
pdf.loadFromFile(source);
//转为xlsx
pdf.saveToFile(destination, FileFormat.XLSX);
System.out.println("pdf转为excel文件成功...");
pdf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void pdfConvertImage(String source, String destination) {
try {
//创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
//加载pdf文件
pdf.loadFromFile(source);
//循环pdf页
for (int i = 0; i < pdf.getPages().getCount(); i++) {
//Convert all pages to images and set the image Dpi
BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap, 500, 500);
//Save images to a specific folder as a .png files
File file = new File(destination + "/" + String.format(("ToImage-img-%d.png"), i));
ImageIO.write(image, "PNG", file);
System.out.println("pdf转为image图片成功...");
}
pdf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void pdfConvertHtml(String source, String destination) {
try {
//创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
//加载pdf文件
pdf.loadFromFile(source);
//转为html格式
pdf.saveToFile(destination, FileFormat.HTML);
System.out.println("pdf转化html格式成功...");
}catch (Exception e) {
e.printStackTrace();
}
}
}
pdf不仅仅只能转为上述代码中的格式,还有的格式在接口文档中有,自行查看
创作不易,希望大家能够点个赞,也希望大家能帮忙指出问题,一起进步!!!谢谢大家~~
版权声明:本文标题:通过Spire-java实现word和pdf文件相互转换 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728479904a1159999.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论