【问题标题】:Reading PDF Document using iText in Android在 Android 中使用 iText 读取 PDF 文档
【发布时间】:2012-10-22 04:45:40
【问题描述】:

我目前正在测试在 android 中使用 itext 阅读 PDF 的示例,但我遇到了问题。下面的代码在 android 模拟器中不显示任何内容:

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;
    try {
         istr =(InputStream) assetManager.open("resume.pdf");
         reader=new PdfReader(istr);
         str = PdfTextExtractor.getTextFromPage(reader, 1).toString();
         //str=reader.getPageContent(1).toString();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    TextView tv = (TextView) findViewById(R.id.txtview);
    tv.setText(str);
}

代码正在运行,但它不显示 PDF 的内容。

我认为这里的问题是没有正确打开 PDF 文档?

我的目标是从 PDF 文档中提取文本并将其传输到代码中的变量然后显示。

我正在使用 iText 版本 5.3.3。

【问题讨论】:

  • 我认为 itext 不适合阅读 pdf,你可以使用 FBReader 或 Pdfviewr。
  • @Richa 谢谢你的回复。所以您说 iText 无法从 PDF 文档中提取文本并将其传输到 java/android 中的变量?
  • @Christian 如果 PDF 合适,它可以提取 Java 中的文本。但是,包含某些文本的扫描图像的 PDF 不适合,因为 iText 不执行 OCR。也许您想发布一个示例 PDF 来检查以告诉您更多信息。
  • @Christian 你确定你的代码中没有发现异常吗?也许您应该(暂时)将 str 设置为“发生错误:” + e 或类似的东西,而不是打印堆栈跟踪,并进行一些日志记录。
  • @mkl 哦。但它可以读取一个区域是否是图像?

标签: android pdf itext


【解决方案1】:

如果您的 PDF 是使用 PDF 制作工具制作的,那么它是文本而不是扫描的文档或其他图片,应该这样做:

                String content;
                PdfReader reader = null;
                try {
                    //String fileName is the string with the path to your .pdf file, for example resources/pdfs/preface.pdf
                    reader = new PdfReader(fileName);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                int numberOfPages = readerTest.getNumberOfPages();
                numberOfPages = numberOfPages + 1;
                for (int page = 1; page < numberOfPages; page++){
                    try {
                        String content1Page = PdfTextExtractor.getTextFromPage(reader, page);
                        content = content + content1Page;
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

现在String content 包含 PDF 的文本。

编辑:您也可以先尝试在此行中省略 toString() 方法:str = PdfTextExtractor.getTextFromPage(reader, 1).toString();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多