Brauchen Sie Hilfe mit PDF-Renderer
-
26-09-2019 - |
Frage
Ich bin mit PDF-Renderer von PDF-Dateien in meiner Java-Anwendung anzuzeigen. Es funktioniert perfekt für normale PDF-Dateien.
Allerdings mag ich die Anwendung in der Lage sein, verschlüsselte PDF-Dateien anzuzeigen. Die verschlüsselte Datei wird mit entschlüsselnden CipherInputStream , aber ich will nicht die entschlüsselten Daten auf der Festplatte speichern. Ich versuche einen Weg zu i die decryted Daten von passieren kann CipherInputStream pdffile Konstruktor ohne die decryted Daten-Datei zu schreiben.
Ich werde es begrüßen auch, wenn jemand mit einem Link zu PDF-Renderer Tutorial helfen kann, so dass ich auf sie mehr lesen kann.
Danke.
Lösung
Versuchen Sie, die folgende Klasse:
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;
}
}
So Aufruf:
PDFFileUtility.getPDFFile(myCipherInputStream);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow