使用iText阅读PDF注释

我试图将PDF注释的内容变为字符串,以便将该信息存储在数据库中以供搜索。

有谁知道如何使用iText / iTextSharp完成此操作?

是的,但具体细节实际上取决于你所说的注释的类型。

一般来说:

PdfDictionary pageDict = myPdfReader.getPageN(firstPageIsOne); PdfArray annotArray = pageDict.getAsArray(PdfName.ANNOTS); for (int i = 0; i < annotArray.size(); ++i) { PdfDictionary curAnnot = annotArray.getAsDict(i); int someType = myCodeToGetAnAnnotsType(curAnnot); if (someType == THIS_TYPE) { writeThisType(curAnnot); } else if (someType == THAT_TYPE) { writeThatType(curAnnot); } } 

有关详细信息,您需要检查PDF规范 ,特别是注释说明:“第12.5.6章注释类型”。

如果你能告诉我们你关心的类型,我可以提供更多帮助。

对于通过Google发现此问题的任何人的未来参考,就像我做的那样……

如果你想要做的是找到粘滞便笺注释名称和内容你可以做到这一点(部分基于马克的回答)

 PdfReader reader = new PdfReader(somePDF); PdfDictionary pageDict = reader.GetPageN(1); PdfArray annotArray = pageDict.GetAsArray(PdfName.ANNOTS); for (int i = 0; i < annotArray.Size; ++i) { PdfDictionary curAnnot = annotArray.GetAsDict(i); PdfString name = curAnnot.GetAsString(PdfName.T); PdfString contents = curAnnot.GetAsString(PdfName.CONTENTS); if (!string.IsNullOrWhiteSpace(name?.ToString())) { Console.WriteLine(name); } if (!string.IsNullOrWhiteSpace(contents?.ToString())) { Console.WriteLine(contents); } } 

此外,为了帮助确定您可能正在寻找的内容,您可以在文本编辑器中打开PDF并查找/不是,您将快速找到您的注释对象。