Это не дублирующий вопрос. Я опубликовал этот вопрос и попробовал много вариантов.
У нас есть веб-страница, в которой пользователь должен иметь возможность вводить данные в текстовые поля, текстовые области, изображения, а также редакторы Rich Text. Эти данные должны быть заполнены в существующем отчете, например, заполнение пробелов.
Я смог достичь функциональности, используя Apache FOP, когда пользовательский ввод представляет собой простой текст. Но Apache FOP не работает, если пользовательский ввод - Rich Text (html-формат). FOP не будет отображать html, и он просто подталкивает html-код (ex: <strong> XYZ/strong>
) в pdf. Я попытался использовать iText, но вот здесь проблема заключается в том, что даже если iText поддерживает рендеринг html в pdf, он не может помещать изображения, которые включены в теги <img>
, в файл pdf.
Я могу попытаться создать pdf файл, используя iText-блок-блок за блоком, но проблема заключается в том, что богатые текстовые данные, введенные пользователем, не могут быть встроены между кодом, так как построение pdf-блока по блоку и html в pdf не может быть сделано вместе в iText. Или, по крайней мере, это то, что я думаю по моему опыту.
Есть ли другой способ создать PDF файл из java с изображениями, богатым текстовым рендерингом, так как есть верхние и нижние колонтитулы?
Я не пытаюсь продавать или продвигать этот продукт. Этот api фактически решил нашу проблему, поэтому подумал об этом, так как это могло бы помочь другим разработчикам. сообщите мне, если это противоречит вашей политике.
Я наконец понял, что решение для моего требования не может быть достигнуто ни с FOP, iText, Aspose, Flying Saucer, JODConverter.
Я нашел платный api Sferyx. Этот api позволяет отображать очень сложный html файл, сохраняя при этом оригинальный стиль. Он также отображает изображения, включенные в html. Мы все еще изучаем этот api и опубликуем другие функции, которые предоставляет api.
Я работаю в качестве разработчика социальных медиа для Aspose и добавляю богатый текст в поле формы в файле PDF, вы можете попробовать наш Aspose.Pdf для Java API. Проверьте следующий пример кода:
// Open a PDF document
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("c:\\data\\input.pdf");
//Find Rich TextBox field using Field Name
RichTextBoxField textBoxField1 = (RichTextBoxField)pdfDocument.getForm().get("textbox1");
//Set the field value
textBoxField1.setValue("<strong> XYZ </strong>");
// Save the modified PDF
pdfDocument.save("c:\\data\\output2.pdf");
iText предоставляет возможность конвертировать HTML-данные в Pdf. Ниже приведен фрагмент:
Lets assume the html data is available as Input Stream (If its a String then we can convert it to InputStream using Apache Commons - IOUtils)
InputStream htmlData; // Html Data that needs to converted to Pdf
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Document document = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
document.open();
// convert the HTML with the built-in convenience method
XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, document, htmlData);
document.close();
// outputStream now has the required pdf data