Задача: из переданного 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(); }
Результат
Комментариев нет:
Отправить комментарий