По folowing сообщение: iTextSharp PDF Reading highlighed text (highlight annotations) using C#Как извлечь текст из PDF с помощью iTextSharp?
этот код:
for (int i = pageFrom; i <= pageTo; i++) {
PdfDictionary page = reader.GetPageN(i);
PdfArray annots = page.GetAsArray(iTextSharp.text.pdf.PdfName.ANNOTS);
if (annots!=null)
foreach (PdfObject annot in annots.ArrayList) {
PdfDictionary annotation = (PdfDictionary)PdfReader.GetPdfObject(annot);
PdfString contents = annotation.GetAsString(PdfName.CONTENTS);
// now use the String value of contents
}
}
}
работает, чтобы извлечь PDF аннотаций. Но почему же следующий код не работает для подсветки (в частности PdfName.HIGHLIGHT не работает):
for (int i = pageFrom; i <= pageTo; i++) {
PdfDictionary page = reader.GetPageN(i);
PdfArray annots = page.GetAsArray(iTextSharp.text.pdf.PdfName.HIGHLIGHT);
if (annots!=null)
foreach (PdfObject annot in annots.ArrayList) {
PdfDictionary annotation = (PdfDictionary)PdfReader.GetPdfObject(annot);
PdfString contents = annotation.GetAsString(PdfName.CONTENTS);
// now use the String value of contents
}
}
}
В случае многострочного основные моменты, которые начинаются или в конце в середине линии вы будете извлекать слишком много. Попробуйте изучить ** QuadPoints ** вместо ** Rect **. Например. [этот вопрос] (http://stackoverflow.com/q/32608083/1729265) обсуждает именно такую ситуацию, хотя и для другой библиотеки, и [этот ответ] (http://stackoverflow.com/a/33278436/1729265) обсуждает детали. – mkl