#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. Вот пример:ЗАО «ПК «Рога и Копыта»Сам метод создания 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(); } Результат
Сертифицирован
Сх. № ПР-RR-00011-18
от 10.04.2018
Комментариев нет:
Отправить комментарий