java生成离职证明,各种申请模板并上传pdf
1.利用Thymeleaf,生成证明模板
javascript
public static void main(String[] args) {
Info info = new Info();//模板对应的属性
String tempHtml = this.generateCertificateHTML(info);
ByteArrayInputStream byteArrayInputStream = PdfUtil.exportPdf(tempHtml);
String fileName ="文件名称";
String directory = "文件夹地址";
Boolean isFile = FavFTPUtil.sftpUploadStream(byteArrayInputStream, directory, fileName,emailConfig);
if (isFile) {
String sftpPath = "sftp服务文件地址";
sftpPathList.add(sftpPath);
}
}
2.generateCertificateHTML 生成html模板
java
private String generateCertificateHTML(FlightChangeProofMsgInfo info) {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
Context context = new Context();
context.setVariable("Name", info.getName());
context.setVariable("idNo", info.getIdNo());
String filledTemplate = templateEngine.process("templates/test"//模板地址, context);
return filledTemplate;
}
3.将html模板,转为数据流
java
public static String getCurrentOperatingSystem(){
String os = System.getProperty("os.name").toLowerCase();
System.out.println("---------当前操作系统是-----------" + os);
return os;
}
public static ByteArrayInputStream exportPdf(String template) throws Exception {
ByteArrayInputStream byteArrayInputStream = null;
try {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
if("linux".equals(getCurrentOperatingSystem())|| "mac os x".equals(getCurrentOperatingSystem())){
fontResolver.addFont(PDF_FONT_PATH, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}else{
fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}
renderer.setDocumentFromString(template);
renderer.layout();
renderer.createPDF(byteArrayOutputStream, false);
renderer.finishPDF();
byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
} catch (DocumentException e) {
log.info(e.getMessage(), e);
}
return byteArrayInputStream;
}
4.数据流上传到sftp服务器上就ok了