microsoft linea gratis editar desde descargar como celular aplicaciones android ms-word textview android-textview rtf

android - linea - word apk pc



VisualizaciĆ³n de un archivo de MS Word en vista(por ejemplo, TextView) en Android (2)

Como mencionaste en tu pregunta, ya Jopendocument, algunas bibliotecas como Jopendocument, OliveDocLibrary y Apache POI pero no hubo suerte.

Ahora quiero modificar este código para poder mostrar archivos de MS Word (.docx) que contienen texto, imágenes y símbolos matemáticos en medio.

Mientras investigaba, encontré una biblioteca más llamada Tika , que también usaba para extraer datos y sus Tika e incluso en la Oficina de Libra, donde puede leer, escribir y administrar documentos.

Última sugerencia:

Puede lograrlo convirtiendo, doc to html y html to pdf como se menciona here .

Para convertir doc to html consulte la respuesta de desbordamiento de pila

Quiero mostrar un archivo .docx en una View en Android. El archivo tiene símbolos matemáticos y también imágenes entre el texto. Quiero mostrar muchos de estos archivos y hojearlos a través del gesto de swipe . He hecho con éxito lo mismo para los archivos .txt . Y ahora puede ir muy fácilmente a la siguiente página con solo deslizar. El código para el archivo .txt es el siguiente:

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; }

Este código devuelve el texto que luego TextView en mi TextView . De esta manera, solo necesito cambiar el nombre del archivo dinámicamente y al deslizar los cambios de Texto.

Ahora quiero modificar este código para poder mostrar archivos de MS Word (.docx) que contienen texto, imágenes y símbolos matemáticos.

Ya he revisado muchos hilos similares sobre este tema en el desbordamiento de pila así como en otros foros: Estos son los enlaces que muchas personas han sugerido como respuestas a preguntas similares y ya les he dado una oportunidad: Link1 y Link1

También en muchos otros hilos la gente ha recomendado Jopendocument . También he leído sobre eso y he aprendido que Android no admite el formato de documento abierto. por lo que esa opción parece poco probable. Pero si tiene alguna solución o una buena explicación detallada con respecto a la adición de la biblioteca JOpenDocument al proyecto y la visualización de texto enriquecido, comparta esa solución porque la he buscado mucho pero no he podido encontrar ninguna.

También hay otra biblioteca llamada OliveDocLibrary para mostrar archivos de palabras enriquecidas en Android. Aquí está el link desde donde descargué el lib. La demostración incluida en ese paquete de descarga funciona bien. Pero la biblioteca es una versión de prueba. Así que actualmente estoy tratando de trabajar con esta biblioteca y ver a dónde va. Pero todavía estoy en busca de mejores opciones.

Cualquier ayuda al respecto es apreciada. Cualquier puntero que no sea los mencionados anteriormente son bienvenidos.

Actualizar:

Recibí una sugerencia que decía el uso de Apache POI (HWPF más específicamente) en la primera recompensa que comencé con esta pregunta. Después de explorar Apache POI por algún tiempo, obtuve algunos códigos que estaban escribiendo en un archivo doc, leyendo el archivo doc, actualizando las hojas de Excel, etc.

El código de ejemplo (para Java) que encontré fuera de Internet es algo así:

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){} } }

Así que agregué esta biblioteca (Apache POI) a mi proyecto de Android en eclipse y probé este código de ejemplo con algunos cambios. Y trató de mostrarlo en un TextView . Sin embargo, el problema aquí es que no muestra las imágenes como lo hace OliveDocLibrary . Entonces, si Alguien va a sugerir el PDI de Apache, solicito un puntero sólido o un código que lea un archivo docx y todo su contenido (que incluye imágenes) y los muestre en una vista personalizada.

Apache POI es una gran cosa, pero lamentablemente no encontré ningún buen ejemplo / ejemplo que implementara esas bibliotecas. Si conoces una buena fuente de ejemplos (solo palabras de MS de wrt), compártelos en los comentarios.

Actualización 2 :

En el paquete OliveDocLibrary , el código proporcionado funciona bien. Hay una marca de agua de oliva en la vista sin embargo. Actualmente estoy trabajando en realizar Swipe en ese código. Pero el problema sigue siendo que es una versión de prueba.

Actualización 3:

Creo que OliveDocLibrary es la forma más eficiente de hacerlo. Aunque tiene la desventaja de ser una versión de prueba, creo que ninguna otra biblioteca hace un mejor trabajo que esta biblioteca para cumplir con mis requisitos específicos. La respuesta detallada se ha publicado a below . Como el tiempo de recompensa está a punto de terminar. Pediría a las personas que puedan tener una solución alternativa y mejor que lo publiquen lo antes posible. Por ahora voy con OliveDocLibrary y acepto mi propia respuesta.


Hola, chicos. Después de mucha consideración y mirando infinidad de opciones y soluciones, creo que OliveDocLibrary es la mejor manera de hacerlo. Aquí está el link que le dará acceso directo a la página de descargas de tres bibliotecas para Android que son para DOC, XLS y PPT. Todos estos funcionan excelentemente bien. La carpeta del paquete que descargará tendrá tres carpetas dentro. cuales son:

  1. API
  2. lib_trial
  3. Manifestación

