1

我正在编写一个使用 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;
}
}
4

2 回答 2

3

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

于 2012-11-11T04:59:30.833 回答
1

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

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

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

于 2012-11-11T11:02:48.153 回答