原文
問題
下面的代碼中 currentText 能提取到大部分漢字
但是字型為 Non-Embedded Font: AdobeSongStd-Light(Horizontal) 的漢字提取不到
PdfReader pdfReader = new PdfReader(@"E:\Desktop\file.pdf");
var currentText = string.Empty;
for (int i = 0; i < pdfReader.NumberOfPages; i++)
{
currentText += PdfTextExtractor.GetTextFromPage(pdfReader, i + 1, new LocationTextExtractionStrategy());
}
解決辦法
增加 iTextSharp 的中文,韓文,日文字型包
//1. 我使用的iTextSharp 5.5.13.2
//2. 引用 iTextAsian.dll 2.1 版本和iTextAsianCmaps.dll 1.0 版本
//3. 讀取pdf前加載字型包
StreamUtil.AddToResourceSearch(System.Reflection.Assembly.Load("iTextAsian"));
StreamUtil.AddToResourceSearch(System.Reflection.Assembly.Load("iTextAsianCmaps"));
讀取某個文本域的值
RenderFilter[] filter = { new RegionTextRenderFilter(new System.util.RectangleJ(393, 676,1, 1)) };//即使選取了一個很小的1*1區域,隻要這個區域在這個文本域内,也能讀取到整個文本内容
ITextExtractionStrategy strategy =
new FilteredTextRenderListener(
new LocationTextExtractionStrategy(), filter);
currentText += PdfTextExtractor.GetTextFromPage(pdfReader, pageNum, strategy);
附件
iTextAsianCmaps.dll
iTextAsian.dll
Tags
iTextSharp pdf
iTextAsian.dll 2.1
iTextAsian-all-2.1.zip
Chinese 漢字 中文 日文 韓文