Страницы

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

пятница, 1 марта 2019 г.

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

Задача: из переданного 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(); }
Первый метод отрабатывает сейчас так:


Ответ

Первый вариант не позволяет вам работать с "координатами" так как он парсит 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(); }
Результат

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

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