Commit 401dd323 authored by 徐俊's avatar 徐俊

xujun

parent ef24d374
......@@ -214,15 +214,31 @@ public class ComProjectController extends BaseController<ComProjectService, ComP
return ResponseDataModel.ok(comProjectService.projectImport(list));
}
@ApiOperation(value = "项目信息导出1", httpMethod = "POST", notes = "项目信息导出1")
@ApiOperation(value = "项目信息导出", httpMethod = "POST", notes = "项目信息导出")
@RequestMapping("/projectExport/{id}")
@PostMapping
public ResponseDataModel<String> projectExport(@PathVariable String id) throws DocumentException, IOException {
List<SystemParameter> list = systemParameterService.getListByType(67);
ComProjectDTO dto = comProjectService.getProjectById(id);
String outputPath = "D:\\申请书和合同书.pdf";
ProjectInfoToPDF.generateProjectPDF(dto, outputPath, list);
return ResponseDataModel.ok("项目信息导入成功!");
public void projectExport(@PathVariable String id) throws DocumentException, IOException {
try {
List<SystemParameter> list = systemParameterService.getListByType(67);
ComProjectDTO dto = comProjectService.getProjectById(id);
// 生成PDF文件字节数组
byte[] pdfBytes = ProjectInfoToPDF.generateProjectPDF(dto, list);
// 设置响应头
response.setContentType("application/pdf");
String fileName = new String((dto.getProjName() + ".pdf").getBytes("UTF-8"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
response.setContentLength(pdfBytes.length);
// 写入响应流
try (ServletOutputStream out = response.getOutputStream()) {
out.write(pdfBytes);
out.flush();
}
} catch (Exception e) {
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write("导出PDF失败:" + e.getMessage());
}
}
}
\ No newline at end of file
......@@ -21,89 +21,97 @@ public class ProjectInfoToPDF {
/**
* 生成项目申请书和合同书PDF
* @param project 项目信息
* @param outputPath 输出路径
* @return 生成的PDF文件字节数组
*/
public static void generateProjectPDF(ComProjectDTO project, String outputPath, List<SystemParameter> projAttributeList) throws DocumentException, IOException {
public static byte[] generateProjectPDF(ComProjectDTO project, List<SystemParameter> projAttributeList) throws DocumentException, IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputPath));
// 文件水印
String watermark = project.getAppNo();
if (project.getProjState() >= CommonEnum.projState.pass.getCode()) {
watermark = project.getProjNo();
}
PdfWriter writer = PdfWriter.getInstance(document, baos);
// 宋体
BaseFont bfChinese = loadChineseFont("/fonts/simsun.ttc");
// 仿宋
BaseFont fsChinese = loadChineseFont("/fonts/simfang.ttf");
// WINGDNG2
BaseFont WINGDNG2 = loadChineseFont("/fonts/WINGDNG2.ttf");
// 添加水印
writer.setPageEvent(new WatermarkPageEvent(watermark, fsChinese));
try {
// 文件水印
String watermark = project.getAppNo();
if (project.getProjState() >= CommonEnum.projState.pass.getCode()) {
watermark = project.getProjNo();
}
// 宋体
BaseFont bfChinese = loadChineseFont("/fonts/simsun.ttc");
// 仿宋
BaseFont fsChinese = loadChineseFont("/fonts/simfang.ttf");
// WINGDNG2
BaseFont WINGDNG2 = loadChineseFont("/fonts/WINGDNG2.ttf");
document.open();
// 添加水印
writer.setPageEvent(new WatermarkPageEvent(watermark, fsChinese));
document.open();
Font normalFont = new Font(bfChinese, 12, Font.NORMAL);
Font boldFont = new Font(bfChinese, 12, Font.BOLD);
Font normalFont = new Font(bfChinese, 12, Font.NORMAL);
Font boldFont = new Font(bfChinese, 12, Font.BOLD);
//首页内容
FirstPageInfo(document, project, bfChinese, fsChinese);
// 添加新页面
document.newPage();
//首页内容
FirstPageInfo(document, project, bfChinese, fsChinese);
// 添加新页面
document.newPage();
// 添加项目内容章节
addSection(document, "一、项目基本情况", boldFont);
addProjectBasicTable(document, project, bfChinese, fsChinese); // 添加项目基本信息表格
// 添加横向页面
document.setPageSize(PageSize.A4.rotate());
document.newPage();
// 添加项目内容章节
addSection(document, "一、项目基本情况", boldFont);
addProjectBasicTable(document, project, bfChinese, fsChinese); // 添加项目基本信息表格
// 添加横向页面
document.setPageSize(PageSize.A4.rotate());
document.newPage();
// 添加项目组主要成员表格
addProjectMembersTable(document, project, bfChinese, fsChinese);
document.newPage();
// 添加项目组主要成员表格
addProjectMembersTable(document, project, bfChinese, fsChinese);
document.newPage();
// 添加项目绩效目标表
addProjectKPITable(document, project, projAttributeList, bfChinese, fsChinese, WINGDNG2);
// 添加项目绩效目标表
addProjectKPITable(document, project, projAttributeList, bfChinese, fsChinese, WINGDNG2);
// 恢复为纵向页面
document.setPageSize(PageSize.A4);
document.newPage();
// 恢复为纵向页面
document.setPageSize(PageSize.A4);
document.newPage();
// 项目经费预算表
addProjectBudgetTable(document, project, bfChinese, fsChinese);
// 项目经费预算表
addProjectBudgetTable(document, project, bfChinese, fsChinese);
// 插入申请书正文PDF
if (project.getConvertUrl() != null && !project.getConvertUrl().trim().isEmpty()) {
insertPdfContent(document, System.getProperty("user.dir") + project.getConvertUrl(), writer);
}
// 插入申请书正文PDF
if (project.getConvertUrl() != null && !project.getConvertUrl().trim().isEmpty()) {
insertPdfContent(document, System.getProperty("user.dir") + project.getConvertUrl(), writer);
}
// 添加新页面
document.newPage();
// 添加新页面
document.newPage();
addSection(document, "二、主要技术指标", boldFont);
addContent(document, project.getTechnologyTarget(), normalFont);
addSection(document, "二、主要技术指标", boldFont);
addContent(document, project.getTechnologyTarget(), normalFont);
addSection(document, "三、主要经济指标", boldFont);
addContent(document, project.getEconomyTarget(), normalFont);
addSection(document, "三、主要经济指标", boldFont);
addContent(document, project.getEconomyTarget(), normalFont);
addSection(document, "四、项目实施中形成的示范基地、中试线、生产线及其规模等", boldFont);
addContent(document, project.getAchievementTarget(), normalFont);
addSection(document, "四、项目实施中形成的示范基地、中试线、生产线及其规模等", boldFont);
addContent(document, project.getAchievementTarget(), normalFont);
addSection(document, "五、科技报告考核指标", boldFont);
addContent(document, project.getTechnologyReportsTarget(), normalFont);
addSection(document, "五、科技报告考核指标", boldFont);
addContent(document, project.getTechnologyReportsTarget(), normalFont);
addSection(document, "六、其他应考核的指标", boldFont);
addContent(document, project.getOtherTarget(), normalFont);
addSection(document, "六、其他应考核的指标", boldFont);
addContent(document, project.getOtherTarget(), normalFont);
// 添加签字栏
addSignatureSection(document, normalFont);
// 添加签字栏
addSignatureSection(document, normalFont);
document.close();
document.close();
return baos.toByteArray();
} finally {
if (document.isOpen()) {
document.close();
}
baos.close();
}
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment