【发布时间】:2015-12-11 05:40:08
【问题描述】:
我正在尝试构建一个应用程序来从 webview 中的多个页面创建 PDF。
作为初学者,我很高兴我发现了这个: Android create pdf document from webview with multiple pages
但是我无法正确处理。 在 PDF 中创建的页面数量很好,但内容却不是。 创建了一个包含(在这种情况下)3 个相似页面的 PDF。所有显示该方法被调用之前的webview。 创建 PDF 后,将加载 url 数组的最后一个 url。
如何实现只有在 webview 中加载新的 url 后才创建 pdf 页面?
我确实尝试使用延迟,但这似乎不是问题。 如果延迟,则首先创建 pdf,然后才打开页面。
我确实尝试从 onPageFinished() 中调用 pdf 创建。 它也没有完成这项工作。
也许我确实用错了所有这些。 这是我的代码现在的样子:
//Create folder
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String dirName = "exampledirectory";
File newdir = new File(baseDir + File.separator + dirName);
newdir.mkdirs();
//Create PDF
String fileName = "example.pdf";
String fileNameWithPath = newdir + File.separator + fileName;
//Create document
PdfDocument document = new PdfDocument();
String[] urlArr = {"exampleurl1.com", "exampleurl2.com", "exampleurl3.com"};
for (int i = 0; i < urlArr.length; i++) {
mWebView.loadUrl(urlArr[i]);
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(mWebView.getMeasuredWidth(), mWebView.getContentHeight(), i).create();
// start [i]st page
PdfDocument.Page page = document.startPage(pageInfo);
// draw on the page
View content = mWebView;
content.draw(page.getCanvas());
// finish [i]st page
document.finishPage(page);
}
FileOutputStream fos;
try {
fos = new FileOutputStream(fileNameWithPath, false);
// write the document content
document.writeTo(fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
document.close();
【问题讨论】: