如何制作【WPS】文档转换器?
不是要做一个单纯优秀的人,而是要做一个不可替代的人。 - - 阳墨余
一、实现思路
最近在学习
Springboot
框架,突发奇想的想利用springboot来实现Word
的这么一个功能,可是在网上找了许多,发现都不怎么齐全,或者说讲解的不是很清楚,如果是没有怎么接触Springboot
,或者说是不太了解Spire.Doc.jar
和Spire.Pdf.jar
这样的第三方库的人,在实现的时候就比较困难,毕竟很多东西都需要自己编写与实现,比如需要使用OCR
技术来扫描,获取word
文件。
1.1、注释
由于采用第三方库Iceblue官网 来实现
Word
文档,所以使用该库转化的话有一个限制,免费转化页数为11页。
Jar包下载
Spire.PDF for java 下载
Spire.Doc for java 下载
1.2、思路
/*
* PDF转化为Word(伪代码)
*/
//1、如果PDF文件的页数小于11,直接将PDF转化为Word
if(file.TotalPage<=11)
PDF => Word
/**
*2、当PDF的页数大于11时候,将该PDF转化为页数为11的子PDF文件,然后分别进行步骤 1
* 最后合并所有的word文件为一个word文件并输出到当前上传文件所在的路径上
*/
else
PDF => PDF[] files = PDF.split();
for i=0 to files.length - 1
(PDF)files[i] => Word
srcPathFile[i] = Word
//合并分片后的子word文件
MergeWord(srcPathFile)
1.3、第三方库的Springboot依赖
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.barcode.free</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.presentation.free</artifactId>
<version>2.6.1</version>
</dependency>
</dependencies>
二、知识梳理
在开始实现该功能之前,习惯性我们都来梳理一下实现该功能,我们需要了解、掌握哪些知识,一来让我们更加深入了解该功能涉及到的知识,增加我们的知识库,其二让我们在实现该功能的时候更加透明的了解其整个实现。
1、Java将Word文档转换为PDF
Spire.Doc
能够非常完美的识别中文字符并支持丰富的word
文档元素:文本框、页眉、页脚、项目符号和编号、表格、文本、超链接、水印、图片、形状等。
示例代码
import com.spire.doc.*;
public class WordToPDF{
public static void main(String[] args){
//加载word文档
Document document = new Document();
document.loadFromFile("Sample.docx");
//保存结果文档
document.saveToFile("./out/toPDF.pdf",fileFromat.PDF);
}
}
2、Java转换Word到PNG、 XPS、 XML、RTF等格式文档
Word
是一种很好的排版工具,我们用Word创建好文档后往往需要保存成Spire.Doc for Java
转换Word
文档到PNG
、XPS
、RTF
等格式文档。
示例代码
import com.spire.doc.Document;
import com.spire.doc.FileFromat;
import com.spire.doc.documents.ImageType;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ConvertWordToOtherFormats{
public static void main(String[] args) throw IOException{
//创建Document对象
Document doc = new Document;
//加载Word文档
doc.loadFromFile("c:\\users\\Administrator\\Desktop\\sample.docx");
//将指定页保存为BufferedImage
BufferedImage image = doc.saveToImages(0,ImageType.Bittmap);
//将图片数据保存为PNG格式文档
File file = new File("output/ToPNG.png");
ImageIO.write(image,"PNG",file);
//将word保存为SVG格式
doc.saveToFile("output/ToSVG.svg",FileFormat.SVG);
//将word保存为RTF格式
doc.saveToFile("output/ToRTF.rtf",FileFormat.Rtf);
//将Word转换为xps格式
doc.saveToFile("output/ToXML.xml",FileFormat.xml);
//将word保存为Txt格式
dox.saveToFile("output/ToTxt.txt",FileFormat.Txt);
}
}
3、Java将PDF转化为图片
Spire.PDF for JAVA在Java程序中将PDF转换成图片。并且Spire.PDF 能够非常完美的识别中文字符并将其转换为图片,支持的图片格式有Jpeg, Jpg, Png, Bmp, Tiff, Gif, EMF等。
示例代码
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import com.spire.pdf.PdfDocument;
import javax.imageio.ImageIO;
public class toImage {
public static void main(String[] args) throws IOException {
//加载PDF文件
PdfDocument doc = new PdfDocument();
doc.loadFromFile("Sample.pdf");
//保存PDF的每一页到图片
BufferedImage image;
for (int i = 0; i < doc.getPages().getCount(); i++) {
image = doc.saveAsImage(i);
File file = new File( String.format("ToImage-img-%d.png", i));
ImageIO.write(image, "PNG", file);
}
doc.close();
}
}
4、Java将 PDF转换为 HTML、Word、SVG、XPS等文件格式
Spire.PDF for Java
可以将HTML
、Word
、SVG
格式,以及将XPS
和Spire.PDF for Java
还支持将PDF/A
,将
示例代码
/**
*PDF转化为HTML
*/
//1,加载PDF文件
PdfDocumnet pdf = new PdfDocument();
pdf.loadFromFile("Input.pdf");
//2、保存文件为HTML格式
pdf.saveFile("ToHTML.html",FileFormat.HTML);
/**
* PDF转化为Word
*/
//1、加载PDF文件
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("Input.pdf");
//2、保存为Word文件格式
pdf.saveToFile("ToWord.docx",FileFormat.DOCX);
/**
* PDF 转化为SVG
*/
// 1、加载PDF文件
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("Input.pdf");
//2、保存为SVG格式
pdf.saveToFile("ToSVG.svg",FileFormat.SVG);
/**
* XPS与PDF互相转换
*/
//1、XPS -> PDF
PdfDocumentFile pdf = new PdfDocument();
pdf.loadFromXPS("ToXPS.xps");
pdf.saveToFile("ToPDF.pdf",FileFormat.PDF);
//2、PDF -> XPS
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("Input.pdf");
pdf.saveToFile("ToXPS.xps",FileFormat.XPS);