如何在Android中使用iText打开pdf文件?

时间:2013-06-25 11:36:15

标签: java android itext

我是Android的新手。我正在Android中使用iText实现PDF文档。我想在我的应用程序中阅读PDF文档。我不知道如何在我的应用程序中访问PDF文档。我已经创建但是当我运行应用程序时,我得到了FileNotFoundException的异常,我还通过DD-MS在SD卡中导入PDF文件。但PDF文件无法在Android中打开。这是我的代码:

import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.codec.Base64.InputStream;


public class MainActivity extends Activity 
{

    private static String FILE = "xyz.pdf";

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

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AssetManager assetManager = getAssets();
        InputStream istr = null;
        PdfReader reader = null;
        String str = null;
        int n = 0;
        try
        {
            istr =(InputStream) assetManager.open("xyz.pdf");

            reader=new PdfReader(istr);
            n=reader.getNumberOfPages();
            Log.e("n value:","-> " +n);
            str=reader.getPageContent(2).toString();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        TextView tv = (TextView) findViewById(R.id.textOne);
        tv.setText(str);

    }

}

2 个答案:

答案 0 :(得分:5)

据我所知,iText仅用于创建PDF,它不包含查看器部分。它是一个解析器,而不是一个渲染器。所以你需要选择另一个库来查看pdf.Bare是一些优秀的代码示例,你可以查看它是否符合你的要求..

您可以尝试其他解决方案而不是iText ..
  - Render a PDF file using Java on Android
  - http://andpdf.svn.sourceforge.net/viewvc/andpdf/trunk/

最后一个优秀的工作代码..
  - Example of code to implement a PDF reader

答案 1 :(得分:0)

我们可以从iText中提取数据。在这里,我从PDF文件中提取文本并在Edit-text上显示:

String pat = data.getData().getPath();
File f = new File(pat);

static PdfReader read;
read = new PdfReader(new FileInputStream(f));

 PdfReaderContentParser parser;
parser = new PdfReaderContentParser(read);

StringWriter strw;
strw = new StringWriter();

TextExtractionStrategy stretegy;
stretegy = parser.processContent(j, new SimpleTextExtractionStrategy());

strw.write(stretegy.getResultantText());

String da = strw.toString();

edt1.setText(da);