这不是一个重复的问题。在发布此问题之前,我曾搜索并尝试了许多选项。
我们有一个网页,用户应该可以在文本框,文本区域,图像和Rich Text编辑器中输入数据。必须在现有报告中填写此数据,例如填写空白。
当用户输入是简单文本时,我能够使用Apache FOP实现功能。但是如果用户输入是Rich Text(html格式),则Apache FOP不起作用。 FOP不会呈现html,只是将html代码(例如:<strong> XYZ /strong>
)推送到pdf中。
我尝试使用iText,但这里的挫折是即使iText支持将html渲染为pdf,它也无法将包含在<img>
标签中的图像放在pdf文件中。
我可以尝试使用iText api逐块创建pdf,但问题是用户输入的富文本数据无法嵌入代码之间,因为逐块构建pdf而html到pdf无法一起完成在iText。或者至少这是我根据自己的经验思考的。
有没有其他方法可以用java创建一个带有图像的PDF文件,富文本呈现,页眉和页脚?
答案 0 :(得分:0)
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
答案 1 :(得分:0)
我是Aspose的社交媒体开发人员,并在PDF文件的表单字段中添加富文本,您可以尝试我们的Aspose.Pdf for 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");
答案 2 :(得分:0)
我不是在尝试营销或推广此产品。这个api实际上解决了我们的问题所以想到它可能会帮助开发人员。如果这违反了你的政策,请告诉我。
我终于意识到使用FOP,iText,Aspose,Flying Saucer,JODConverter无法实现我的要求的解决方案。
我找到了付费的api Sferyx。这个api允许渲染非常复杂的html到pdf几乎保留原始样式。它还渲染包含在html中的图像。我们仍在探索这个api,并将发布这个api提供的其他功能。