2017-02-03 4 views
2

У меня есть линейный макет Android, который я хочу преобразовать в формате PDF. Много раз этот PDF-файл охватывал несколько страниц. Хотя я могу преобразовать содержимое в PDF-файл с одной страницей, вам трудно сломать PDF-файл на многостраничный. Я дал соответствующий блок кода ниже, жестко закодировал некоторые цифры для простоты. Здесь PdfDocument.PageInfo.Builder принимает 3 аргумента - ширину, высоту и номер страницы (ранее он использовался для приема нового Rect (0,0,800,100), который больше не работает в API 23). Теперь, когда я повторяю цикл for, я не уверен, как получить различный контент для многостраничного PDF-файла. Текущий фрагмент кода, приведенный ниже, генерирует одинаковый контент для каждой страницы, поскольку он основан на ширине и высоте и не основан на координатах.Android - PdfDocument - взломать LinearLayout на несколько страниц PDF

PdfDocument.PageInfo pageInfo; 
    int noOfPages = (int)Math.floor(content.getHeight()/1000)+1; 
    for (int i=1;i<=noOfPages;i++) { 
     pageInfo = new PdfDocument.PageInfo.Builder 
       (800,1000,i).create(); 
     PdfDocument.Page page = document.startPage(pageInfo); 
     content.draw(page.getCanvas()); 
     document.finishPage(page); 
    } 

ответ

2

Ее было более 2-х лет, так как я в последний раз работал на PDFDocument вещи, так жаль, что я не точный ответ на ваш вопрос, но я поделюсь немного знаний о нем, надеюсь, это поможет вам ,

  1. В Android PDFDocument мы предоставим представление для отдельного PDFPage.
  2. При создании PDFPage мы будем Ширина & Высота для PDFPage (598px * 842px для формата A4).
  3. Следовательно, просмотр, который вы даете для написания PDFPage, должен быть того же размера, что и размер PDFPage.
  4. Итак, я считаю, что его ответственность за создание View для отдельной страницы с правильным размером (ширина & height) соответствует размер PDFPage (ширина & Height).
  5. PDFDocument - это дамп, который когда-либо просматривал PDFPage, который он напишет, следовательно, мы ответственны за создание вида для отдельной страницы. & передайте его в PDFDocument.

Образец

Посмотрите на код, который я написал 2года назад, который может помочь вам - https://gist.github.com/apvasanth03/ed903535aed12c93e30b102d9596c399

Примечание

Это будет трудно, как сломать ваш взгляд на разные страницы, если он содержит TextView с несколькими строками. У меня нет ответа.

Пожалуйста, поделитесь, если вы найдете какое-либо решение.

+0

Большое спасибо Vasanth за ваш немедленный ответ. Я ломаю голову на этот вопрос, но пока я тоже думаю о том же, что и ваш подход. Еще раз спасибо, оцените вашу помощь. –

+0

Размер A4 должен быть 595 x 842 справа? –

+0

Спасибо, код github спас мой день! – Hack06

Смежные вопросы