2017-09-13 395 views
0

我想從日文PDF中提取字符串。
但是,它出現亂碼。
我該怎麼做,或者我做錯了什麼?iText 7提取字符串時出現文字亂碼

iText.IO.Util.ResourceUtil.AddToResourceSearch("itext.font_asian.dll"); 
using (PdfReader reader = new PdfReader(pdfPath)) 
using (var doc = new PdfDocument(reader)) 
{ 
    var rect = new Rectangle(100, 100, 800, 800); 

    var filter = new TextRegionEventFilter(rect); 

    var pageCount = doc.GetNumberOfPages(); 

    for (int i = 1; i <= pageCount; i++) 
    { 
     ITextExtractionStrategy strategy = new FilteredTextEventListener(new LocationTextExtractionStrategy(), filter); 
     var page = doc.GetPage(i); 
     var str1 = PdfTextExtractor.GetTextFromPage(page, strategy); 
    } 
} 

的Visual Studio 2015年
C#.NET框架4.6.1
iText7(7.0.4自的NuGet)
iText.font亞洲(7.0.4自的NuGet)

PDF文件:Japanese_PDF.pdf

+0

亂碼如「我在看字符串時使用了錯誤的編碼?」或者在「我從PDF查看器複製/粘貼文本時得到相同的亂碼結果?」你的問題太不完整,無法回答。向我們展示PDF。字體是否有toUnicode圖? (如果這些問題太難以回答,我們*需要看PDF以便我們自己檢查。) –

+0

謝謝您的評論。並且我很抱歉我的問題不好。 PDF文件是作爲鏈接編寫的,但爲了清晰起見,我對其進行了編輯。 (您可以下載嗎?) 關於複製和粘貼:我可以從Acrobat Reader中顯示的PDF中選擇一個字符串並將其粘貼到記事本中。 我將從現在開始調查編碼。 可以從PdfDocument(PdfPage?)獲取Unicode圖嗎?我也會調查這一點。 – nob

回答

0

你正在做的一切都是正確的。對於某些CID字體,文本提取功能的確存在問題,直到7.0.4。現在在7.0.5-SNAPSHOT這是固定的問題不再轉載。

帶有當前快照版本的NuGet包可以從artifactory下載。

+0

非常感謝。 確認可以通過7.0.5-SNAPSHOT正常提取。 – nob