Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

iText PDF: запись HTML в PDF в кодировке UTF-8

#java #pdf #itext


Задача: из переданного HTML создать что-то наподобие печати (в заданных координатах)
внутри существующего PDF-документа.
Я нашел два варианта перекидывания HTML в PDF. 
Первый метод createPdfUtf8() поддерживает UTF-8, но нет возможности задать координаты.
Второй метод createPdf() без возможности задать кодировку, но позволяет играть с координатами.
Нет ли возможности задать первому методу координаты или же второму кодировку? Спасибо.

public static void main(String[] args) throws IOException, DocumentException {
    String html_S = "ЗАО «ПК «Рога и Копыта»"
            + "
Сертифицирован
" + "
Сх. № ПР-RR-00011-18
" + "
от 10.04.2018
"; createPdfUtf8("C:\\1.pdf", html_S); } public static void createPdfUtf8(String file, String html_S) throws IOException, DocumentException { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file)); document.open(); XMLWorkerHelper worker = XMLWorkerHelper.getInstance(); InputStream is = new ByteArrayInputStream(html_S.getBytes("UTF-8")); worker.parseXHtml(writer, document, is, Charset.forName("UTF-8")); document.close(); } public static void createPdf(String file, String html_S) throws IOException, DocumentException { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(file)); document.open(); PdfPTable table = new PdfPTable(2); table.addCell("Some rich text:"); PdfPCell cell = new PdfPCell(); for (Element e : XMLWorkerHelper.parseToElementList(html_S, null)) { cell.addElement(e); } table.addCell(cell); document.add(table); document.close(); } Первый метод отрабатывает сейчас так:


Ответы

Ответ 1



Первый вариант не позволяет вам работать с "координатами" так как он парсит html страницу и конвертирует её в pdf. Второй же позволяет вам работать с таблицами и не как не с "координатами". А теперь к решению. Вынесите весь ваш html в отдельный файл и там уже форматируйте страницу как вам удобно. После чего конвертируйте её в pdf. Вот пример:
ЗАО «ПК «Рога и Копыта»
Сертифицирован

Сх. № ПР-RR-00011-18

от 10.04.2018
Сам метод создания pdf файла ничем не отличается, лишь тем что html content читается из файла. public static void createPdfUtf8(String file) throws IOException, DocumentException { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file)); document.open(); XMLWorkerHelper worker = XMLWorkerHelper.getInstance(); InputStream is = Main.class.getResourceAsStream("file.html"); worker.parseXHtml(writer, document, is, Charset.forName("UTF-8")); document.close(); } Результат

Комментариев нет:

Отправить комментарий