我有一个角度应用程序,它使用google-chart角度包装器生成用于报告目的的图表。此示例角度应用程序从elasticsearch查询(REST Api调用)获取数据。 Angular应用运行正常,页面加载时生成了Google图表可视元素。现在我想使用操纵up生成这些图表的pdf。但是,操纵up不包括pdf中的Google图表元素。
起初,我认为问题出在对Elasticsearch的Rest API调用中,可能是人偶在api调用返回之前获取页面。因此,我添加了足够的延迟以仅检查此问题(自从我测试非常基本的场景以来,我的elasticserch api调用在几秒钟内返回了)。即使我添加了很大的延迟问题仍然存在。
这是我的测试代码
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']})
const page = await browser.newPage()
await page.goto('http://localhost:4200/', {waitUntil: 'networkidle2'})
await page.waitFor(50000);
await page.pdf({ path: 'api.pdf', format: 'A4' })
await browser.close()
})()
有没有一种方法可以使我正常工作?
我已经尝试使用静态数据,并且Google图表已成功生成。因此,这应该与REST调用有关。任何调查的方向都表示赞赏。
[如果有人遇到这种情况,下面的方法会有所帮助。问题是CORS无法进行elasticsearch。为了弄清楚,我使用了headless = false模式。同样,为了使其正常运行,请禁用安全性,以免CORS失败。
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-web-security']
})