【发布时间】:2018-03-13 17:45:01
【问题描述】:
目前我正在使用自定义 LocationTextExtractionStrategy 从返回 TextRenderInfo[] 的 PDF 中提取文本。我希望能够确定 TextRenderInfo 对象(或 PDFString,TextRenderInfo 的子级)是否出现在特定图层中。我不确定这是否可能。要获取 PDF 中的图层,我使用的是:
Dictionary<string,PdfLayer> layers;
using (var pdfReader = new PdfReader(src))
{
var newSrc = Path.Combine(["new file location"]);
using (var stream = new FileStream(newSrc, FileMode.Create))
{
PdfStamper stamper = new PdfStamper(pdfReader, stream);
layers = stamper.GetPdfLayers();
stamper.Close();
}
pdfReader.Close();
src = newSrc;
}
为了提取文本,我使用的是:
var textExtractor = new TextExtractionStrategy();
PdfTextExtractor.GetTextFromPage(pdfReader, pdfPageNum,textExtractor);
List<TextRenderInfo> results = textExtractor.Results;
有什么方法可以检查单个 TextRenderInfo 结果是否存在于第一个代码 sn-p 中获得的图层中。任何帮助将不胜感激。
【问题讨论】:
-
这肯定是可能的,但在我开始回答之前:您在标题中提到您使用 iText 7,但您的代码非常清楚地用 iText 5 (iTextSharp) 编写。 API 相似,但不完全相同,因此我需要知道您想要什么才能回答您的问题。
-
抱歉,我正在使用 iTextSharp (5),感谢您的帮助。
标签: pdf text itext layer extraction