Как экспортировать PDF из WebView, где я могу выделить текст, внутри нового PDF - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь преобразовать текстовое содержимое 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 меньше.

Так как я могу создать PDF из WebView, гдетекст также можно выбрать.

Например.выделения текста.

Sample UI action

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Для этого вы можете использовать библиотеку iText , добавить эту зависимость в gradle

compile '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();
        }
0 голосов
/ 24 декабря 2018

То, что вы сделали, это распечатали веб-страницу в виде изображения на холсте PDF - поэтому размер больше, и вы не можете выбрать текст.Потому что текст там присутствует не как текстовый объект, а как изображение.Причина этого в том, что вы рисуете веб-представление (а не веб-страницу) на холсте PDF.Это похоже на вывод самого представления в виде растрового изображения в PDF.

Вам может потребоваться использовать библиотеку рендеринга XHTML в PDF, такую ​​как iText или Flying Saucer, для правильной визуализации веб-страницы XHTML (ине веб-просмотр!) в PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...