2017-11-03 6 views

答えて

1

を独自の検証コードのiTextも同じことをする必要があります。それはそのSignatureUtilクラスでそれを行います。従って、そのコードから単に借りることができる。このように:あなたはメモリにbyte[]としてバイト範囲をしたい場合は

try ( PdfReader pdfReader = new PdfReader(SOURCE_PDF); 
     PdfDocument pdfDocument = new PdfDocument(pdfReader);) { 
    SignatureUtil signatureUtil = new SignatureUtil(pdfDocument); 
    for (String name : signatureUtil.getSignatureNames()) { 
     PdfSignature signature = signatureUtil.getSignature(name); 
     PdfArray b = signature.getByteRange(); 
     RandomAccessFileOrArray rf = pdfReader.getSafeFile(); 
     try ( InputStream rg = new RASInputStream(new RandomAccessSourceFactory().createRanged(rf.createSourceView(), SignatureUtil.asLongArray(b))); 
       OutputStream result = TARGET_STREAM_FOR_name_BYTES) { 
      byte[] buf = new byte[8192]; 
      int rd; 
      while ((rd = rg.read(buf, 0, buf.length)) > 0) { 
       result.write(buf, 0, rd); 
      } 
     } 
    } 
} 

RetrieveSignedRangesテストtestExtractSignedBytes

、あなたはTARGET_STREAM_FOR_name_BYTESとしてByteArrayOutputStreamを使用して、それから結果のバイト配列を取得することができます。

+0

ありがとうございます!それが本当に必要なのです! – JDNew

関連する問題