Java 如何从WebView导出PDF,我可以在新PDF中选择文本
我正在尝试将WebView的文本内容转换为PDF。使用下面的代码Java 如何从WebView导出PDF,我可以在新PDF中选择文本,java,android,pdf,webview,Java,Android,Pdf,Webview,我正在尝试将WebView的文本内容转换为PDF。使用下面的代码 PdfDocument.Page page = document.StartPage(new PdfDocument.PageInfo.Builder(webpage.Width, webpage.Height, 1).Create()); webpage.Draw(page.Canvas); PDF已正确生成,但我无法从该PDF中选择文本。它类似于WebView内容,但已转换为图像 但如果我尝试从“打印”菜单打印相同的网络视图
PdfDocument.Page page = document.StartPage(new PdfDocument.PageInfo.Builder(webpage.Width, webpage.Height, 1).Create());
webpage.Draw(page.Canvas);
PDF已正确生成,但我无法从该PDF中选择文本。它类似于WebView内容,但已转换为图像
但如果我尝试从“打印”菜单打印相同的网络视图并将其另存为PDF,则文本选择会起作用,PDF的大小会更小
因此,如何从WebView创建PDF,其中文本也是可选的
例如文本选择。
您所做的是将网页作为图像打印到PDF画布上-这就是为什么页面大小更大,并且您无法选择文本的原因。因为文本不是以文本对象的形式出现,而是以图像的形式出现。 这样做的原因是,您将webview(而不是网页)绘制到PDF画布。这就像将视图本身作为位图输出到PDF一样 您可能想做的是使用XHTML到PDF的呈现库,如iText或Flying Discer,将XHTML网页(而不是webview!)正确呈现为PDF。您可以使用该库,在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();
}
试试看{
File mFolder=新文件(getExternalFilesDir(null)+“/sample”);
File imgFile=新文件(mFolder.getAbsolutePath()+“/Test.pdf”);
如果(!mFolder.exists()){
mkdir();
}
如果(!imgFile.exists()){
imgFile.createNewFile();
}
String webviewText=“您的webview的文本内容”;
OutputStream文件=新文件OutputStream(imgFile);
文档=新文档();
getInstance(文档、文件);
document.open();
HTMLWorker HTMLWorker=新HTMLWorker(文档);
parse(新的StringReader(webviewText));
document.close();
file.close();
}捕获(例外e){
e、 printStackTrace();
}
我认为需要更多的信息和情况背景。实际上,Webview已转换为图像并绘制在pdf上。我希望Webview文本内容不是以图像形式而是以文本形式写入pdf。请在此处查看答案: