1 回答

TA貢獻1864條經驗 獲得超2個贊
您可以使用PdfPig?(.NET) 庫提取標記 pdf 的標記內容樹。我的理解是閱讀順序是由標記內容標識符(MCID)指示的。
如果標記的內容元素不包含 MCID(如分頁元素),則 MCID 將設置為 -1。
每個MarkedContentElement
都包含屬于它的字母、圖像和路徑:
? ? ? using UglyToad.PdfPig;
? ? ? ? [...]
? ? ? ? using (PdfDocument document = PdfDocument.Open(pathToFile))
? ? ? ? {
? ? ? ? ? ? for (int p = 0; p < document.NumberOfPages; p++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? var page = document.GetPage(p + 1);
? ? ? ? ? ? ? ? // extract the page's marked content
? ? ? ? ? ? ? ? var markedContents = page.GetMarkedContents();?
? ? ? ? ? ? ? ? var orderedMarkedContents = markedContents
? ? ? ? ? ? ? ? ? ? ? ?.OrderBy(mc => mc.MarkedContentIdentifier);
? ? ? ? ? ? ? ? foreach (var mc in orderedMarkedContents)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? // do something
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
如果你想將結果提取到 XML,你可以看看這個PageXmlTextExporter類。請查看wikiITextExporter以獲取有關和的更多信息IReadingOrderDetector。
注意:我是這個庫的積極貢獻者。
添加回答
舉報