将Java SE类添加到Java ME阅读PDF

时间:2012-11-09 14:24:12

标签: java java-me itext lwuit

我正在编写一个使用iText阅读PDF的Java ME应用程序。当我在标准Java中编写代码(包括类路径中的iText库)时,应用程序就会运行。但是,如果我将代码移动到包含类路径中的iText库的java移动应用程序中,则在编译过程中会出现错误

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;
}
}

2 个答案:

答案 0 :(得分:3)

这些类在移动设备上不可用,JavaME不支持Java 5功能。你要做的事情有点不切实际。由于字节码处理,Codename One允许更多的类,但即便如此,这也不是一个完整的rt.jar。

答案 1 :(得分:1)

如果您有时间,可以尝试创建符合Java ME的iText版本,但要正确打开PDF,库必须使用某种形式的Random Access File,因为该文件末尾的外部参照表文件。这种文件连接在Java ME中

图书馆可以做的是将PDF完全加载到内存,这在很大程度上取决于文件大小和手机内存。

您最好创建一个Web服务来接收您的PDF并从中返回例如PNG图像。