首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用iTextSharp提取PDF文档的ID

使用iTextSharp提取PDF文档的ID
EN

Stack Overflow用户
提问于 2015-10-21 07:36:38
回答 1查看 1.2K关注 0票数 0

我需要提取PDF标识在文件的预告片部分提到。但我无法得到那个价值。例如:以下是我的pdf档案中提及的事项:

代码语言:javascript
复制
trailer
<</Size 196/Prev 370761/Root 160 0 R/Info 158 0 R/ID[<30EB7FCBB6756E461176FBBD0CEBA7B9><DB67D6D43AE0FA4FBF8CC171FC66790A>]>>

我需要提取值30EB7FCBB6756E461176FBBD0CEBA7B9。使用PdfReader.Trailer,我得到一个字典类型的对象,如果一个键为'ID‘,但我不能从它得到上述所需的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 14:17:53

使用PdfReader.Trailer,我得到一个字典类型的对象,如果一个键为'ID‘,但我不能从它得到上述所需的值。

看看PdfReader.Trailer,你就快到了:

代码语言:javascript
复制
public PdfArray GetId(string FileName)
{
    using (PdfReader pdfReader = new PdfReader(FileName))
    {
        return pdfReader.Trailer.GetAsArray(PdfName.ID);
    }
}

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

您似乎对ID的十六进制表示感兴趣。

代码语言:javascript
复制
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,因此可能有许多更优雅的方法来创建字节数组的十六进制转储。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33253523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档