2011-09-17 106 views
3

我正在使用pdfbox apipdf中提取文本。
我的程序工作正常,它實際上是從文本的PDF,但問題的字體在PDF中提取文本是華助會-GISTSurekh(印地文字體)和我的程序的輸出不是相同的字體是在忙拉
它甚至不匹配pdf中的文本。
我下載了相同的字體,即CDAC-GISTSurekh(印地文字體),並將其添加到我的電腦字體中,但仍然輸出格式爲Mangla。
解析時有什麼方法可以改變輸出的字體。使用PDFBox,FontBox等解析PDF到文本的字體問題

感謝所有幫助..

代碼,我已經寫了:

 


    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import org.apache.pdfbox.cos.COSDocument; 
    import org.apache.pdfbox.pdfparser.PDFParser; 
    import org.apache.pdfbox.pdmodel.PDDocument; 
    import org.apache.pdfbox.util.PDFTextStripper; 

    public class PDFTextParser { 
     static String pdftoText(String fileName) { 
      PDFParser parser; 
      String parsedText = null; 
      PDFTextStripper pdfStripper = null; 
      PDDocument pdDoc = null; 
      COSDocument cosDoc = null; 
      File file = new File(fileName); 
      if (!file.isFile()) { 
       System.out.println("File " + fileName + " does not exist."); 
       return null; 
      } 
      try { 
       parser = new PDFParser(new FileInputStream(file)); 
      } catch (IOException e) { 
       System.out.println("Unable to open PDF Parser. " + e.getMessage()); 
       return null; 
      } 
      try { 
       parser.parse(); 
       cosDoc = parser.getDocument(); 
       pdfStripper = new PDFTextStripper(); 
       pdDoc = new PDDocument(cosDoc); 
       pdfStripper.setStartPage(1); 
       pdfStripper.setEndPage(5); 
       parsedText = pdfStripper.getText(pdDoc); 
      } catch (Exception e) { 
         e.printStackTrace(); 
       System.out.println("An exception occured in parsing the PDF Document."+ e.getMessage()); 
      } finally { 
       try { 
        if (cosDoc != null) 
         cosDoc.close(); 
        if (pdDoc != null) 
         pdDoc.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
      return parsedText; 
     } 
     public static void main(String args[]){ 
      System.out.println(pdftoText("J:\\Users\\Shantanu\\Documents\\NetBeansProjects\\Pdf\\src\\PDfman\\A0410001.pdf")); 
     } 
    } 

 
+0

您是否正在閱讀voterid列表。如果是,那麼我發現的一件事是,該文本是圖像格式,所以它是非常困難的解析。我也試圖做同樣的事情。你已經成功在解析。 –

回答

1

當你創建一個新的PdfStripper對象,用戶在下面的語法和爲其指定的編碼。

PdfTextStripper pdfStripper = new PDFTextStripper(ISO-XXXX) 

其中(ISO -XXX)是PDF中使用的字符編碼。

+0

你從哪裏找到代碼?有沒有辦法找出pdf與之保存的ISO代碼? –

+2

@Yonkee arg中沒有這樣的構造函數 – varpekv