用Java实现RTF到PDF

jjc*_*pek 4 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();
Run Code Online (Sandbox Code Playgroud)

创建了Pdf,但字体大小错误,样式错误,编码错误.也许你有类似的问题,你做了一些事情?也许有更好的解决方案?

小智 5

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

  • JODConverter依赖于OpenOffice.是否有其他库可用,不需要安装任何软件?即我们可以捆绑所有库,无需任何外部安装即可收集. (2认同)