Android создает PDF-документ из веб-просмотра с несколькими страницами

Я использую платформу PdfDocument из Android (ссылка) для создания PDF-документ из моего содержимого веб-просмотра. PDF-файл создан хорошо, но это всего лишь одностраничный документ. Когда содержимое веб-просмотра велико, мне нужно создать многостраничный документ. ВСЕ, ЧТО МНЕ НУЖНО РАЗДЕЛАТЬ КОНТЕНТ WEBVIEW НА СТРАНИЦЫ. Как я могу этого добиться? Я не хочу использовать iText или какую-либо стороннюю библиотеку.

Нужна помощь, пожалуйста. Заранее спасибо.

// create a new document
PdfDocument document = new PdfDocument();

// create a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, 1).create();

// start a page
PdfDocument.Page page = document.startPage(pageInfo);

// draw something on the page
View content = myWebview;
content.draw(page.getCanvas());

// finish the page
document.finishPage(page);

FileOutputStream fos;
try {
    fos = new FileOutputStream(fileNameWithPath, false);
    // write the document content
    document.writeTo(fos);

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

// close the document
document.close();

person user3065901    schedule 26.01.2015    source источник
comment
Вы нашли решение? Я тоже пытаюсь это решить.   -  person Annabelle    schedule 11.12.2015
comment
@Annabelle вы нашли какое-нибудь решение?   -  person Rucha Bhatt Joshi    schedule 27.02.2019
comment
К сожалению, нет. Вопрос все еще актуален для меня   -  person Annabelle    schedule 04.03.2019


Ответы (2)


Если вы хотите создать несколько страниц, просто вызовите startPage () и finishPage () для каждой страницы, которую вы хотите создать в своем документе.
Примерно так:

// create document
PdfDocument document = new PdfDocument();

// create a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, 1).create();

// start 1st page
PdfDocument.Page page = document.startPage(pageInfo);
// draw something on the page
View content = myWebview;
content.draw(page.getCanvas());
// finish 1st page
document.finishPage(page);

// start 2nd page
PdfDocument.Page page = document.startPage(pageInfo);
// draw something on the page
View content = someOtherWebview;
content.draw(page.getCanvas());
// finish 2nd page
document.finishPage(page);

// and so on...

FileOutputStream fos;
try {
    fos = new FileOutputStream(fileNameWithPath, false);
    // write the document content
    document.writeTo(fos);

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

// close the document
document.close();
person rtome    schedule 26.01.2015
comment
Я знаю, что могу добавить больше страниц, но я хочу разделить контент веб-просмотра на несколько страниц, если этот контент слишком длинный для страницы ISO A4. - person user3065901; 27.01.2015
comment
хорошо, я понимаю вашу проблему с длинным содержанием. Я не понимаю, как можно обрезать и распределить сегменты контента по нескольким страницам. Может быть, вы сможете получить высоту веб-просмотра и масштабировать холст? - person rtome; 27.01.2015

У меня была такая же проблема последние пару дней, поэтому я нашел этот ответ от Ракеша Гопати, он работал безупречно. Я действительно рекомендую всем, кто использует собственные классы PdfDocument, проверить это из.

person Rafael    schedule 12.07.2017
comment
я проверил это; он работает нормально, но все же я не могу создать в нем несколько страниц, создается только одна страница. - person Rucha Bhatt Joshi; 27.02.2019
comment
У меня это сработало, как и ожидалось. Создано несколько страниц - person Vlad; 26.06.2019