如何从可以在新 PDF 中选择文本的 WebView 导出 PDF

Posted

技术标签:

【中文标题】如何从可以在新 PDF 中选择文本的 WebView 导出 PDF【英文标题】:How to export a PDF from WebView where I can select text, inside the new PDF 【发布时间】:2019-05-16 23:21:46 【问题描述】:

我正在尝试将 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,其中文本也是可选的。

例如。文本选择。

【问题讨论】:

我认为需要更多有关情况的信息和背景 其实Webview是转换成图片在pdf上绘制的。我希望 Webview 文本内容写在 pdf 上而不是图像上,而是作为文本。 在这里查看答案:***.com/questions/9579772/… 【参考方案1】:

您所做的是将网页作为图像打印到 PDF 画布上 - 这就是尺寸较大的原因,您无法选择文本。因为文本不是作为文本对象出现在那里,而是作为图像出现。 这样做的原因是您将 web 视图(而不是网页)绘制到 PDF 画布上。这就像将视图本身作为位图输出到 PDF。

您可能想要做的是使用 Xhtml 到 PDF 呈现库,如 iText 或 Flying Saucer,将 XHTML 网页(而不是 web 视图!)正确呈现为 PDF。

【讨论】:

【参考方案2】:

你可以为此使用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();
        

【讨论】:

以上是关于如何从可以在新 PDF 中选择文本的 WebView 导出 PDF的主要内容,如果未能解决你的问题,请参考以下文章

Mac备忘录内容怎么做成PDF文档

使用servlet在新窗口中打开pdf文件

如何在目标c中选择PDF文件中的文本?

从 GSP 页面中的变量路径名在新窗口中打开 pdf 文件

如何在 PDF 视图中启用连续文本选择以便我可以添加注释?

如何在Android Studio中将Pdf文件转换为文本