我正在尝试使用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
答案 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);