2

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 のものを待つ必要がありますか?

どうもありがとう。

4

1 に答える 1