Hai bisogno di aiuto con il pdf renderer
-
26-09-2019 - |
Domanda
sto usando PDF-Renderer per visualizzare i file PDF all'interno della mia applicazione java. E 'perfettamente funzionante per i normali file PDF.
Tuttavia, voglio l'applicazione per essere in grado di visualizzare i file PDF criptati. Il file ecrypted verrà decifrato con CipherInputStream , ma non voglio salvare i dati decriptati su disco. Sto cercando di capire un modo per passare i dati decryted da CipherInputStream per il PDFFile costruttore senza dover scrivere i dati decryted al file.
I apprezzeranno anche se qualcuno può aiutare con un link al PDF-renderer tutorial, in modo che io possa leggere di più su di esso.
Grazie.
Soluzione
Provare la seguente classe:
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;
}
}
Così chiamata:
PDFFileUtility.getPDFFile(myCipherInputStream);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow