2022-03-24 16:00:04 +08:00
|
|
|
|
package cn.com.tenlion.systemoa.utils;
|
|
|
|
|
|
|
|
|
|
import com.aspose.cells.Workbook;
|
|
|
|
|
import com.aspose.slides.Presentation;
|
|
|
|
|
import com.aspose.words.Document;
|
|
|
|
|
import com.aspose.words.License;
|
|
|
|
|
import com.aspose.words.SaveOutputParameters;
|
|
|
|
|
|
|
|
|
|
import java.io.*;
|
|
|
|
|
|
|
|
|
|
public class OfficeToPDFUtils {
|
|
|
|
|
|
|
|
|
|
private static InputStream license;
|
|
|
|
|
|
|
|
|
|
public static boolean judgeLicense() {
|
|
|
|
|
boolean result = false;
|
|
|
|
|
try {
|
2022-04-12 14:23:42 +08:00
|
|
|
|
license = OfficeToPDFUtils.class.getClassLoader().getResourceAsStream("static/assets/js/pdf/license"); //文件路径
|
2022-03-24 16:00:04 +08:00
|
|
|
|
if (license != null) {
|
|
|
|
|
License aposeLic = new License();
|
|
|
|
|
aposeLic.setLicense(license);
|
|
|
|
|
result = true;
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 转换
|
2022-04-12 14:23:42 +08:00
|
|
|
|
public static void trans(String filePath, String pdfPath, String type, String folderPath) {
|
2022-03-24 16:00:04 +08:00
|
|
|
|
if (!judgeLicense()) {
|
|
|
|
|
System.out.println("license错误");
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
System.out.println("as开始:" + filePath);
|
|
|
|
|
long old = System.currentTimeMillis();
|
2022-04-12 14:23:42 +08:00
|
|
|
|
File folder = new File(folderPath);
|
|
|
|
|
if(!folder.exists() && !folder.isDirectory()) {
|
|
|
|
|
folder.mkdirs();
|
|
|
|
|
}
|
2022-03-24 16:00:04 +08:00
|
|
|
|
File file = new File(pdfPath);
|
|
|
|
|
toPdf(file, filePath, pdfPath, type);
|
|
|
|
|
long now = System.currentTimeMillis();
|
|
|
|
|
System.out.println("完成:" + pdfPath);
|
|
|
|
|
System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void toPdf(File file, String filePath, String pdfPath, String type) {
|
|
|
|
|
if ("doc".equals(type) || "docx".equals(type) || "txt".equals(type)) {
|
|
|
|
|
wordToPdf(file, filePath);
|
|
|
|
|
} else if ("xls".equals(type) || "xlsx".equals(type)) {
|
|
|
|
|
excelToPdf(file, filePath, pdfPath);
|
|
|
|
|
} else if ("ppt".equals(type) || "pptx".equals(type)) {
|
|
|
|
|
pptToPdf(file, filePath);
|
|
|
|
|
}else{
|
|
|
|
|
System.out.println("暂不支持该类型:"+type);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void wordToPdf(File file, String filePath) {
|
|
|
|
|
FileOutputStream os = null;
|
|
|
|
|
Document doc;
|
|
|
|
|
try {
|
|
|
|
|
os = new FileOutputStream(file);
|
|
|
|
|
doc = new Document(filePath);
|
|
|
|
|
SaveOutputParameters saveOutputParameters = doc.save(os, com.aspose.words.SaveFormat.PDF);
|
|
|
|
|
System.out.println("转换完成");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
try {
|
|
|
|
|
os.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*private static void excelToPdf(File file, String filePath) {
|
|
|
|
|
FileOutputStream os = null;
|
|
|
|
|
try {
|
|
|
|
|
os = new FileOutputStream(file);
|
|
|
|
|
com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook(filePath);
|
|
|
|
|
wb.save(os, com.aspose.cells.SaveFormat.PDF);
|
|
|
|
|
System.out.println("转换完成");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
try {
|
|
|
|
|
os.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
private static void excelToPdf(File file, String filePath, String pdfPath) {
|
|
|
|
|
FileInputStream fileInputStream = null;
|
|
|
|
|
FileOutputStream fileOutputStream = null;
|
|
|
|
|
try {
|
|
|
|
|
File excelFile = new File(filePath);
|
|
|
|
|
if (excelFile.exists()) {
|
|
|
|
|
fileInputStream = new FileInputStream(excelFile);
|
|
|
|
|
Workbook workbook = new Workbook(fileInputStream);
|
|
|
|
|
File pdfFile = new File(pdfPath);
|
|
|
|
|
com.aspose.cells.PdfSaveOptions pdfSaveOptions = new com.aspose.cells.PdfSaveOptions();
|
|
|
|
|
pdfSaveOptions.setOnePagePerSheet(true);
|
|
|
|
|
FileOutputStream fileOS = new FileOutputStream(pdfFile);
|
|
|
|
|
workbook.save(fileOS, pdfSaveOptions);
|
|
|
|
|
} else {
|
|
|
|
|
throw new Exception("文件不存在");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
if (fileInputStream != null) {
|
|
|
|
|
try {
|
|
|
|
|
fileInputStream.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (fileOutputStream != null) {
|
|
|
|
|
try {
|
|
|
|
|
fileOutputStream.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void pptToPdf(File file, String filePath) {
|
|
|
|
|
FileOutputStream os = null;
|
|
|
|
|
try {
|
|
|
|
|
os = new FileOutputStream(file);
|
|
|
|
|
Presentation pres = new Presentation(filePath);// 输入pdf路径
|
|
|
|
|
pres.save(os, com.aspose.slides.SaveFormat.Pdf);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
try {
|
|
|
|
|
os.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置打印的sheet 自动拉伸比例
|
|
|
|
|
* @param wb
|
|
|
|
|
* @param page 自动拉伸的页的sheet数组
|
|
|
|
|
*/
|
|
|
|
|
public static void autoDraw(Workbook wb,int[] page){
|
|
|
|
|
if(null!=page&&page.length>0){
|
|
|
|
|
for (int i = 0; i < page.length; i++) {
|
|
|
|
|
wb.getWorksheets().get(i).getHorizontalPageBreaks().clear();
|
|
|
|
|
wb.getWorksheets().get(i).getVerticalPageBreaks().clear();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 隐藏workbook中不需要的sheet页。
|
|
|
|
|
* @param wb
|
|
|
|
|
* @param page 显示页的sheet数组
|
|
|
|
|
*/
|
|
|
|
|
public static void printSheetPage(Workbook wb,int[] page){
|
|
|
|
|
for (int i= 1; i < wb.getWorksheets().getCount(); i++) {
|
|
|
|
|
wb.getWorksheets().get(i).setVisible(false);
|
|
|
|
|
}
|
|
|
|
|
if(null==page||page.length==0){
|
|
|
|
|
wb.getWorksheets().get(0).setVisible(true);
|
|
|
|
|
}else{
|
|
|
|
|
for (int i = 0; i < page.length; i++) {
|
|
|
|
|
wb.getWorksheets().get(i).setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-12 14:23:42 +08:00
|
|
|
|
/*public static void main(String[] args) {
|
2022-03-24 16:00:04 +08:00
|
|
|
|
String filePath = "C:\\Users\\29492\\Desktop\\test.pdf";
|
|
|
|
|
String PdfFilePath = "C:\\Users\\29492\\Desktop\\test111.pdf";
|
|
|
|
|
trans(filePath, PdfFilePath, "pdf");
|
2022-04-12 14:23:42 +08:00
|
|
|
|
}*/
|
2022-03-24 16:00:04 +08:00
|
|
|
|
|
|
|
|
|
}
|