2014-12-01 5 views
3

Вот мой код, чтобы конвертировать HTML в PDF:андроид создать PDF-файл из HTML текста

public boolean create (String htmlText, String absoluteFilePath) { 
try { 
    Document document = new Document(PageSize.LETTER); 
    PdfWriter pdfWriter = PdfWriter.getInstance 
      (document, new FileOutputStream(absoluteFilePath)); 
    document.open(); 

    // Fixing xhtml tag 
    Tidy tidy = new Tidy(); // obtain a new Tidy instance 
    tidy.setXHTML(true); // set desired config options using tidy setters 
    ByteArrayOutputStream output = new ByteArrayOutputStream(); 
    tidy.setCharEncoding(Configuration.UTF8); 
    tidy.parse(new ByteArrayInputStream(htmlText.getBytes(), output); 
    String preparedText = output.toString("UTF-8"); 

    Log.i("CHECKING", "JTidy Out: " + preparedText); 

    InputStream inputStream = new ByteArrayInputStream(preparedText.getBytes()); 
    XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, document, 
      inputStream, null, Charset.forName("UTF-8"), new MyFont()); 

    document.close(); 
    return true; 
} catch (Exception e) { 
    File file = new File(absoluteFilePath); 
    if(file.exists()) { 
     boolean isDeleted = file.delete(); 
     Log.i("CHECKING", "PDF isDeleted: " + isDeleted); 
    } 
    LOGGER.error("Exception: " + e.getMessage()); 
    e.printStackTrace(); 
    return false; 
} 

}

Он работает для этого следующего HTMLText

<p dir="ltr"><br> 
 
wwwww<br> 
 
--- <br> 
 
Sent bys.</p> 
 

 

 
<p>Original message:</p> 
 
<blockquote> 
 
<strong>From: </strong> 
 
[email protected] 
 
<br/> 
 
<strong>Sent: </strong> 
 
Dec 1, 2014 5:10:19 PM 
 
<br/> 
 
<strong> 
 
To: 
 
</strong> 
 
ssss 
 
<br/> 
 
<strong>Subject: </strong> 
 
test 
 
<br/> 
 
<br/> 
 
<p dir="ltr"> 
 
<br> 
 
123<br> 
 
--- <br> 
 
ssssssss.</p> 
 
</blockquote>

И не работает этот следующий htmlText:

<p dir="ltr"><br> 
 
123<br> 
 
--- <br> 
 
Sent by ss.</p> 
 

 

 
<p>Original message:</p> 
 
<blockquote> 
 
<strong>From: </strong> 
 
Navruzbek Akhmedov <[email protected]> 
 
<br/> 
 
<strong>Sent: </strong> 
 
Dec 1, 2014 5:14:36 PM 
 
<br/> 
 
<strong> 
 
To: 
 
</strong> 
 
Navruzbek Akhmedov <[email protected]> 
 
<br/> 
 
<strong>Subject: </strong> 
 
test 
 
<br/> 
 
<br/> 
 
<div dir="ltr">12345</div> 
 
</blockquote>

Пожалуйста, помогите мне, почему это работает по-другому, и это дает ошибку для Secon HTMLText document has no pages и OutputStream пуст после этого tidy.parse(new ByteArrayInputStream(htmlText.getBytes("ISO-8859-1")), output);. Заранее спасибо!

+0

Я пропустил что-л? Возможно, html-текст недействителен, который не работает! – nAkhmedov

+0

Это работает как шарм :))))))))) – nAkhmedov

+0

Вы используете iText для преобразования pdf? – Hunt

ответ

1

Я недавно решил эту проблему. Проблема была Navruzbek Akhmedov <[email protected]> в тексте html. iText lib, кажется, видит <[email protected]>, как HTML-тег. Он не имеет фактически в списке тегов html, а затем дает ошибку. Это все! :)))))))))))))))))))

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