2012-11-09 57 views
1

我在寫一個使用iText來讀取PDF的Java ME應用程序。當我在包含類路徑中的iText庫的標準Java中編寫代碼時,應用程序將運行。但是,如果我將代碼移植到Java的移動應用,包括在類路徑中的iText庫有,說將Java SE類添加到Java ME中閱讀PDF

error: cannot access URL 
PdfReader reader = new PdfReader(pdfPath);     
class file for java.net.URL not found 

我的問題是,我需要一個變通閱讀PDF文件編譯時錯誤。我已經嘗試將rt.jar作爲庫添加到我的代碼中,該代碼是包含java.io的包,但它太大而無法編譯。請幫我找一下工作。我的代碼在這裏

package PDFreaderpackage; 

import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.parser.PdfTextExtractor; 
import com.sun.lwuit.Display; 
import com.sun.lwuit.Form; 
import com.sun.lwuit.TextArea; 
import javax.microedition.midlet.MIDlet; 

public class Midlet extends MIDlet { 

Form displayForm; 
TextArea pdfText; 
private String bookcontent; 
public static String INPUTFILE = "c:/test.pdf"; 
public static int pageNumber = 1; 

public void startApp() { 
    Display.init(this); 
    this.bookcontent = readPDF(INPUTFILE, pageNumber); 
    pdfText = new TextArea(bookcontent); 
    displayForm = new Form("Works"); 
    displayForm.addComponent(pdfText); 
    displayForm.show(); 
} 

public void pauseApp() { 
} 

public void destroyApp(boolean unconditional) { 
} 

public String readPDF(String pdfPath, int pageNumber) { 

    try { 
     PdfReader reader = new PdfReader(pdfPath); 
     this.bookcontent = PdfTextExtractor.getTextFromPage(reader, pageNumber); 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return bookcontent; 
} 
} 

回答

3

這些類在移動設備上不可用,並且JavaME不支持Java 5功能。你試圖做的事情有點不切實際。由於字節碼處理,Codename One允許一些更多的類,但即使如此,它也並不接近完整的rt.jar。

1

如果您有時間,可以嘗試創建符合Java ME的iText版本,但要正確打開PDF,庫必須使用某種形式的Random Access File,因爲文件末尾的外部參照表格。這種文件連接是在Java ME中可用的而不是

該庫可以做的是將PDF完全加載到內存,這非常依賴於文件大小和可用的手機內存。

您最好創建一個Web服務來接收您的PDF並返回,例如從中返回PNG圖像。