C# 使用iText阅读PDF注释

C# 使用iText阅读PDF注释,c#,pdf,itext,C#,Pdf,Itext,我试图将PDF注释的内容转换为字符串,以便将该信息存储在数据库中进行搜索 有人知道如何使用iText/iTextSharp实现这一点吗?是的,但具体取决于您所谈论的注释类型 一般而言: PdfDictionary pageDict = myPdfReader.getPageN(firstPageIsOne); PdfArray annotArray = pageDict.getAsArray(PdfName.ANNOTS); for (int i = 0; i < annotArray

我试图将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);
  }
}
PdfDictionary pageDict=myPdfReader.getPageN(firstPageIsOne);
PdfArray annotArray=pageDict.getAsArray(PdfName.ANNOTS);
对于(int i=0;i
有关详细信息,您需要检查,特别是注释说明:“第12.5.6章注释类型”


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

供以后通过谷歌找到这个问题的人参考,就像我一样

如果您想查找便笺批注名称和内容,您可以这样做(部分基于Mark的答案)

PdfReader=newpdfReader(somePDF);
PdfDictionary pageDict=reader.GetPageN(1);
PdfArray annotArray=pageDict.GetAsArray(PdfName.ANNOTS);
对于(int i=0;i

另外,,为了帮助识别您可能要查找的内容,您可以在文本编辑器中打开PDF并查找/annot,您将很快找到注释对象。

您试图从哪些类型的注释中获取文本?标记我想获取添加为便笺的/text注释列表我已返回/annot词典,但不确定如何:看看它是否是文本注释和B:如何提取it@MarkStorer,我可以知道MycodeTogetAnnotStype中的进程是什么函数吗。
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); }
}