我们正在构建一个与其他系统部分交互的应用程序。我们从其他系统中提取一些数据,这些数据作为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,但字体大小错误,样式错误,编码错误。也许你有类似的问题,你做了一些事情?也许有更好的解决方案?
答案 0 :(得分:5)
Itext根据此post放弃了RTF。 我使用过的一个很好的解决方案是JODCoverter Library。它利用OpenOffice,我能够在过去将数千个RTF文档转换为PDF。
答案 1 :(得分:2)
考虑使用真正的文字处理器来生成PDF。一个可能性是OpenOffice,它有一个针对这类问题的API - http://api.openoffice.org/ - 我会在你的情况下调查。
以后可以使用其他开源软件保护PDF。