Question

J'utilise PDF pour afficher les fichiers Renderer PDF dans mon application java. Il fonctionne parfaitement pour les fichiers PDF normaux.

Cependant, je veux l'application pour pouvoir afficher les fichiers PDF cryptés. Le fichier ecrypted sera déchiffré avec CipherInputStream , mais je ne veux pas enregistrer les données déchiffrées sur le disque. Essaie de trouver un moyen que je peux transmettre les données decryted de CipherInputStream PDFfile constructeur sans avoir à écrire les données decryted fichier.

Je vais aussi apprécier si quelqu'un peut aider avec un lien vers tutoriel PDF Renderer, afin que je puisse lire plus sur elle.

Merci.

Était-ce utile?

La solution

Essayez la classe suivante:

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;
}
}

Alors, appelez:

PDFFileUtility.getPDFFile(myCipherInputStream);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top