Itextpdf: в документе нет ошибок страниц - PullRequest
0 голосов
/ 25 июня 2019

У меня проблема с созданием файла PDF в моем приложении для Android с использованием ITextPdf.Я пытаюсь преобразовать линейную диаграмму MPAndroidChart в растровое изображение и сохранить ее в файл PDF.

Вот код метода saveToPdf ():

private void saveToPdf() {
    Bitmap bitmap = saveChartToBitmap();
    Document doc = new Document();
    File pdfCreated = new File(getBaseContext().getFilesDir() , "PDFCreated.pdf");
    try {
        PdfWriter.getInstance(doc, new FileOutputStream(pdfCreated));
        doc.open();

        Image image = Image.getInstance(bitmap);
        doc.newPage();
        doc.add(image);
        Toast.makeText(getBaseContext(), "Pdf created", Toast.LENGTH_SHORT).show();
    } catch (FileNotFoundException | DocumentException e) {
        e.printStackTrace();
    } finally {
        doc.close();
    }

И мой метод saveChartToBitmap ():

private Bitmap saveChartToBitmap() {
    if (lineChart.getMeasuredHeight() <= 0) {
        lineChart.measure(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        Bitmap b = Bitmap.createBitmap(lineChart.getMeasuredWidth(), lineChart.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        lineChart.layout(0, 0, lineChart.getMeasuredWidth(), lineChart.getMeasuredHeight());
        lineChart.draw(c);
        return b;
    } else {
        return null;
    }

}

Не знаю, неправильно ли что-то с моим преобразованием в bitmat или созданием объекта Image, но не могу понять это.Я получаю: в документе нет ошибок страниц.Поэтому мне нужен совет.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 26 июня 2019

Я решил свою проблему.Вместо того, чтобы передавать растровое изображение в метод Image.getInstance () в качестве аргумента, я преобразовал его в байтовый массив, и теперь он работает.Спасибо

0 голосов
/ 07 июля 2019

Сразу после открытия документа всегда добавляйте пустой чанк в документ, чтобы избежать этого исключения.

doc.open;

doc.add (новый блок (''));

0 голосов
/ 25 июня 2019

Проверьте, возвращает ли ваш saveChartToBitmap() метод null.Также вы видели тост сообщение.

...