|
|
@@ -0,0 +1,55 @@
|
|
|
+package com.grapecity.controller;
|
|
|
+
|
|
|
+import com.grapecity.documents.excel.*;
|
|
|
+import jakarta.servlet.http.HttpServletResponse;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.io.ByteArrayInputStream;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/pdf")
|
|
|
+public class PdfController {
|
|
|
+ @PostMapping("/getPdf")
|
|
|
+ public void getPdfByte(@RequestBody List<byte[]> bytes,
|
|
|
+ HttpServletResponse response) throws Exception {
|
|
|
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
|
|
+ WorkbookOptions workbookOptions = new WorkbookOptions();
|
|
|
+ workbookOptions.setPixelBasedColumnWidth(true);
|
|
|
+ Workbook workbook = new Workbook(workbookOptions);
|
|
|
+ workbook.open(new ByteArrayInputStream(bytes.get(0)), OpenFileFormat.Sjs);
|
|
|
+ for (int i = 0; i < workbook.getWorksheets().getCount(); i++) {
|
|
|
+ IWorksheet worksheet = workbook.getWorksheets().get(i);
|
|
|
+ // 自动缩小文字以适应单元格
|
|
|
+ worksheet.getUsedRange().setShrinkToFit(true);
|
|
|
+ worksheet.getPageSetup().setPrintHeadings(false);
|
|
|
+ worksheet.getPageSetup().setPaperSize(PaperSize.A4);
|
|
|
+ worksheet.getPageSetup().setCenterHorizontally(true);
|
|
|
+ worksheet.getPageSetup().setTopMargin(36); // 设置上边距为 36 磅(约 1.27 厘米)
|
|
|
+ }
|
|
|
+ Workbook.FontProvider = new IFontProvider() {
|
|
|
+ @Override
|
|
|
+ public List<String> getFontFilePaths() {
|
|
|
+ return new ArrayList<>(Arrays.asList(
|
|
|
+ "fonts/simsun.ttf"
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public InputStream getFont(String fontFilePath) {
|
|
|
+ return getClass().getClassLoader().getResourceAsStream(fontFilePath);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ // 设置PdfSaveOptions以将工作簿导出为PDF文件。
|
|
|
+ PdfSaveOptions pdfOptions = new PdfSaveOptions();
|
|
|
+ pdfOptions.setIncludeAutoMergedCells(true);
|
|
|
+ IShrinkToFitSettings shrinkSettings = pdfOptions.getShrinkToFitSettings();
|
|
|
+ shrinkSettings.setCanShrinkToFitWrappedText(true); // 启用对换行文本的缩小功能
|
|
|
+ workbook.save(byteArrayOutputStream, pdfOptions);
|
|
|
+ response.getOutputStream().write(byteArrayOutputStream.toByteArray());
|
|
|
+ }
|
|
|
+}
|