天天看點

記 iTextSharp 提取中文的問題 解決辦法讀取某個文本域的值

原文

問題

下面的代碼中 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 漢字 中文 日文 韓文