之前工作需要,查了挺多种Excel转PDF的方法,目前来看这种比较简单,因此分享一下。如果对您有帮助的话请关注下微信号:泽学Java,不定期分享学习心得和成长经验。
首先需要引入aspose-cells依赖包(2021.7月 通过maven引入报红,在maven repository中直接请求报404,因此直接引入jar包)
jar包地址:https://pan.baidu.com/s/1zDN76CdlqdLvyHhM6h_Eew
提取码:u8oo
使用过程中为了去除转化为PDF格式后的水印,需要进行权限认证,权限认证文件是license.xml,在云盘中也有。
import com.aspose.cells.License;
import com.aspose.cells.PdfSaveOptions;
import com.aspose.cells.Workbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
public class Excel2PdfUtil {
/** * excel文件导出为PDF文件 * @param Address 需要转化的Excel文件地址, * */
public static void excel2pdf(String Address) {
if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生
return;
}
try {
File pdfFile = new File("src/main/resources/template/肩关节功能评定量表.pdf"); // 输出路径
FileInputStream excelstream = new FileInputStream(Address);
Workbook wb = new Workbook(excelstream);// excel路径,这里是先把数据放进缓存表里,然后把缓存表转化成PDF
FileOutputStream fileOS = new FileOutputStream(pdfFile);
PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.setOnePagePerSheet(true);//参数true把内容放在一张PDF页面上;
wb.save(fileOS, pdfSaveOptions);
fileOS.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//获取认证,去除水印
public static boolean getLicense() {
boolean result = false;
try {
InputStream is = Excel2PdfUtil.class.getClassLoader().getResourceAsStream("license.xml");//这个文件应该是类似于密码验证(证书?),用于获得去除水印的权限
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}