问题描述
我正在使用 private void clickConfirmWindow(WebDriver driver,String element_id,String name) {
// We check if warning window is displayed using button ID
System.out.println("Searching " + name + " using " + element_id);
if (isClickable(element_id,10)) {
System.out.println("Found " + name + " using " + element_id);
driver.findElement(By.id(element_id)).click();
}
}
private void waitForProgressBar() {
new webdriverwait(driver,30).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//div[@class='ngx-loading-text center-center' and starts-with(.,'Loading')]")));
}
private Boolean isClickable(String element_id,int timeOut) {
try {
new webdriverwait(driver,timeOut).until(ExpectedConditions.visibilityOfElementLocated(By.id(element_id)));
return true;
} catch (TimeoutException e) {
return false;
}
}
包中的 PDFDownloadLink
在我的应用程序中动态生成 PDF,并允许用户根据传递给生成 PDF 的组件的数据下载报告文档。但是这个PDF有400多页需要渲染,这个操作会阻塞主线程几秒钟。有什么方法可以使此操作异步,以便在生成 PDF 时应用程序的其余部分将继续运行?此外,我希望能够缓存结果,因为传递给组件的数据可能来自大约 8 个不同的数据数组,这些数组变化不大,因此我宁愿不必在这些数组之间切换如果给定数组的 PDF 之前已经生成过一次,则重新渲染 PDF...我猜 blob 数据需要存储在某个地方,也许是 localStorage?
react-pdf
解决方法
我终于在解决这个确切问题的 issue on github 中找到了答案:
您的功能请求是否与问题有关?请描述。 这是一种改进。目前,如果您使用“PDFDownloadLink”,则会在组件加载时生成 PDF。
描述您想要的解决方案 这不是强制性的,但准备好下载多个大型 PDF 并不是最好的方法,因为并非每个用户都需要它。
描述您考虑过的替代方案
我使用 EVP_Digest
函数生成 blob 和 pdf()
lib 来下载它:
file-saver