|
@@ -136,12 +136,11 @@ func SmartReportElasticUpsert(smartReportId int, state int) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func ReportToPdf(reportUrl, filePath string) (err error) {
|
|
|
+func ReportToPdf(width int, reportUrl, filePath string, top, bottom, left, right int) (err error) {
|
|
|
pyCode := `
|
|
|
import asyncio
|
|
|
from pyppeteer import launch
|
|
|
|
|
|
-@asyncio.coroutine
|
|
|
async def main():
|
|
|
# 异步代码
|
|
|
browser = await launch({
|
|
@@ -151,26 +150,27 @@ async def main():
|
|
|
})
|
|
|
page = await browser.newPage()
|
|
|
await page.setViewport({
|
|
|
- 'width': 1920,
|
|
|
- 'height': 1080,
|
|
|
+ 'width': %d,
|
|
|
+ 'height': 1697
|
|
|
})
|
|
|
await page.goto('%s', {
|
|
|
'waitUntil': 'networkidle0',
|
|
|
- 'timeout': 1000000 # 设置超时时间为 100 秒
|
|
|
+ 'timeout': 3000000 # 设置超时时间为 100 秒
|
|
|
})
|
|
|
|
|
|
# 在生成PDF之前等待2秒
|
|
|
- await asyncio.sleep(5)
|
|
|
+ await asyncio.sleep(15)
|
|
|
|
|
|
await page.pdf({
|
|
|
+ 'width': %d,
|
|
|
+ 'height': 1697,
|
|
|
'path': "%s",
|
|
|
'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, width+left+right, reportUrl, width, 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,12 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
|
|
|
jpegPath := `./static/` + reportCode + "_1200.jpeg"
|
|
|
|
|
|
go func() {
|
|
|
- err := ReportToPdf(reportUrl, pdfPath)
|
|
|
+ width := 1200
|
|
|
+ top, bottom, left, right := 20, 20, 20, 20
|
|
|
+ if report.ReportLayout == 3 {
|
|
|
+ top, bottom, left, right = 0, 0, 0, 0
|
|
|
+ }
|
|
|
+ err := ReportToPdf(width, 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 +460,126 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
|
|
|
// 移动端
|
|
|
pdfPathMobile := `./static/` + reportCode + "_600.pdf"
|
|
|
jpegPathMobile := `./static/` + reportCode + "_600.jpeg"
|
|
|
+ if report.ReportLayout != 3 {
|
|
|
+ go func() {
|
|
|
+ width := 600
|
|
|
+ top, bottom, left, right := 20, 20, 20, 20
|
|
|
+ err := ReportToPdf(width, 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
|
|
|
- }
|
|
|
+ }()
|
|
|
|
|
|
- ext := path.Ext(file.Name())
|
|
|
+ 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
|
|
|
+ }
|
|
|
|
|
|
- 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, jpegPathMobile, "")
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- defer func() {
|
|
|
- _ = os.Remove(jpegPathMobile)
|
|
|
- }()
|
|
|
+ randStr := utils.GetRandStringNoSpecialChar(28)
|
|
|
+ fileName := randStr + ext
|
|
|
+ defer file.Close() //关闭上传文件
|
|
|
|
|
|
- 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
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- }()
|
|
|
+ }()
|
|
|
+ }
|
|
|
}
|