如何将PDFObject / PDFDictionary转换为PDFArray

问题描述 投票:0回答:1

我正在尝试使用iTextSharp库解析标记PDF的标记结构。当标记包含多个子标记时,我们可以使用以下代码访问这些子标记:

PdfDictionary docElement = kids.GetAsDict(0);                
PdfArray kids_doc = docElement.GetAsArray(PdfName.K);

但是当标记只包含一个子标记时,我无法使用上面的代码,因为它返回null而不是PDFArray对象。所以我尝试使用以下代码将PDFObject强制转换为PDFArray:

var docElement = kids.GetAsDict(0);
PdfObject pdfObj = docElement.Get(PdfName.K);                    
PdfArray arr = (PdfArray)pdfObj; 

但由于无法将PDFIndirectReference转换为PDFArray,因此抛出异常。如果在PDFArray对象中> = 1,任何人都可以帮助我获取输出:标记的孩子

itext
1个回答
1
投票

我用另一种方法解决了我面临的问题:我没有将PDFObject / PDFDictionary转换为PDFArray,而是创建了新的PDFArray对象,然后删除了PDFName.K的现有密钥,并将之前创建的数组添加为PDFName.K。我给出的解决方案如下:

PdfArray arr = new PdfArray();
PdfObject pdfObj = docElement.Get(PdfName.K);  
arr.Add(pdfObj);                                        
for (int i = 1; i < kidsCount; i++)
{                        
    arr.Add(kids[i]);
}
docElement.Remove(PdfName.K);
docElement.Put(PdfName.K,arr);
© www.soinside.com 2019 - 2024. All rights reserved.