用Java实现RTF到PDF

时间:2010-08-28 15:09:52

标签: java pdf pdf-generation rtf

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

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