我们正在构建一个与其他系统部分交互的应用程序.我们从其他系统中提取一些数据,这些数据作为RTF文档返回.但我们必须阻止用户编辑此文件,因此我们考虑将其与iText一起转换为PDF.代码段:
// moving the rtf data into input stream to be used in RTF parser
ByteArrayInputStream rtfInputStream = new ByteArrayInputStream(rtfStream.toByteArray());
// set headers
resp.setHeader("Cache-Control", "no-store");
resp.addHeader("Content-Type", "application/pdf");
resp.addHeader("Content-Disposition", "inline; filename=Karta.pdf");
resp.setStatus(HttpServletResponse.SC_OK);
// pdf output stream
ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
Document pdfDoc = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(pdfDoc, pdfStream);
pdfDoc.open();
RtfParser rtfParser = new RtfParser(null);
rtfParser.convertRtfDocument(rtfInputStream, pdfDoc);
pdfDoc.close();
pdfWriter.close();
resp.getOutputStream().write(pdfStream.toByteArray());
rtfInputStream.close();
pdfStream.close();
is.close();
创建了Pdf,但字体大小错误,样式错误,编码错误.也许你有类似的问题,你做了一些事情?也许有更好的解决方案?
解决方法:
根据这个post,Itext正在放弃RTF.
我使用的一个很好的解决方案是JODCoverter Library.它利用OpenOffice,我能够在过去将几千个RTF文档转换为PDF.
标签:java,pdf,pdf-generation,rtf
来源: https://codeday.me/bug/20190526/1158183.html