En la carpeta de demostración encontrará un proyecto de ejemplo para Word. Puede importar directamente este proyecto en su área de trabajo en Eclipse y probar el código usted mismo. Para la conveniencia de la gente, estoy publicando ese código aquí. He borrado una parte del código que sentí que no era necesaria (escriba la respuesta a mi pregunta aquí). Así que el código tiene dos archivos. La actividad principal es FileChooser que es la siguiente:

public class FileChooser extends Activity { private String filePath = Environment.getExternalStorageDirectory() .getPath() + "/simple.docx"; MyBaseAdapter adapter; private static String parentPath; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(2); copyFileToSdcard(); Intent intent = new Intent(FileChooser.this, OliveWordTrailDemoAcitivy.class); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.fromFile(new File(filePath))); startActivity(intent); } class MyBaseAdapter extends BaseAdapter { private String[] list; public MyBaseAdapter(String[] list) { this.list = list; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = new TextView(FileChooser.this); ((TextView) convertView).setTextSize(35); } ((TextView) convertView).setText(list[position]); return convertView; } @Override public long getItemId(int position) { return position; } @Override public Object getItem(int position) { return null; } @Override public int getCount() { return list.length; } public void setList(String[] list) { this.list = list; } }; class MyItemClickListener implements OnItemClickListener { String[] list; InputStream is; public MyItemClickListener(String[] list) { this.list = list; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { File file = new File(parentPath + list[position]); if (file.isFile()) { Intent intent = new Intent(FileChooser.this, OliveWordTrailDemoAcitivy.class); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.fromFile(file)); startActivity(intent); } else { list = file.list(); adapter.setList(list); adapter.notifyDataSetChanged(); parentPath = file.getAbsolutePath() + "/"; } } } private void copyFileToSdcard() { InputStream inputstream = getResources().openRawResource( R.raw.simple); byte[] buffer = new byte[1024]; int count = 0; FileOutputStream fos = null; try { fos = new FileOutputStream(new File(filePath)); while ((count = inputstream.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); Toast.makeText(FileChooser.this, "Check your sdcard", Toast.LENGTH_LONG).show(); } catch (IOException e) { e.printStackTrace(); } } }

Aquí he colocado un archivo doc llamado simple.docx que incluye imágenes y símbolos matemáticos que se representan y muestran correctamente. Esta actividad interactúa con OliveWordTrialDemoActivity que es la siguiente:

public class OliveWordTrailDemoAcitivy extends Activity implements OnClickListener, CommentListener, NoteListener, HyperlinkListener, ProgressListener { OliveWordOperator viu; EditText searchEditText; ArrayList<String> bookmarks; Handler handler; protected void onCreate(Bundle savedInstanceState) { viu = new OliveWordOperator(this, this); super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_PROGRESS); setProgressBarVisibility(true); getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); setContentView(R.layout.demo_view); OliveWordView view = (OliveWordView) findViewById(R.id.test_view); try { viu.init(view, getIntent().getData()); viu.start(viu.isEncrypted(), "111"); } catch (Exception e) { e.printStackTrace(); } handler = new Handler(){ @Override public void handleMessage(Message msg) { setProgress(msg.what * 10); super.handleMessage(msg); } }; } @Override protected void onDestroy() { viu.release(); super.onDestroy(); } @Override public void getComment(ArrayList<String[]> comments) { for (int i = 0; i < comments.size(); i++) { AlertDialog.Builder builder = new Builder(this); builder.setTitle(comments.get(i)[0]).setMessage(comments.get(i)[1]) .show(); } } @Override public void getHyperlink(String hyperlink) { if (Uri.parse(hyperlink).getScheme().contains("mailto")) { try { startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse(hyperlink))); } catch (ActivityNotFoundException anfe) { Toast.makeText(this, "can''t found email application", Toast.LENGTH_SHORT).show(); } } else { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(hyperlink))); } } @Override public void getNote(SparseArray<String> notes) { for (int i = 0; i < notes.size(); i++) { AlertDialog.Builder builder = new Builder(this); if (notes.keyAt(i) == NoteListener.FOOTNOTE) { builder.setTitle("footnote").setMessage(notes.valueAt(i)) .show(); } else if (notes.keyAt(i) == NoteListener.ENDNOTE) { builder.setTitle("endnote").setMessage(notes.valueAt(i)).show(); } } } public void goToBookmarks(String name) { viu.goToBookmark(name); } public void listBookmarks() { this.bookmarks = viu.listBookmarks(); } @Override public void notifyProgress(int progress) { handler.sendEmptyMessage(progress); } @Override public void onClick(View v) { } }

En la carpeta lib_trial encontrará la biblioteca que se puede agregar a su carpeta libs si desea usarla por separado.

Y en la carpeta API encontrará una descripción detallada de la biblioteca y sus métodos en forma de un archivo pdf que es muy fácil de entender. para que las personas puedan usar esta biblioteca directamente y usar los métodos proporcionados a sus requisitos específicos.

Así que esa es la solución con la que voy por ahora. Cualquier mejor solución es bienvenida. El tiempo de recompensa está a punto de terminar pronto, así que proporcione cualquier otra solución que pueda tener lo antes posible. Gracias.