springboot各种格式转pdf的实例代码
添加依赖
com.documents4j documents4j-local 1.0.3 com.documents4j documents4j-transformer-msoffice-word 1.0.3 com.itextpdf itextpdf 5.5.10
测试方法
packagecom.ruoyi.mlogin.util;
importcom.documents4j.api.DocumentType;
importcom.documents4j.api.IConverter;
importcom.documents4j.job.LocalConverter;
importcom.itextpdf.text.*;
importcom.itextpdf.text.pdf.PdfWriter;
importjava.io.*;
importjava.net.MalformedURLException;
/**
*@authorcai
*@version1.0
*@date2021/1/414:58
*/
publicclassTopdf{
/**
*转pdfdocdocxxlsxlsx
*@parampath
*/
publicvoiddocTopdf(Stringpath){
FileinputWord=newFile("C:\\Users\\29934\\Documents\\TencentFiles\\2993481541\\FileRecv\\1111.docx");
FileoutputFile=newFile("C:\\Users\\29934\\Documents\\TencentFiles\\2993481541\\FileRecv\\1111.pdf");
try{
InputStreamdocxInputStream=newFileInputStream(inputWord);
OutputStreamoutputStream=newFileOutputStream(outputFile);
IConverterconverter=LocalConverter.builder().build();
StringfileTyle=path.substring(path.lastIndexOf("."),path.length());//获取文件类型
if(".docx".equals(fileTyle)){
converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
}elseif(".doc".equals(fileTyle)){
converter.convert(docxInputStream).as(DocumentType.DOC).to(outputStream).as(DocumentType.PDF).execute();
}elseif(".xls".equals(fileTyle)){
converter.convert(docxInputStream).as(DocumentType.XLS).to(outputStream).as(DocumentType.PDF).execute();
}elseif(".xlsx".equals(fileTyle)){
converter.convert(docxInputStream).as(DocumentType.XLSX).to(outputStream).as(DocumentType.PDF).execute();
}
outputStream.close();
System.out.println("pdf转换成功");
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*
*生成pdf文件
*需要转换的图片路径的数组
*/
publicstaticvoidmain(String[]args){
try{
StringimagesPath="C:\\Users\\29934\\Documents\\TencentFiles\\2993481541\\FileRecv\\1111.jpg";
Filefile=newFile("C:\\Users\\29934\\Documents\\TencentFiles\\2993481541\\FileRecv\\1111.pdf");
//第一步:创建一个document对象。
Documentdocument=newDocument();
document.setMargins(0,0,0,0);
//第二步:
//创建一个PdfWriter实例,
PdfWriter.getInstance(document,newFileOutputStream(file));
//第三步:打开文档。
document.open();
//第四步:在文档中增加图片。
if(true){
Imageimg=Image.getInstance(imagesPath);
img.setAlignment(Image.ALIGN_CENTER);
//根据图片大小设置页面,一定要先设置页面,再newPage(),否则无效
document.setPageSize(newRectangle(img.getWidth(),img.getHeight()));
document.newPage();
document.add(img);
//下面是对应一个文件夹的图片
//Filefiles=newFile(imagesPath);
//String[]images=files.list();
//intlen=images.length;
//
//for(inti=0;i
补充:下面看下springboot:扩展类型转换器
需求:提交一个字符串到后端的java.sql.Time类型,就报错了:
Failedtoconvertpropertyvalueoftype[java.lang.String]torequiredtype[java.sql.Time]
正常提交到java.util.Date类型是没有问题的。
所以这里就需要扩展内置的springmvc的转换器
代码如下:
WebConfig:添加新的类型转换器
importjavax.annotation.PostConstruct;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.core.convert.support.GenericConversionService;
importorg.springframework.web.bind.support.ConfigurableWebBindingInitializer;
importorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
importcom.csget.web.converter.StringToTimeConverter;
@Configuration
publicclassWebConfig{
@Autowired
privateRequestMappingHandlerAdapterrequestMappingHandlerAdapter;
@PostConstruct
publicvoidaddConversionConfig(){
ConfigurableWebBindingInitializerinitializer=(ConfigurableWebBindingInitializer)requestMappingHandlerAdapter
.getWebBindingInitializer();
if(initializer.getConversionService()!=null){
GenericConversionServicegenericConversionService=(GenericConversionService)initializer.getConversionService();
genericConversionService.addConverter(newStringToTimeConverter());
}
}
}
StringToTimeConverter:类型转换器的具体实现
importjava.sql.Time;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importorg.apache.commons.lang3.StringUtils;
importorg.springframework.core.convert.converter.Converter;
publicclassStringToTimeConverterimplementsConverter{
publicTimeconvert(Stringvalue){
Timetime=null;
if(StringUtils.isNotBlank(value)){
StringstrFormat="HH:mm";
intintMatches=StringUtils.countMatches(value,":");
if(intMatches==2){
strFormat="HH:mm:ss";
}
SimpleDateFormatformat=newSimpleDateFormat(strFormat);
Datedate=null;
try{
date=format.parse(value);
}catch(Exceptione){
e.printStackTrace();
}
time=newTime(date.getTime());
}
returntime;
}
}
到此这篇关于springboot各种格式转pdf的文章就介绍到这了,更多相关springboot格式转pdf内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。