Когда я попытался прочитать pdf-файл с SD-карты и извлечь текст из него, ничего не произошло. Ошибок, предупреждений, уведомлений и файлов результатов не было. Я сохранил как исходный файл, так и результат в корневой папке SD-карты устройства. Не могли бы вы, ребята, помочь мне решить эту проблему? Вот мой код:Извлечь текст из pdf-файла на Android с помощью iTextG
package com.example.androidtest;
import java.io.File;
...
public class MainActivity extends Activity {
private Button button;
public static final String TIMETABLE = "doc.pdf"; // The original PDF that will be parsed.
public static final String RESULT = "timetable.txt"; // The text file received after scan.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
processSource();
}
public void processSource() {
button = (Button) this.findViewById(R.id.button_add);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
new MainActivity().extractText(TIMETABLE, RESULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public void extractText(String pdf, String doc) throws IOException {
File sdcard = Environment.getExternalStorageDirectory(); // Load file timetable.txt from device's sdcard
File file = new File(sdcard, pdf);
File text = new File(sdcard, doc); // Save the result file in device's sdcard
InputStream is;
try {
is = new FileInputStream(file);
PdfReader reader = new PdfReader(is); // Call the source file
PrintWriter out = new PrintWriter(new FileOutputStream(text));
Rectangle rect = new Rectangle(0, 0, 600, 900); // Define the rectangle to extract text within it
RenderFilter filter = new RegionTextRenderFilter(rect);
TextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
out.println(PdfTextExtractor.getTextFromPage(reader, 1, strategy));
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // Call the source file
}
}
И вот что он показал на вкладке консоли, когда я тестировал на AVD (я надеюсь, что это может помочь):
[2013 -11-23 03:03:29 - AndroidTest] Android Launch! [2013-11-23 03:03:29 - AndroidTest] adb работает нормально. [2013-11-23 03:03:29 - AndroidTest] Выполнение com.example.androidtest.MainActivity> запуск активности [2013-11-23 03:03:29 - AndroidTest] Автоматический целевой режим: запуск нового эмулятора с> совместимый AVD 'Tab' [2013-11-23 03:03:29 - AndroidTest] Запуск нового эмулятора с вкладкой виртуального устройства [2013-11-23 03:03:29 - AndroidTest] Новый эмулятор найден: эмулятор -5554 [2013-11-23 03:03:29 - AndroidTest] Ожидание выхода HOME ('android.process.acore') будет запущено ... [2013-11-23 03:03:57 - AndroidTest ] HOME находится на устройстве 'emulator-5554' [2013-11-23 03:03:57 - AndroidTest] Загрузка AndroidTest.apk на эмулятор устройства-5554 ' [2013-11-23 03:04:06 - AndroidTest] Установка AndroidTest.apk ... [2013-11-23 03:04: 29 - AndroidTest] Успех! [2013-11-23 03:04:29 - AndroidTest] Начальная деятельность> com.example.androidtest.MainActivity на эмуляторе устройства -5554 [2013-11-23 03:04:30 - AndroidTest] ActivityManager: Начало: Intent > {действие = android.intent.action.MAIN кот = [android.intent.category.LAUNCHER]> = CMP com.example.androidtest/.MainActivity}
Спасибо за ваше время!