我正在尝试使用 iTextSharp 读取 PDF 注释的外观流,并从流中获取内容文本。
我正在使用以下代码:
public String ExtractAnnotationText(PdfStream xObject)
{
PdfDictionary resources = xObject.GetAsDict(PdfName.RESOURCES);
ITextExtractionStrategy strategy = new LocationTextExtractionStrategy();
PdfContentStreamProcessor processor = new PdfContentStreamProcessor(strategy);
byte[] contentByteArray = ContentByteUtils.GetContentBytesFromContentObject(xObject);
processor.ProcessContent(contentByteArray, resources);
return strategy.GetResultantText();
}
xObject
从外观字典中检索并像这样传入:
PRStream value = (PRStream)appearancesDictionary.GetAsStream(key);
String text = ExtractAnnotationText(value);
这通常适用于从注释中获取外观文本,但我发现了一个xObject
没有/Resources
键的 FreeTextCallout 示例,如其 hashMap 所示:
[/Type, /XObject]
[/Subtype, /Form]
[/FormType, 1]
[/Length, 71]
[/Matrix, [1, 0, 0, 1, -28.7103, -643.893]]
[/BBox, [28.7103, 643.893, 597.85, 751.068]]
[/Filter, /FlateDecode]
在这种情况下,是否有另一种方法来构造Resources
字典以传递给PdfContentStreamProcessor.ProcessContent()
?甚至不使用获取文本的不同方式ProcessContent()
?