用Java实现RTF到PDF

我们正在构建一个与其他系统部分交互的应用程序。 我们从其他系统中提取一些数据,这些数据作为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,但字体大小错误,样式错误,编码错误。 也许你有类似的问题,你做了一些事情? 也许有更好的解决方案?

Itext根据这篇文章放弃了RTF。 我使用过的一个很好的解决方案是JODCoverter Library 。 它利用OpenOffice,我能够在过去将数千个RTF文档转换为PDF。

考虑使用真正的文字处理器来生成PDF。 一个可能性可能是OpenOffice,它有这种问题的API – http://api.openoffice.org/ – 我会在你的情况下调查。

以后可以使用其他开源软件保护PDF。