2016-08-08 4 views
0

Я пытаюсь создать PDF на Android, но только для отображения некоторой информации, когда я нажимаю кнопку, а не для ее сохранения на мобильном телефоне. Я получаю эту ошибку:Зачем возникает эта ошибка: Необработанное исключение: com.itextpdf.text.DocumentException на Android?

Unhandled exception: com.itextpdf.text.DocumentException 

но я не понимаю, почему это происходит. У меня есть следующий код:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
PdfDocument pdf = new PdfDocument(); 

PdfWriter pdfWriter = PdfWriter.getInstance(pdf, baos); //Error here 
pdf.open(); 
pdf.add(new Paragraph("Hello world")); //Error here 
pdf.close(); 

byte[] pdfByteArray = baos.toByteArray(); 

Почему я получаю эту ошибку? Я неправильно использую библиотеку itextg? Я не мог найти никакой информации об этой ошибке.

P.S .: Я мог видеть, что ошибка связана с itext вместо itextg, так что я не знаю, если ошибка может быть произведена с этим фактом.

Заранее благодарен!

ответ

1

Это неправильно:

PdfDocument pdf = new PdfDocument(); 

В IText 5 PdfDocument класс для использования внутри только IText. Вместо этого вы должны использовать класс Document.

Адаптировать свой код так:

try { 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    Document document = new Document(); 
    PdfWriter pdfWriter = PdfWriter.getInstance(document, baos); //Error here 
    document.open(); 
    document.add(new Paragraph("Hello world")); //Error here 
    document.close(); 
    byte[] pdfByteArray = baos.toByteArray(); 
} 
catch (DocumentException de) { 
    // handle the exception when something goes wrong on the iText level. 
    // for instance: you add one element to another element that is incompatible 
} 
catch (IOException) { 
    // handle the exception when something goes wrong on the IO level. 
    // for instance: you try to write to a file in a folder that doesn't exist 
} 

Пожалуйста, прочитайте documentation тщательно, прежде чем начать экспериментировать самостоятельно. Вы можете найти пример Hello World в разделе Getting Started Q & As.

Реальная проблема вызвана тем, что вы не имеете try/catch (или throws), которая имеет дело с IOException или DocumentException.

Ваша ошибка полностью не связана с различием между iText (Java) и iTextG (Android). Вы используете методы, которые генерируют исключения. Вам нужно обрабатывать эти исключения, независимо от того, работаете ли вы на Java или Android.

Существует очень мало различий между iText и iTextG. Нет никакой причины иметь отдельную документацию iText и iTextG.

+0

спасибо! Я пошел в документацию, но не в том месте, где я думаю. Здесь я увидел [пример] (http://developers.itextpdf.com/content/itext-7-jump-start-tutorial/examples/chapter-1), который я использовал для создания PDF-файла. –

+1

Вы искали документацию для iText 7 (как видно из комментария в верхней части кода), у которой есть другой API из iText (G) 5. –

+0

@AmedeeVanGasse Спасибо за разъяснение. Я думал, что лучше использовать последнюю версию, поэтому я запутался. Опять же, спасибо! –

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