考虑以下代码:
var content = "my-quite-long-html-string";
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
await page.SetContentAsync(content);
var pdfData = await page.PdfDataAsync(new PdfOptions { }); //*
await page.CloseAsync();
return Ok(pdfData);
pdfData
有时设置为完全有效byte[]
,但有时只是部分结果(即实际 17899 字节的 1088 字节)。
整个片段永远不会抛出任何Exceptions
东西,也不会以任何其他方式从运行到完成中断。
如果我在 处设置断点await page.SetContentAsync(content);
并在允许继续执行之前等待一秒钟,pdfData
则始终会填充完整且正确的数据。
此外,当SlowMo=50
在LaunchOptions
(见下文)时,pdfData
被准确设置的机会正在增加。当然,这只是问题所在的提示,而不是问题的解决方案。
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true, SlowMo = 50 });
在我看来,这需要一些时间才能完成,并且在方法完全完成之前SetContentAsync
以某种方式完成。await
我错过了什么,做错了什么还是这是一个错误Puppeteer Sharp
?