iTextSharp を使用して、PDF から SignatureNames を抽出しています。大きなサイズの AcroFiels と多くのページの PDF (~40MB および ~5000 ページ) にアクセスする際に問題 (過度の遅さ) が発生しました。
ここに私のコードスニペット:
using iTextSharp.text.pdf;
private static List<byte[]> GetSignsFromPDF(string filePath)
{
var result = new List<byte[]>();
var randomAccessFileOrArray = new RandomAccessFileOrArray(filePath);
var reader = new PdfReader(randomAccessFileOrArray, null);
var fields = reader.AcroFields;
if (fields == null)
{
return result;
}
var signatureNames = fields.GetSignatureNames();
signatureNames.Sort();
foreach (string name in signatureNames)
{
var sigDict = fields.GetSignatureDictionary(name);
var contents = sigDict.GetAsString(PdfName.CONTENTS);
if (contents != null)
{
result.Add(contents.GetOriginalBytes());
}
}
return result;
}
AcroFields にアクセスするスマートで高速な方法がありますか、それとも iTextSharp のものを待つ必要がありますか?
どうもありがとう。