所有依赖:
只能实现文字的转换
代码:
只有controller层
@RestController
public class ConversionController {
@ApiOperation("文件转换")
@RequestMapping("/uploadAndConvert")
public ResponseEntity<ByteArrayResource> convertToDocx(@RequestParam("file") MultipartFile uploadedFile) throws IOException {
if (uploadedFile.isEmpty()) {
return ResponseEntity.badRequest().build();
}
String originalFileName = uploadedFile.getOriginalFilename();
// 检查文件扩展名,确保上传的文件是DOC格式
if (!originalFileName.toLowerCase().endsWith(".doc")) {
return ResponseEntity.badRequest().body(new ByteArrayResource(new byte[0]));
}
//读取上传的DOC文件
InputStream docInputStream = uploadedFile.getInputStream();
HWPFDocument doc = new HWPFDocument(docInputStream);
// 创建一个新的DOCX文档
XWPFDocument docx = new XWPFDocument();
// 从原始DOC文件中提取文本
Range range = doc.getRange();
String docText = range.text();
// 将提取的文本添加到新的DOCX文档
docx.createParagraph().createRun().setText(docText);
// 将新的DOCX文档保存到字节数组
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
docx.write(outputStream);
// 创建Blob格式的响应
byte[] docxBytes = outputStream.toByteArray();
ByteArrayResource resource = new ByteArrayResource(docxBytes);
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=converted.docx");
return ResponseEntity.ok()
.headers(headers)
.contentLength(docxBytes.length)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
}
可以实现图片的转换
controller层
@RestController
public class ConversionController {
@ApiOperation("文件转换")
@RequestMapping("/uploadAndConvert")
public ResponseEntity<ByteArrayResource> convertToDocx(@RequestParam("file") MultipartFile uploadedFile) throws IOException {
if (uploadedFile.isEmpty()) {
return ResponseEntity.badRequest().build();
}
String originalFileName = uploadedFile.getOriginalFilename();
// 检查文件扩展名,确保上传的文件是DOC格式
if (!originalFileName.toLowerCase().endsWith(".doc")) {
return ResponseEntity.badRequest().body(new ByteArrayResource(new byte[0]));
}
//读取上传的DOC文件
InputStream docInputStream = uploadedFile.getInputStream();
Document document = new Document(docInputStream);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
document.saveToStream(outputStream, FileFormat.Docx);
byte[] docxBytes = outputStream.toByteArray();
ByteArrayResource resource = new ByteArrayResource(docxBytes);
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=converted.docx");
return ResponseEntity.ok()
.headers(headers)
.contentLength(docxBytes.length)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
}