2010-08-28 122 views
4

我們正在構建一個與其他系統部分交互的應用程序。我們從其他系統提取一些數據作爲RTF文檔返回。但是我們必須阻止用戶編輯這個文件,所以我們考慮將它與iText轉換爲PDF。代碼片段:從Java到RTF轉換爲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

PDF文件可以編輯,所以你的問題的整個基礎是錯誤的。你或者需要解釋你想要完成的事情,或者重新思考你是如何做到的。 – msw 2010-08-28 15:22:40

+0

pdf文件可以輕鬆編輯,但MOST的用戶只打開閱讀器,因此它們相對安全可靠。也許錯了。 – tgkprog 2014-01-17 07:32:40

回答

5

Itext根據此post放棄RTF。 我用過的一個很好的解決方案是JODCoverter Library。它利用了OpenOffice,過去我能夠將幾千個RTF文檔轉換爲PDF。

+1

這是完美的!只是我想讓它工作。但是,你可能設法從流轉換爲流?我無法得到這個工作,但除此之外,它完美的作品。 – jjczopek 2010-08-28 19:53:37

+1

JODConverter對OpenOffice有依賴性。是否有其他庫不需要安裝任何軟件?即,我們可以將所有庫收集起來,無需任何外部安裝。 – 2016-02-18 06:58:32

2

考慮使用真正的文字處理器來生成PDF。一個可能性是OpenOffice,它有一個用於解決這種問題的API - http://api.openoffice.org/ - 我會在你的情況下研究這個問題。

以後可以使用其他開源軟件保護PDF文件。