如何在安卓中使用iText库阅读PDF文件

3
我是一名 Android 新手。我尝试使用 Eclipse IDE 创建一个 Android 项目,并尝试使用 itext 库读取 PDF 文件。但是这个程序没有显示任何输出。请告诉我如何更正代码,以便我可以从存储在项目中的 Assets 文件夹中提取 PDF 文件的文本。
以下是程序代码:
public class hello extends Activity {
    /** Called when the activity is first created. */
    public static final String LOG_TAG="Fifth";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        AssetManager assetManager =getAssets();
        InputStream istr = null;
        PdfReader reader=null;
        String str=null;
        int n=0;
        try {
            istr =(InputStream) assetManager.open("FirstPdf");


             reader=new PdfReader(istr);
             n=reader.getNumberOfPages();
            Log.v(LOG_TAG,"n value:" +n);
         str=reader.getPageContent(2).toString();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        } 

        TextView tv = new TextView(this);
        tv.setText(n);
        setContentView(tv);
    }
}

敬礼 Thomas


程序没有显示任何输出是什么意思?有异常吗?否则TextView tv至少应该显示0? - RoflcoptrException
@Roflcoptr 没有显示任何内容。但在控制台窗口中,显示了任务取消的消息。这不是读取PDF的正确方式吗? - Thomas Mathew
那么似乎出现了异常。你确定没有吗?如果有的话,如果您发布异常信息将会很有帮助。 - RoflcoptrException
[2011-01-04 18:33:47 - Fifth] 安装错误:INSTALL_FAILED_DEXOPT [2011-01-04 18:33:47 - Fifth] 请检查logcat输出以获取更多详细信息。 [2011-01-04 18:33:47 - Fifth] 启动已取消! - Thomas Mathew
嗨,你做了什么,请给我链接,我也可以做。 - Sameer Z.
INSTALL_FAILED_DEXOPT 表示 APK 在您的设备/模拟器上安装失败。 - dinesh sharma
2个回答

4
尝试这个:

公共类readPDF扩展了Activity {

/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    AssetManager assetManager =getAssets();
    InputStream istr = null;
    PdfReader reader=null;
    String str=null;
    int n=0;
    try {
        istr = this.getResources().openRawResource(R.raw.internals);

         reader=new PdfReader(istr);
         n=reader.getNumberOfPages();
         System.out.println("String"+str);
        Log.v("LOG:","n value:" +n);
     str=reader.getPageContent(2).toString();

    }
    catch (Exception e)
    {
        e.printStackTrace();
    } 

    TextView tv = (TextView)findViewById(R.id.hellotxt);
    tv.setText(String.valueOf(n));

}

}


2

简短回答

不支持!

详细回答

Android的运行时并不是完全的JME。iText从一开始就没有被移植到JME。

话虽如此,有一些 iText->Android 移植版本正在流传。但是这只是由一些知识渊博的个人完成的,他们删除了大部分内容,以便他们不必将所有内容都移植到 Android 运行时的子集加上其他一些内容中。

我知道 iText Proper(完整版)的移植正在进行中,但不知道它是否会实现,或者用户何时才能使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接