如何将PDFObject / PDFDictionary转换为PDFArray

时间:2018-09-06 08:08:50

标签: itext

我正在尝试使用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而引发异常。 任何人都可以帮助我获取输出:Tag的孩子,如果它在PDFArray对象中> = 1

1 个答案:

答案 0 :(得分:1)

我解决了另一种方法所面临的问题:我没有创建PDFArray对象,而是将PDFObject / PDFDictionary转换为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);