2010-09-03 122 views
2

幫助我使用的PDF渲染器來查看我的Java應用程序中的PDF文件。它對於普通的PDF文件非常適用。需要與PDF渲染器

但是,我希望應用程序能夠顯示加密的PDF文件。該ecrypted文件將與CipherInputStream被解密,但我不希望保存在磁盤上的解密數據。我試圖找出一種方法,我可以從CipherInputStream通過decryted數據到PDFFile構造,而無需編寫的decryted數據保存到文件。

我也會感激,如果有人可以鏈接到PDF,渲染教程幫助下,使我可以更讀了。

謝謝。

回答

3

嘗試下面的類:

import com.sun.pdfview.PDFFile; 
import java.io.IOException; 
import java.io.InputStream; 
import java.nio.ByteBuffer; 
import java.nio.channels.Channels; 
import java.nio.channels.ReadableByteChannel; 

public class PDFFileUtility { 
private static final int READ_BLOCK = 8192; 

public static PDFFile getPDFFile(InputStream in) throws IOException { 
    ReadableByteChannel bc = Channels.newChannel(in); 
    ByteBuffer bb = ByteBuffer.allocate(READ_BLOCK); 
    while (bc.read(bb) != -1) { 
     bb = resizeBuffer(bb); //get new buffer for read 
    } 
    return new PDFFile(bb); 

} 

private static ByteBuffer resizeBuffer(ByteBuffer in) { 
    ByteBuffer result = in; 
    if (in.remaining() < READ_BLOCK) { 
    result = ByteBuffer.allocate(in.capacity() * 2); 
    in.flip(); 
    result.put(in); 
    } 
    return result; 
} 
} 

於是呼:

PDFFileUtility.getPDFFile(myCipherInputStream);