سؤال

أنا أستخدم PDF-Renderer لعرض ملفات PDF ضمن تطبيق Java الخاص بي. إنه يعمل بشكل مثالي لملفات PDF العادية.

ومع ذلك ، أريد أن يكون التطبيق قادرًا على عرض ملفات PDF المشفرة. سيتم فك تشفير الملف Ecrypted cipherinputstream, ، لكنني لا أريد حفظ البيانات التي تم فك تشفيرها على القرص. أحاول تحديد طريقة يمكنني من خلالها تمرير البيانات التي تم تجفيفها من cipherinputstream إلى ملف 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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top