2016-08-06 46 views
7

我目前正在嘗試使用iTextSharp的使用下面的代碼,並分配給一個文本框(多)來讀取PDF文件中的文本 - (Windows桌面應用程序)閱讀數學方程式使用iTextSharp的

注:此代碼工作正常。

public string ReadPdfFile(string fileName) 
     { 
      StringBuilder text = new StringBuilder(); 

      if (File.Exists(fileName)) 
      { 
       PdfReader pdfReader = new PdfReader(fileName); 

       for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
       { 
        ITextExtractionStrategy strategy = new LocationTextExtractionStrategy(); 
        string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 

        currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); 
        text.Append(currentText); 
       } 
       pdfReader.Close(); 
      } 
      return text.ToString(); 
     } 

,但我的pdf文件有一個公式

enter image description here

和所有我得到的是follwing輸出

enter image description here

什麼可以在這裏加入以達到以下文字?任何形式的幫助真的會被讚賞!

+0

我提出這個問題,因爲我覺得它很有趣,但我認爲這將是非常非常困難的。 pdf是如何創建的?你可以分享嗎? –

+4

你希望得到什麼樣的輸出?你的數學表達式不能在基礎多語言平面中表達。 – usr2564301

+0

@amedeevangasse這很簡單。看看乳膠軟件!您需要爲其啓動數學模式,輸入方程式並以PDF格式輸出。 –

回答

1

我使用了itextsharp,我100%確定它不可能。 問題在於pdf格式本身。它不包含引用某些文本的任何標籤。 PDF包含內容的具體圖形表示,在pdf頁面上有其位置。如果沒有OCR,甚至不可能檢測粗體文本。 Pdf不是很好的解析格式。

我的問題比你更容易,它從PDF閱讀是地獄。它只是文本,但它被合併爲2頁(2列文本)。 Itextsharp通過座標讀取內容,所以當我讀第一列的第一行時,我的文本被混淆了,而不是第二列的第一行(而不是文本流)。 至於乳膠,乳膠代碼轉換爲PDF後,沒有反向乳膠代碼。