|
@@ -135,37 +135,45 @@ func ReportToPdf(reportUrl, filePath string) (err error) {
|
|
|
import asyncio
|
|
|
from pyppeteer import launch
|
|
|
|
|
|
-async def main():
|
|
|
-
|
|
|
- browser = await launch({
|
|
|
+@asyncio.coroutine
|
|
|
+def main():
|
|
|
+ # 异步代码
|
|
|
+ browser = yield from launch({
|
|
|
'executablePath': '%s',
|
|
|
'headless': True,
|
|
|
- 'args':['--disable-infobars', '--no-sandbox']
|
|
|
+ 'args': ['--disable-infobars', '--no-sandbox']
|
|
|
})
|
|
|
- page = await browser.newPage()
|
|
|
- await page.setViewport({
|
|
|
+ page = yield from browser.newPage()
|
|
|
+ yield from page.setViewport({
|
|
|
'width': 1920,
|
|
|
'height': 1080,
|
|
|
})
|
|
|
- # await page.setDefaultNavigationTimeout(0)
|
|
|
- await page.goto('http://testetareport.hzinsights.com/reportshare_pdf?code=56517f19aa289885c43e8db9137fb1b0&viewType=!pdf!',{
|
|
|
- 'waitUntil':'networkidle0'
|
|
|
+ yield from page.goto('%s', {
|
|
|
+ 'waitUntil': 'networkidle0',
|
|
|
+ 'timeout': 1000000 # 设置超时时间为 100 秒
|
|
|
})
|
|
|
- # Consider handling errors or waiting strategies if necessary
|
|
|
- await page.pdf({
|
|
|
+ yield from page.pdf({
|
|
|
'path': "%s",
|
|
|
'printBackground': True,
|
|
|
'format': "A2",
|
|
|
'margin': {
|
|
|
- 'top': 10,
|
|
|
- 'bottom': 10,
|
|
|
- 'left':10,
|
|
|
- 'right':10
|
|
|
+ 'top': '10mm',
|
|
|
+ 'bottom': '10mm',
|
|
|
+ 'left': '10mm',
|
|
|
+ 'right': '10mm'
|
|
|
}
|
|
|
})
|
|
|
- await browser.close()
|
|
|
+ yield from browser.close()
|
|
|
+
|
|
|
+# 创建事件循环
|
|
|
+loop = asyncio.get_event_loop()
|
|
|
|
|
|
-asyncio.get_event_loop().run_until_complete(main())
|
|
|
+# 使用事件循环运行main函数
|
|
|
+try:
|
|
|
+ loop.run_until_complete(main())
|
|
|
+finally:
|
|
|
+ # 关闭事件循环
|
|
|
+ loop.close()
|
|
|
`
|
|
|
|
|
|
pyCode = fmt.Sprintf(pyCode, utils.ChromeDrivePath, reportUrl, filePath)
|
|
@@ -183,33 +191,39 @@ func ReportToJpeg(reportUrl, filePath string) (err error) {
|
|
|
import asyncio
|
|
|
from pyppeteer import launch
|
|
|
|
|
|
-async def main():
|
|
|
-
|
|
|
- browser = await launch({
|
|
|
+@asyncio.coroutine
|
|
|
+def main():
|
|
|
+ # 异步代码
|
|
|
+ browser = yield from launch({
|
|
|
'executablePath': '%s',
|
|
|
- 'headless': True
|
|
|
+ 'headless': True,
|
|
|
+ 'args': ['--disable-infobars', '--no-sandbox']
|
|
|
})
|
|
|
- page = await browser.newPage()
|
|
|
- await page.setViewport({
|
|
|
+ page = yield from browser.newPage()
|
|
|
+ yield from page.setViewport({
|
|
|
'width': 1920,
|
|
|
'height': 1080,
|
|
|
})
|
|
|
- # 对于大的PDF生成,可能会时间很久,这里规定不会进行超时处理
|
|
|
- # await page.setDefaultNavigationTimeout(0)
|
|
|
- # 不再有网络连接时触发
|
|
|
- await page.goto('%s',{
|
|
|
- 'waitUntil':'networkidle0'
|
|
|
+ yield from page.goto('%s', {
|
|
|
+ 'waitUntil': 'networkidle0',
|
|
|
+ 'timeout': 1000000 # 设置超时时间为 100 秒
|
|
|
})
|
|
|
- # Customizing footer for page numbers starting from page 2
|
|
|
-
|
|
|
- await page.screenshot({
|
|
|
+ yield from page.screenshot({
|
|
|
'path': "%s",
|
|
|
'type': "jpeg",
|
|
|
'fullPage': True,
|
|
|
})
|
|
|
- await browser.close()
|
|
|
+ yield from browser.close()
|
|
|
+
|
|
|
+# 创建事件循环
|
|
|
+loop = asyncio.get_event_loop()
|
|
|
|
|
|
-asyncio.get_event_loop().run_until_complete(main())
|
|
|
+# 使用事件循环运行main函数
|
|
|
+try:
|
|
|
+ loop.run_until_complete(main())
|
|
|
+finally:
|
|
|
+ # 关闭事件循环
|
|
|
+ loop.close()
|
|
|
`
|
|
|
|
|
|
pyCode = fmt.Sprintf(pyCode, utils.ChromeDrivePath, reportUrl, filePath)
|