Java 如何从WebView导出PDF,我可以在新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内容,但已转换为图像 但如果我尝试从“打印”菜单打印相同的网络视图

我正在尝试将WebView的文本内容转换为PDF。使用下面的代码

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。请在此处查看答案: