使用iTextSharp提取PDF文档的ID

本文关键字:ID 文档 PDF iTextSharp 提取 使用 | 更新日期: 2023-09-27 18:18:34

我需要提取文档尾部部分提到的PDF标识符。但我无法得到这个值。如。以下是我的pdf文件中提到的:

trailer
<</Size 196/Prev 370761/Root 160 0 R/Info 158 0 R/ID[<30EB7FCBB6756E461176FBBD0CEBA7B9><DB67D6D43AE0FA4FBF8CC171FC66790A>]>>

我需要提取值30EB7FCBB6756E461176FBBD0CEBA7B9。使用PdfReader.Trailer,如果一个键为'ID',我将获得对象的字典类型,但我无法从中获得上述所需的值。

使用iTextSharp提取PDF文档的ID

使用PdfReader.Trailer,如果一个键作为'ID',我得到对象的字典类型,但我无法从中获得上述所需的值。

PdfReader.Trailer你就快到了:

public PdfArray GetId(string FileName)
{
    using (PdfReader pdfReader = new PdfReader(FileName))
    {
        return pdfReader.Trailer.GetAsArray(PdfName.ID);
    }
}

这个方法返回文档的ID,一个由两个字节字符串组成的数组。

您似乎对ID的十六进制表示感兴趣。您可以像这样输出:

public void PrintId(PdfArray Id)
{
    if (Id != null)
    {
        StringBuilder builder = new StringBuilder();
        builder.Append("ID: ");
        foreach (PdfObject o in Id)
        {
            builder.Append("<");
            foreach (byte b in ((PdfString)o).GetBytes())
                builder.AppendFormat("{0:X}", b);
            builder.Append(">");
        }
        Console.WriteLine(builder.ToString());
    }
}

(我不是很精通。net,所以可能有许多更优雅的方法来创建十六进制字节数组转储)