Я хочу показать файл .docx в View
на Android. Файл имеет математические символы, а также изображения между текстом. Я хочу показать много таких файлов и перевернуть их с помощью жестов swipe
. Я успешно сделал то же самое для файлов .txt. И теперь можно очень легко перейти на следующую страницу при прокрутке. Код для файла .txt выглядит следующим образом:
public String readTxt(String fileName)
{
try {
InputStream is;
is = context.getAssets().open(fileName + ".txt");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
i = is.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = is.read();
}
is.close();
return byteArrayOutputStream.toString();
}
catch (IOException e)
{
e.printStackTrace();
}
return fileName;
}
Этот код возвращает текст, который затем отображается в TextView
. Таким образом, мне нужно только изменить имя файла динамически и при прокрутке текста.
Теперь я хочу изменить этот код, чтобы я мог отображать файлы MS Word (.docx), содержащие текст, изображения и математические символы.
Я уже проверил много подобных потоков в этом разделе о переполнении стека, а также на других форумах: Это ссылки, которые многие люди предложили в качестве ответов на подобные вопросы, и я уже дал им попробовать: Link1 и link2
Также по многим другим темам люди рекомендуют Jopendocument. Я также прочитал об этом и узнал, что Android не поддерживает формат открытого документа. так что вариант кажется маловероятным. Но если у вас есть обходное решение или хорошее подробное объяснение относительно добавления библиотеки JOpenDocument в проект и отображения богатого текста, пожалуйста, поделитесь этим решением, потому что я искал его много, но не смог найти.
Существует также другая библиотека, называемая OliveDocLibrary, чтобы отображать богатые текстовые файлы на Android. вот ссылка откуда я загрузил lib. Демонстрация, включенная в этот пакет загрузки, работает просто отлично. Но lib - это пробная версия. Поэтому в настоящее время я пытаюсь работать с этой библиотекой и посмотреть, куда она идет. Но я все еще ищу лучшие варианты.
Любая помощь в этом отношении приветствуется. Любые указатели, кроме упомянутых выше, приветствуются.
Update:
У меня появилось предложение, в котором говорилось об использовании Apache POI (HWPF более конкретно) в первой щедрости, которую я начал по этому вопросу. После изучения Apache POI в течение некоторого времени у меня появилось несколько кодов, которые записывались в файл doc, считывали файл doc, обновляли листы excel и т.д.
Такой пример кода (для Java), который я нашел в Интернете, выглядит примерно так:
import java.io.*;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class ReadDocFile {
public static void main(String[] args) {
File file = null;
WordExtractor extractor = null ;
try {
file = new File("c:\\New.doc");
FileInputStream fis=new FileInputStream(file.getAbsolutePath());
HWPFDocument document=new HWPFDocument(fis);
extractor = new WordExtractor(document);
String [] fileData = extractor.getParagraphText();
for(int i=0;i<fileData.length;i++){
if(fileData[i] != null)
System.out.println(fileData[i]);
}
}
catch(Exception exep){}
}
}
Итак, я добавил эту библиотеку (Apache POI) в свой проект Android в eclipse и попробовал этот образец кода с некоторыми изменениями. И попробовал показать его на TextView
. Проблема здесь заключается в том, что она не отображает изображения, такие как OliveDocLibrary. Поэтому, если кто-то собирается предложить Apache POI, я запрашиваю для твердого указателя или кода, который читает файл docx и все его содержимое (включая изображения) и отображает их в пользовательском представлении.
Apache POI - отличная вещь, но, к сожалению, я не нашел хороших примеров/примеров, реализующих эти библиотеки. Если вы знаете хороший источник примеров (только w.r.t MS word), то, пожалуйста, поделитесь ими в комментариях.
Обновление 2:
В пакете OliveDocLibrary предоставленный код отлично работает. На снимке есть знак воды Олив. В настоящее время я работаю над выполнением swipe
этого кода. Но проблема остается в том, что ее пробная версия.
Обновление 3:
Я думаю, что OliveDocLibrary - самый эффективный способ сделать это. Хотя у него есть недостаток, чтобы быть пробной версией, я думаю, что никакая другая библиотека не будет лучше работать, чем эта библиотека, чтобы полностью заполнить мои конкретные требования. Подробный ответ был опубликован ниже. По мере того, как время щедрости скоро закончится. Я бы попросил людей, у которых может быть альтернативное и лучшее решение, опубликовать его как можно скорее. Пока я собираюсь с OliveDocLibrary и принимаю свой собственный ответ.