需要帮助pdf-renderer

时间:2010-09-03 03:19:38

标签: java java-io pdfrenderer

我正在使用PDF-Renderer在我的java应用程序中查看PDF文件。它适用于普通的PDF文件。

但是,我希望应用程序能够显示加密的PDF文件。 ecrypted文件将使用 CipherInputStream 进行解密,但我不想将解密的数据保存在磁盘上。我试图想办法将 CipherInputStream 中的解密数据传递给 PDFFile 构造函数,而不必将解密数据写入文件。

如果有人可以提供PDF-Renderer教程的链接,我也将不胜感激,以便我可以阅读更多内容。

感谢。

1 个答案:

答案 0 :(得分: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);