2010-09-03 123 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);