Для создания PDF есть библиотека iText, написанная на Java, начиная с версии 5 распространяющаяся по лицензии AGPL.
Для создания отчета в виде таблицы для Android я использовал версию 5.5.10:
1 |
implementation 'com.itextpdf:itextg:5.5.10' |
Но с отображением кириллицы есть нюанс. Нужно загрузить шрифт (из assets, например) и правильно его установить.
Загружаем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
private static BaseFont baseFont = loadBaseFont("/assets/times-roman.ttf"); private static Font font = new Font(baseFont, 9, Font.NORMAL, BaseColor.BLACK); /** * Загружаем шрифт из .ttf файла * @param fontName Путь к файлу * @return */ private static BaseFont loadBaseFont(String fontName) { BaseFont baseFont= null; try { baseFont = BaseFont.createFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return baseFont; } |
Устанавливаем. Вот так не получится:
1 2 |
Phrase phrase = new Phrase(text); phrase.setFont(font); |
Нужно так (указывать в конструкторе):
1 |
Phrase phrase = new Phrase(text, font); |
Тоже самое и с Paragraph:
1 |
Paragraph paragraph = new Paragraph(text, font); |
Приветствую.
Почему код работает только когда компилируешь debug версию приложения а в releas версии пустые места рисует