Browse Source

pdf生成

kobe6258 3 weeks ago
parent
commit
ff095abd2d
1 changed files with 111 additions and 105 deletions
  1. 111 105
      services/smart_report.go

+ 111 - 105
services/smart_report.go

@@ -136,7 +136,7 @@ func SmartReportElasticUpsert(smartReportId int, state int) (err error) {
 	return
 }
 
-func ReportToPdf(reportUrl, filePath string) (err error) {
+func ReportToPdf(reportUrl, filePath string, top, bottom, left, right int) (err error) {
 	pyCode := `
 import asyncio
 from pyppeteer import launch
@@ -167,10 +167,10 @@ async def main():
         'printBackground': True,
         'format': "A2",
         'margin': {
-            'top': '20px',
-            'bottom': '20px',
-            'left': '20px',
-            'right': '20px'
+            'top': '%dpx',
+            'bottom': '%dpx',
+            'left': '%dpx',
+            'right': '%dpx'
         }
     })
     await browser.close()
@@ -186,7 +186,7 @@ finally:
     loop.close()
 `
 
-	pyCode = fmt.Sprintf(pyCode, utils.ChromePath, reportUrl, filePath)
+	pyCode = fmt.Sprintf(pyCode, utils.ChromePath, reportUrl, filePath, top, bottom, left, right)
 	utils.FileLog.Info("pdf pyCode: \n" + pyCode)
 	cmd := exec.Command("python3", "-c", pyCode)
 	output, e := cmd.CombinedOutput()
@@ -302,7 +302,7 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 	if reportUrl == `` {
 		return
 	}
-
+	report, err := models.GetReportById(reportId)
 	// 先清空字段
 	if reportType == 1 {
 		err = models.UpdatePdfUrlReportById(reportId)
@@ -331,7 +331,11 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 	jpegPath := `./static/` + reportCode + "_1200.jpeg"
 
 	go func() {
-		err := ReportToPdf(reportUrl, pdfPath)
+		top, bottom, left, right := 20, 20, 20, 20
+		if report.ReportLayout == 3 {
+			top, bottom, left, right = 0, 0, 0, 0
+		}
+		err := ReportToPdf(reportUrl, pdfPath, top, bottom, left, right)
 		if err != nil {
 			utils.FileLog.Info("ReportToPdf failed: , error: \n" + err.Error())
 			go alarm_msg.SendAlarmMsg("ReportToPdf failed:"+err.Error(), 3)
@@ -455,123 +459,125 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 	// 移动端
 	pdfPathMobile := `./static/` + reportCode + "_600.pdf"
 	jpegPathMobile := `./static/` + reportCode + "_600.jpeg"
+	if report.ReportLayout != 3 {
+		go func() {
+			top, bottom, left, right := 20, 20, 20, 20
+			err := ReportToPdf(reportUrl, pdfPathMobile, top, bottom, left, right)
+			if err != nil {
+				utils.FileLog.Info("ReportToPdf failed: , error: \n" + err.Error())
+				go alarm_msg.SendAlarmMsg("ReportToPdf failed:"+err.Error(), 3)
+			}
 
-	go func() {
-		err := ReportToPdf(reportUrl, pdfPathMobile)
-		if err != nil {
-			utils.FileLog.Info("ReportToPdf failed: , error: \n" + err.Error())
-			go alarm_msg.SendAlarmMsg("ReportToPdf failed:"+err.Error(), 3)
-		}
-
-		file, err := os.Open(pdfPathMobile)
-		if err != nil {
-			utils.FileLog.Info("Open failed: , error: \n" + err.Error())
-			go alarm_msg.SendAlarmMsg("Open failed:"+err.Error(), 3)
-			return
-		}
-
-		ext := path.Ext(file.Name())
+			file, err := os.Open(pdfPathMobile)
+			if err != nil {
+				utils.FileLog.Info("Open failed: , error: \n" + err.Error())
+				go alarm_msg.SendAlarmMsg("Open failed:"+err.Error(), 3)
+				return
+			}
 
-		randStr := utils.GetRandStringNoSpecialChar(28)
-		fileName := randStr + ext
-		defer file.Close() //关闭上传文件
+			ext := path.Ext(file.Name())
 
-		resourceUrl := ``
-		ossClient := NewOssClient()
-		if ossClient == nil {
-			utils.FileLog.Info("初始化OSS服务失败")
-			return
-		}
-		resourceUrl, err = ossClient.UploadFile(fileName, pdfPathMobile, "")
-		if err != nil {
-			utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
-			go alarm_msg.SendAlarmMsg("文件上传失败:"+err.Error(), 3)
-			return
-		}
-		defer func() {
-			_ = os.Remove(pdfPathMobile)
-		}()
+			randStr := utils.GetRandStringNoSpecialChar(28)
+			fileName := randStr + ext
+			defer file.Close() //关闭上传文件
 
-		if reportType == 3 {
-			// 更新pdf url
-			ob := new(smart_report.SmartReport)
-			ob.SmartReportId = reportId
-			ob.DetailPdfUrlMobile = resourceUrl
-			if err = ob.Update([]string{"DetailPdfUrlMobile"}); err != nil {
-				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+			resourceUrl := ``
+			ossClient := NewOssClient()
+			if ossClient == nil {
+				utils.FileLog.Info("初始化OSS服务失败")
 				return
 			}
-		} else if reportType == 2 {
-			err = models.ModifyEnglishReportPdfUrlMobile(reportId, resourceUrl)
+			resourceUrl, err = ossClient.UploadFile(fileName, pdfPathMobile, "")
 			if err != nil {
-				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
+				go alarm_msg.SendAlarmMsg("文件上传失败:"+err.Error(), 3)
 				return
 			}
-		} else if reportType == 1 {
-			err = models.ModifyReportPdfUrlMobile(reportId, resourceUrl)
-			if err != nil {
-				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-				return
+			defer func() {
+				_ = os.Remove(pdfPathMobile)
+			}()
+
+			if reportType == 3 {
+				// 更新pdf url
+				ob := new(smart_report.SmartReport)
+				ob.SmartReportId = reportId
+				ob.DetailPdfUrlMobile = resourceUrl
+				if err = ob.Update([]string{"DetailPdfUrlMobile"}); err != nil {
+					utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+					return
+				}
+			} else if reportType == 2 {
+				err = models.ModifyEnglishReportPdfUrlMobile(reportId, resourceUrl)
+				if err != nil {
+					utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+					return
+				}
+			} else if reportType == 1 {
+				err = models.ModifyReportPdfUrlMobile(reportId, resourceUrl)
+				if err != nil {
+					utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+					return
+				}
 			}
-		}
 
-	}()
+		}()
 
-	go func() {
-		width := 600
-		err := ReportToJpeg(width, reportUrl, jpegPathMobile)
-		if err != nil {
-			utils.FileLog.Info("ReportToJpeg failed: , error: \n" + err.Error())
-		}
-		file, err := os.Open(jpegPathMobile)
-		if err != nil {
-			utils.FileLog.Info("open file failed: , error: \n" + err.Error())
-			return
-		}
+		go func() {
+			width := 600
+			err := ReportToJpeg(width, reportUrl, jpegPathMobile)
+			if err != nil {
+				utils.FileLog.Info("ReportToJpeg failed: , error: \n" + err.Error())
+			}
+			file, err := os.Open(jpegPathMobile)
+			if err != nil {
+				utils.FileLog.Info("open file failed: , error: \n" + err.Error())
+				return
+			}
 
-		ext := path.Ext(file.Name())
+			ext := path.Ext(file.Name())
 
-		randStr := utils.GetRandStringNoSpecialChar(28)
-		fileName := randStr + ext
-		defer file.Close() //关闭上传文件
+			randStr := utils.GetRandStringNoSpecialChar(28)
+			fileName := randStr + ext
+			defer file.Close() //关闭上传文件
 
-		resourceUrl := ``
-		ossClient := NewOssClient()
-		if ossClient == nil {
-			utils.FileLog.Info("初始化OSS服务失败")
-			return
-		}
-		resourceUrl, err = ossClient.UploadFile(fileName, jpegPathMobile, "")
-		if err != nil {
-			utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
-			return
-		}
-		defer func() {
-			_ = os.Remove(jpegPathMobile)
-		}()
-
-		if reportType == 3 {
-			// 更新jpeg url
-			ob := new(smart_report.SmartReport)
-			ob.SmartReportId = reportId
-			ob.DetailImgUrlMobile = resourceUrl
-			if err = ob.Update([]string{"DetailImgUrlMobile"}); err != nil {
-				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+			resourceUrl := ``
+			ossClient := NewOssClient()
+			if ossClient == nil {
+				utils.FileLog.Info("初始化OSS服务失败")
 				return
 			}
-		} else if reportType == 2 {
-			err = models.ModifyEnglishReportImgUrlMobile(reportId, resourceUrl)
+			resourceUrl, err = ossClient.UploadFile(fileName, jpegPathMobile, "")
 			if err != nil {
-				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
 				return
 			}
-		} else if reportType == 1 {
-			err = models.ModifyReportImgUrlMobile(reportId, resourceUrl)
-			if err != nil {
-				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-				return
+			defer func() {
+				_ = os.Remove(jpegPathMobile)
+			}()
+
+			if reportType == 3 {
+				// 更新jpeg url
+				ob := new(smart_report.SmartReport)
+				ob.SmartReportId = reportId
+				ob.DetailImgUrlMobile = resourceUrl
+				if err = ob.Update([]string{"DetailImgUrlMobile"}); err != nil {
+					utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+					return
+				}
+			} else if reportType == 2 {
+				err = models.ModifyEnglishReportImgUrlMobile(reportId, resourceUrl)
+				if err != nil {
+					utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+					return
+				}
+			} else if reportType == 1 {
+				err = models.ModifyReportImgUrlMobile(reportId, resourceUrl)
+				if err != nil {
+					utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+					return
+				}
 			}
-		}
 
-	}()
+		}()
+	}
 }