1、环境设置
先导入Jar包
方法一:创建maven项目,然后添加以下代码来配置pom.xml 文件,再点击Import Changes将 JAR文件导入到应用程序中。
<repositories>
<repository>
<id>public</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
方法二:手动导入Jar包,可以从Index of /e-iceblue/spire.office.free下载Free Spire.Office for Java,下载并进行解压;然后在IDEA中创建一个新项目,依次点击“文件”(File),“项目结构”(Project Structure),“组件”(Modules),“依赖项”(Dependencies),再点击右方绿色“+”下的第一个选项“JAR文件或路径”(JARs or Directories),找到解压后的文件,点击确认,将其导入到项目中。
注:如果打Jar包发布,需将Jar包添加到项目根目录下新建lib文件夹,将Jar包复制到文件夹中,再将Jar包在pom.xml中引入。
示例:
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<scope>system</scope>
<version>5.3.1</version>
<systemPath>${project.basedir}/lib/spire.office.free-5.3.1.jar</systemPath>
</dependency>
2、代码示例:(仅供参考,完成的代码没贴出来,仅摘取涉及生成的部分)
import com.spire.doc.Document;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
public static void main(String[] args) {
//输出word文件路径和名称 (临时文件名,本次为测试,最好使用雪花算法生成,或者用uuid)
String fileName = UUID.randomUUID().toString() + ".docx";
//输出excel文件名称 (临时文件名,本次为测试,最好使用雪花算法生成,或者用uuid)
String fileName1 = UUID.randomUUID().toString().replaceAll("-", "") + ".xlsx";
//输出pdf文件路径和名称 (临时文件 尽可能保证文件名称的唯一性)
String pdfName = UUID.randomUUID().toString() + ".pdf";
//生成docx临时文件
File tempFile = null;
//生成转换后pdf临时文件
File pdfFile = null;
//生成docx临时文件
tempFile = new File(fileName);
//生成excel临时文件
tempFile1 = new File(fileName1);
/* word及excel文件内容的逻辑没写,这个根据自己的需求实现 */
//实现word文件转成pdf文件方法
pdfFile = testDocxToPdf(tempFile,pdfName);
//实现excel文件转成pdf文件方法
pdfFile = testExcelToPdf(tempFile1,pdfName);
}
/**
* 通过spire.office.free下的spire.doc.free 实现word转pdf
* @param tempPath 生成的docx临时文件
* @return
*/
public File testDocxToPdf(File tempPath,String pdfName) {
//生成pdf临时文件
File pdfFile = new File(pdfName);
try{
InputStream docxInputStream = null;
OutputStream outputStream = null;
// 原word地址
docxInputStream = new FileInputStream(tempPath);
// 转换后pdf生成地址
outputStream = new FileOutputStream(pdfFile);
//实例化Document类的对象
Document doc = new Document();
//加载Word
doc.loadFromStream(docxInputStream,FileFormat.Docx);
//保存为PDF格式
doc.saveToFile(outputStream, FileFormat.PDF);
// 自测的时候存饭的地址
//doc.saveToFile("D:\\data\\word模板转pdf.pdf", FileFormat.PDF);
// 关闭
outputStream.close();
// 关闭
docxInputStream.close();
}catch (Exception e){
throw new ServiceException("预览失败" + e.getMessage());
}
return pdfFile;
}
/**
* 通过spire.office.free下的spire.xls.free 实现excel转pdf
* @param tempPath 生成的excel临时文件
* @return
* 通过调用Workbook类的构造函数创建一个Workbook对象,并使用loadFromFile()方法从指定的路径
* 加载Excel文件。接着,通过调用setSheetFitToPage()方法设置工作表适应页面,以便更好地进行
* PDF文件转换。最后,使用saveToFile()方法将生成的PDF文件保存到指定的位置。
*/
public File testExcelToPdf(File tempPath,String pdfName) {
try{
//创建Workbook 实例并加载示例文档
Workbook workbook = new Workbook();
//获取excel临时文件位置(这测试用的是项目的根目录下,可以根据自己的需求调整)
workbook.loadFromFile("/temporary/"+tempPath.getName());
//转换时设置工作表适应页面
workbook.getConverterSetting().setSheetFitToPage(true);
//保存为PDF文档格式
workbook.saveToFile(pdfName, FileFormat.PDF);
}catch (Exception e){
throw new ServiceException("excel转pdf失败" + e.getMessage());
}
//生成pdf临时文件
File pdfFile = new File(pdfName);
return pdfFile;
}