永嘉网站制作系统,建设一个网站成本多少,wordpress显ip,搜索引擎营销原理是什么SpringBoot 项目 基于aspose相关jar包 将excel 转换成pdf 导出
1、依赖的jar包 #xff0c; jar获取链接 aspose相关三方jar #xff0c;下载解压后,在项目路径下建一个libs包#xff0c;然后将下图两个jar 拷贝至刚新建的libs目录中 2、pom.xml中加入maven引入 depend…SpringBoot 项目 基于aspose相关jar包 将excel 转换成pdf 导出
1、依赖的jar包 jar获取链接 aspose相关三方jar 下载解压后,在项目路径下建一个libs包然后将下图两个jar 拷贝至刚新建的libs目录中 2、pom.xml中加入maven引入 dependencygroupIdcom.aspose.cells/groupIdartifactIdcells-8.5.2 /artifactIdscopesystem/scopesystemPath${project.basedir}/src/main/resources/libs/aspose-cells-8.5.2.jar/systemPathversion8.5.2/version/dependencydependencygroupIdcom.aspose.words/groupIdartifactIdwords-15.8.0 /artifactIdscopesystem/scopesystemPath${project.basedir}/src/main/resources/libs/aspose-words-15.8.0.jar/systemPathversion15.8.0/version/dependency2.1 使用SpringBoot打包插件生成jar包的时候你会发现这个jar包不会被打进去进而出现错误。解决这个问题就需要在maven打包插件中配置一个includeSystemScope属性
buildfinalName${project.artifactId}/finalNamepluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfiguration!--设置为true以便把本地的system的jar也包括进来--includeSystemScopetrue/includeSystemScope/configuration/plugin/plugins/build3、编写转换工具类 如下
package com.by.excelToPdf;import com.aspose.cells.License;
import com.aspose.cells.PdfSaveOptions;
import com.aspose.cells.Workbook;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;public class PdfUtil {/*** excel 转 pdf* param is 输入流* return 输出流*/public static ByteArrayOutputStream excel2pdf(ByteArrayInputStream is) {ByteArrayOutputStream bos null;try {bos new ByteArrayOutputStream();// 验证 LicensegetLicense();Workbook wb new Workbook(is);PdfSaveOptions pdfSaveOptions new PdfSaveOptions();pdfSaveOptions.setOnePagePerSheet(true);wb.save(bos, pdfSaveOptions);bos.flush();bos.close();} catch (Exception e) {System.out.println(convert failed);e.printStackTrace();}return bos;}/*** excel 转 pdf** param excelFilePath excel文件路径*/public static void excel2pdf(String excelFilePath) {excel2pdf(excelFilePath, null, null);}/*** excel 转 pdf** param excelFilePath excel文件路径* param convertSheets 需要转换的sheet*/public static void excel2pdf(String excelFilePath, int[] convertSheets) {excel2pdf(excelFilePath, null, convertSheets);}/*** excel 转 pdf** param excelFilePath excel文件路径* param pdfFilePath pdf文件路径*/public static void excel2pdf(String excelFilePath, String pdfFilePath) {excel2pdf(excelFilePath, pdfFilePath, null);}/*** excel 转 pdf** param excelFilePath excel文件路径* param pdfFilePath pdf文件路径* param convertSheets 需要转换的sheet*/public static void excel2pdf(String excelFilePath, String pdfFilePath, int[] convertSheets) {try {pdfFilePath pdfFilePath null ? getPdfFilePath(excelFilePath) : pdfFilePath;// 验证 LicensegetLicense();Workbook wb new Workbook(excelFilePath);FileOutputStream fileOS new FileOutputStream(pdfFilePath);PdfSaveOptions pdfSaveOptions new PdfSaveOptions();pdfSaveOptions.setOnePagePerSheet(true);if (null ! convertSheets) {printSheetPage(wb, convertSheets);}wb.save(fileOS, pdfSaveOptions);fileOS.flush();fileOS.close();System.out.println(convert success);} catch (Exception e) {System.out.println(convert failed);e.printStackTrace();}}/*** 获取 生成的 pdf 文件路径默认与源文件同一目录** param excelFilePath excel文件* return 生成的 pdf 文件*/private static String getPdfFilePath(String excelFilePath) {return excelFilePath.split(\\.)[0] .pdf;}/*** 获取 license 去除水印* 若不验证则转化出的pdf文档会有水印产生*/private static void getLicense() {String licenseFilePath excel-license.xml;try {InputStream is PdfUtil.class.getClassLoader().getResourceAsStream(licenseFilePath);License license new License();license.setLicense(is);} catch (Exception e) {System.out.println(license verify failed);e.printStackTrace();}}/*** 隐藏workbook中不需要的sheet页。** param sheets 显示页的sheet数组*/private static void printSheetPage(Workbook wb, int[] sheets) {for (int i 1; i wb.getWorksheets().getCount(); i) {wb.getWorksheets().get(i).setVisible(false);}if (null sheets || sheets.length 0) {wb.getWorksheets().get(0).setVisible(true);} else {for (int i 0; i sheets.length; i) {wb.getWorksheets().get(i).setVisible(true);}}}
}
4、调用 工具类中有基于流的方式入参、文件地址方式入参等大家可根据自行需要选择合适的转换方法 public static void main(String[] args) {String inputFile D:/testPdf/222.xlsx;String outputFile D:/testPdf/222.pdf;PdfUtil.excel2pdf(inputFile, outputFile);}5、注意问题以上转换在windows环境运行一切正常可能部署到linux环境会存在中文乱码引起乱码的原因可能是因为linux环境无中文相关字体
linux环境查看字段方法 字体路径/usr/share/fonts
# 刷新字体缓存
fc-cache
# 查看所有字体
fc-list
# 查看所有中文字体
fc-list :langzh如果无中文字体 我们可能把windows环境中的字段上传至linux字段目录下windows环境字段路径C:\Windows\Fonts上传后安装字段
yum -y install mkfontscale mkfontdir fontconfig
# mkfontscale:字体扩展、mkfontdir:新增字体目录、fc-cache:刷新缓存
mkfontscale mkfontdir fc-cache 如果使用docker 容器启动的应用服务则还需要使用挂载卷的方式将宿主体的字体和容器共享具体方式即启动容器时 加上 “-v /usr/share/fonts/:/usr/share/fonts”