我正在编写一个使用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;
}
}
答案 0 :(得分:3)
这些类在移动设备上不可用,JavaME不支持Java 5功能。你要做的事情有点不切实际。由于字节码处理,Codename One允许更多的类,但即便如此,这也不是一个完整的rt.jar。
答案 1 :(得分:1)
如果您有时间,可以尝试创建符合Java ME的iText版本,但要正确打开PDF,库必须使用某种形式的Random Access File
,因为该文件末尾的外部参照表文件。这种文件连接在Java ME中不。
图书馆可以做的是将PDF完全加载到内存,这在很大程度上取决于文件大小和手机内存。
您最好创建一个Web服务来接收您的PDF并从中返回例如PNG图像。