0
映像ショーとして、私はいくつかの検証を行うにバイトレンジからバイト配列を取得する必要があり、彼らは840から0と960 iText7でByteRangeを取得するにはどうすればよいですか?
1200へある私は、同様の質問が見つかりました:In Itext 7, how to get the range stream to sign a pdf?
映像ショーとして、私はいくつかの検証を行うにバイトレンジからバイト配列を取得する必要があり、彼らは840から0と960 iText7でByteRangeを取得するにはどうすればよいですか?
1200へある私は、同様の質問が見つかりました:In Itext 7, how to get the range stream to sign a pdf?
を独自の検証コードの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
を使用して、それから結果のバイト配列を取得することができます。
ありがとうございます!それが本当に必要なのです! – JDNew