|
|
@ -28,10 +28,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
|
import java.io.*;
|
|
|
|
import java.io.File;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
import java.io.OutputStream;
|
|
|
|
|
|
|
|
import java.nio.file.Paths;
|
|
|
|
import java.nio.file.Paths;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
|
@ -60,7 +57,7 @@ public class GyslProjectHandbookServiceImpl extends ServiceImpl<ProjectHandBookM
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Page<GyslProjectHandbook> page(Page<GyslProjectHandbook> a1, HandbookRequest g) {
|
|
|
|
public Page<GyslProjectHandbook> page(Page<GyslProjectHandbook> a1, HandbookRequest g) {
|
|
|
|
return baseMapper.page(a1,g);
|
|
|
|
return baseMapper.page(a1, g);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -121,22 +118,6 @@ public class GyslProjectHandbookServiceImpl extends ServiceImpl<ProjectHandBookM
|
|
|
|
PdfDocument pdf = new PdfDocument(writer)) {
|
|
|
|
PdfDocument pdf = new PdfDocument(writer)) {
|
|
|
|
HtmlConverter.convertToPdf(a, pdf, props);
|
|
|
|
HtmlConverter.convertToPdf(a, pdf, props);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// String dest = RuoYiConfig.getProfile() + "/ceshi.pdf";
|
|
|
|
|
|
|
|
// PdfMerger merger = new PdfMerger(new PdfDocument(new PdfWriter(dest)));
|
|
|
|
|
|
|
|
// for (String src : hbpdf) {
|
|
|
|
|
|
|
|
// PdfDocument srcDoc = new PdfDocument(new PdfReader(src));
|
|
|
|
|
|
|
|
// merger.merge(srcDoc, 1, srcDoc.getNumberOfPages());
|
|
|
|
|
|
|
|
// srcDoc.close();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// merger.close();
|
|
|
|
|
|
|
|
// // 设置响应头
|
|
|
|
|
|
|
|
// response.setContentType("application/pdf");
|
|
|
|
|
|
|
|
// response.setHeader("Content-Disposition", "attachment; filename=\"product_catalog.pdf\"");
|
|
|
|
|
|
|
|
// // 4. 生成并写入文档
|
|
|
|
|
|
|
|
// try (OutputStream out = response.getOutputStream()) {
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// 创建内存输出流(替代写入ceshi.pdf文件)
|
|
|
|
// 创建内存输出流(替代写入ceshi.pdf文件)
|
|
|
|
ByteArrayOutputStream mergedPdfStream = new ByteArrayOutputStream();
|
|
|
|
ByteArrayOutputStream mergedPdfStream = new ByteArrayOutputStream();
|
|
|
|
// 初始化PdfWriter指向内存流
|
|
|
|
// 初始化PdfWriter指向内存流
|
|
|
@ -150,11 +131,21 @@ public class GyslProjectHandbookServiceImpl extends ServiceImpl<ProjectHandBookM
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
merger.close();
|
|
|
|
merger.close();
|
|
|
|
// 设置响应头
|
|
|
|
mergedPdfDoc.close(); // 关闭合并的PDF文档
|
|
|
|
|
|
|
|
// 删除临时生成的pdfml文件夹及其内容
|
|
|
|
|
|
|
|
String pdfmlDirPath = RuoYiConfig.getProfile() + "/pdfml";
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
FileUtil.del(pdfmlDirPath); // Hutool工具类删除文件夹(含内部文件)
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
log.error("删除临时文件夹失败: {}");
|
|
|
|
|
|
|
|
// 可根据需要决定是否抛出异常或仅记录日志
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置响应头
|
|
|
|
response.setContentType("application/pdf");
|
|
|
|
response.setContentType("application/pdf");
|
|
|
|
response.setHeader("Content-Disposition", "attachment; filename=\"product_catalog.pdf\"");
|
|
|
|
response.setHeader("Content-Disposition", "attachment; filename=\"product_catalog.pdf\"");
|
|
|
|
response.setContentLength(mergedPdfStream.size());
|
|
|
|
response.setContentLength(mergedPdfStream.size());
|
|
|
|
// 将内存流写入HTTP响应
|
|
|
|
// 将内存流写入HTTP响应
|
|
|
|
try (OutputStream out = response.getOutputStream()) {
|
|
|
|
try (OutputStream out = response.getOutputStream()) {
|
|
|
|
mergedPdfStream.writeTo(out);
|
|
|
|
mergedPdfStream.writeTo(out);
|
|
|
|
out.flush();
|
|
|
|
out.flush();
|
|
|
@ -216,5 +207,15 @@ public class GyslProjectHandbookServiceImpl extends ServiceImpl<ProjectHandBookM
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return handbook;
|
|
|
|
return handbook;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 通过主键查询单条数据
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public GyslProjectHandbook getData(Serializable id) {
|
|
|
|
|
|
|
|
GyslProjectHandbook byId = getById(id);
|
|
|
|
|
|
|
|
byId.setProjectName(baseMapper.getProjectName(Arrays.asList(byId.getXmId().split(","))));
|
|
|
|
|
|
|
|
return byId;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|