PDFレンダラーについてヘルプが必要です
-
26-09-2019 - |
質問
Java アプリケーション内で PDF ファイルを表示するために PDF-Renderer を使用しています。通常の PDF ファイルでは完全に機能します。
ただし、アプリケーションで暗号化された PDF ファイルを表示できるようにしたいと考えています。暗号化されたファイルは次のように復号化されます。 暗号入力ストリーム, しかし、復号化されたデータをディスクに保存したくありません。復号化されたデータを渡す方法を考え中です 暗号入力ストリーム に PDFファイル 復号化されたデータをファイルに書き込む必要なく、コンストラクターを実行できます。
また、誰かが PDF-Renderer チュートリアルへのリンクを提供してくれると助かります。そうすれば、さらに詳しく読むことができます。
ありがとう。
解決
次のクラスを試してください。
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);
所属していません StackOverflow