我正在尝试将WebView的文本内容转换为PDF。使用下面的代码。
PdfDocument.Page page = document.StartPage(new PdfDocument.PageInfo.Builder(webpage.Width, webpage.Height, 1).Create());
webpage.Draw(page.Canvas);
PDF已正确生成,但我无法从该PDF中选择文本。它类似于WebView的内容,但转换为图像。
但是,如果我尝试从打印菜单中打印相同的WebView并将其保存为PDF,则文本选择有效并且pdf的大小较小。
那么我该如何从也可以选择文本的WebView中创建PDF。
例如选择文本。
答案 0 :(得分:1)
您所做的是将网页作为图像打印到PDF画布上-这就是为什么尺寸更大,并且您无法选择文本的原因。因为文本不是作为文本对象存在,而是作为图像存在。 这样做的原因是您将Web视图(而不是网页)绘制到PDF画布上。就像将视图本身作为位图输出到PDF一样。
您可能想要使用XHTML到PDF渲染库,例如iText或Flying Saucer,以将XHTML网页(而不是Webview!)正确渲染为PDF。
答案 1 :(得分:1)
您可以使用iText库,在gradle中添加此依赖项
编译'com.itextpdf:itextg:5.5.10'
现在将Webview的文本转换为pdf
try {
File mFolder = new File(getExternalFilesDir(null) + "/sample");
File imgFile = new File(mFolder.getAbsolutePath() + "/Test.pdf");
if (!mFolder.exists()) {
mFolder.mkdir();
}
if (!imgFile.exists()) {
imgFile.createNewFile();
}
String webviewText = "<html><body>Your webview's text content </body></html>";
OutputStream file = new FileOutputStream(imgFile);
Document document = new Document();
PdfWriter.getInstance(document, file);
document.open();
HTMLWorker htmlWorker = new HTMLWorker(document);
htmlWorker.parse(new StringReader(webviewText));
document.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}