SpringBoot 文档处理转换:PDF、Word、Excel、图片互转
在 Spring Boot 中,可以使用一些现有的 Java 库来处理和转换文档、图片和 PDF 文件。以下是一些常用的库和示例代码:
- PDF 转 Word:
- 使用 Apache PDFBox 库来提取 PDF 中的文本内容,然后使用 Apache POI 库将文本内容保存为 Word 文件。
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PdfToWordConverter {
public static void convert(String pdfFilePath, String wordFilePath) throws IOException {
PDDocument document = PDDocument.load(new File(pdfFilePath));
PDFTextStripper stripper = new PDFTextStripper();
XWPFDocument wordDocument = new XWPFDocument();
XWPFParagraph paragraph = wordDocument.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText(stripper.getText(document));
FileOutputStream out = new FileOutputStream(wordFilePath);
wordDocument.write(out);
out.close();
document.close();
wordDocument.close();
System.out.println('PDF 转 Word 成功!');
}
}
- 图片转 Word:
- 使用 Apache POI 库来创建一个 Word 文档,并将图片插入到文档中。
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ImageToWordConverter {
public static void convert(String imageFilePath, String wordFilePath) throws IOException {
XWPFDocument wordDocument = new XWPFDocument();
XWPFRun run = wordDocument.createParagraph().createRun();
FileInputStream imageInputStream = new FileInputStream(imageFilePath);
BufferedImage image = ImageIO.read(imageInputStream);
imageInputStream.close();
FileOutputStream out = new FileOutputStream(wordFilePath);
ImageIO.write(image, 'png', out);
out.close();
wordDocument.close();
System.out.println('图片转 Word 成功!');
}
}
- PDF 转 Excel:
- 使用 Apache PDFBox 库来提取 PDF 中的表格数据,然后使用 Apache POI 库将表格数据保存为 Excel 文件。
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PdfToExcelConverter {
public static void convert(String pdfFilePath, String excelFilePath) throws IOException {
PDDocument document = PDDocument.load(new File(pdfFilePath));
PDFTextStripper stripper = new PDFTextStripper();
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet();
int rowIndex = 0;
for (PDPage page : document.getPages()) {
stripper.setStartPage(document.getDocumentCatalog().getPages().indexOf(page) + 1);
stripper.setEndPage(document.getDocumentCatalog().getPages().indexOf(page) + 1);
String text = stripper.getText(document);
String[] lines = text.split('\r?\n');
for (int i = 0; i < lines.length; i++) {
Row row = sheet.createRow(rowIndex++);
String[] cells = lines[i].split('\t');
for (int j = 0; j < cells.length; j++) {
Cell cell = row.createCell(j);
cell.setCellValue(cells[j]);
}
}
}
FileOutputStream out = new FileOutputStream(excelFilePath);
workbook.write(out);
out.close();
document.close();
workbook.close();
System.out.println('PDF 转 Excel 成功!');
}
}
- 图片转 Excel:
- 使用 Apache POI 库创建一个 Excel 文件,并将图片插入到 Excel 文件的单元格中。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ImageToExcelConverter {
public static void convert(String imageFilePath, String excelFilePath) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet();
Drawing drawing = sheet.createDrawingPatriarch();
CreationHelper helper = workbook.getCreationHelper();
BufferedImage image = ImageIO.read(new File(imageFilePath));
int pictureIdx = workbook.addPicture(ImageIO.read(new FileInputStream(imageFilePath)), Workbook.PICTURE_TYPE_PNG);
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(0);
anchor.setRow1(0);
Picture picture = drawing.createPicture(anchor, pictureIdx);
picture.resize();
FileOutputStream out = new FileOutputStream(excelFilePath);
workbook.write(out);
out.close();
workbook.close();
System.out.println('图片转 Excel 成功!');
}
}
- PDF 转图片:
- 使用 Apache PDFBox 库将 PDF 转换为一系列图片文件。
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PdfToImageConverter {
public static void convert(String pdfFilePath, String imageFilePath) throws IOException {
PDDocument document = PDDocument.load(new File(pdfFilePath));
PDFRenderer renderer = new PDFRenderer(document);
for (int i = 0; i < document.getNumberOfPages(); i++) {
BufferedImage image = renderer.renderImage(i);
ImageIO.write(image, 'png', new File(imageFilePath + '_' + (i + 1) + '.png'));
}
document.close();
System.out.println('PDF 转图片成功!');
}
}
- 图片转 PDF:
- 使用 Apache PDFBox 库将图片转换为 PDF 文件。
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageToPdfConverter {
public static void convert(String imageFilePath, String pdfFilePath) throws IOException {
PDDocument document = new PDDocument();
BufferedImage image = ImageIO.read(new File(imageFilePath));
PDPage page = new PDPage();
document.addPage(page);
PDImageXObject ximage = PDImageXObject.createFromFile(imageFilePath, document);
PDPageContentStream contentStream = new PDPageContentStream(document, page, AppendMode.APPEND, true, true);
contentStream.drawImage(ximage, 0, 0, page.getMediaBox().getWidth(), page.getMediaBox().getHeight());
contentStream.close();
document.save(pdfFilePath);
document.close();
System.out.println('图片转 PDF 成功!');
}
}
请注意,以上示例代码仅提供了基本的实现思路和方法,您可能需要根据实际需求进行适当的修改和优化。另外,这些示例代码需要相应的依赖库,请确保在项目中添加了这些库的依赖。
原文地址: https://www.cveoy.top/t/topic/qAL7 著作权归作者所有。请勿转载和采集!