2012-10-22 113 views
1

我目前正在測試在Android中使用itext閱讀PDF的示例,但我遇到了問題。以下代碼在android模擬器中不顯示任何內容:在Android中使用iText閱讀PDF文檔

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);   
    AssetManager assetManager = getAssets(); 
    InputStream istr = null; 
    PdfReader reader=null; 
    String str= null; 
    try { 
     istr =(InputStream) assetManager.open("resume.pdf"); 
     reader=new PdfReader(istr); 
     str = PdfTextExtractor.getTextFromPage(reader, 1).toString(); 
     //str=reader.getPageContent(1).toString(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    TextView tv = (TextView) findViewById(R.id.txtview); 
    tv.setText(str); 
} 

該代碼正在工作,但不顯示PDF的內容。

我認爲這裏的問題不是正確打開PDF文檔?

我的目標是從PDF文檔中提取文本並將其轉移到代碼中的變量中,然後顯示它。

我正在使用iText Version 5.3.3。

+1

我以爲iText的不是閱讀PDF格式,你可以使用FBReader或Pdfviewr。 – Richa

+0

@Richa謝謝你的回覆。所以你說iText不能從PDF文檔中提取文本並將它傳遞給java/android中的變量? – Christian

+0

@Christian如果PDF適合,它可以提取Java中的文本。但是,包含某些文本的掃描圖像的PDF不適合,因爲iText不會執行OCR。也許你想發佈一個樣本PDF來檢查以告訴你更多。 – mkl

回答

2

如果您的PDF與PDF機中製成的,所以它是文本而不是一個掃描的文檔或其他圖片,這應該這樣做:

   String content; 
       PdfReader reader = null; 
       try { 
        //String fileName is the string with the path to your .pdf file, for example resources/pdfs/preface.pdf 
        reader = new PdfReader(fileName); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       int numberOfPages = readerTest.getNumberOfPages(); 
       numberOfPages = numberOfPages + 1; 
       for (int page = 1; page < numberOfPages; page++){ 
        try { 
         String content1Page = PdfTextExtractor.getTextFromPage(reader, page); 
         content = content + content1Page; 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 

現在String content包含了PDF文本。

編輯:您也可以先試着離開了toString()方法在這條線:str = PdfTextExtractor.getTextFromPage(reader, 1).toString();