Cómo dividir Epub Html en páginas según el tamaño de la pantalla

Primero hola a todos, es mi primer post en stackoverflow, lo siento si cometo errores con respecto a las reglas y por favor avíseme.

Estoy desarrollando una aplicación de Android que lee ebooks (en formato epub) y por ahora estoy usando la biblioteca epublib de Paul Siegeman que es realmente un muy buen lector de epub pero tiene algunas limitaciones, por ejemplo y la que necesito, usted No puedo moverme horizontalmente por las páginas (como lo haces leyendo un libro real) así que necesito mi propia implementación, pero estoy atascado.

El método que realmente lee el epub y luego lo pone dentro de una webview es el siguiente:

private void openEpub(String bookFilename){ WebView webView = (WebView) findViewById(R.id.webView); nl.siegmann.epublib.domain.Book book=null; try { book = (new EpubReader()).readEpub(new FileInputStream(Environment.getExternalStorageDirectory().getPath() + "/" + bookFilename)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String baseUrl = Environment.getExternalStorageDirectory().getPath() + "/"; String data=null; try { data = new String(book.getContents().get(1).getData()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } webView.loadDataWithBaseURL(baseUrl, data, "text/html", "UTF-8", null); } 

Así que como ves, mostrar el libro electrónico en una webview por lo que sé la única posibilidad de desplazamiento webview da es arriba / abajo.

Estaba pensando en dividir la cadena html que getData () devuelve y cargas de vista web en las páginas y mostrarlos uno por uno con un viewpager, pero ¿cómo dividir el html correctamente de acuerdo al tamaño de la pantalla?

¿Crees que con esta idea estoy en el camino correcto? Cualquier otra solución para mostrar epub de izquierda a derecha / derecha a izquierda (paginación) o cualquier otra biblioteca "gratuita o barata" para hacerlo? (Traté de PageTurner, es realmente bueno, pero la versión comercial es demasiado caro para mí)

Cualquier ayuda sería muy apreciada.

RE.

He hecho efecto de paginación en android como este ..

-> crear una clase personalizada de webview.
-> establecer debajo de los clientes y url de carga, a continuación, obtendrá desplazamiento horizontal con el número de páginas.
-> Bloquear el desplazamiento predeterminado de webview.
-> Para un efecto de paginación suave en lugar de desplazar el desplazamiento de la vista web, mueva toda la webview de modo que para una página habrá una vista web.
-> Utilice su propio viewflippers para almacenar el búfer en páginas anteriores y siguientes.

He hecho todas estas implementaciones y he hecho un producto para una organization.Just estoy compartiendo mi idea de cómo acercarse a la mejor solution.Instead de usar terceras paridades y stucking en el medio debido a la limitación de que sdk, hacer que cada cosa su propio.

 private class MyWebClient extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); final MyWebView myWebView = (MyWebView) view; String varMySheet = "var mySheet = document.styleSheets[0];"; String addCSSRule = "function addCSSRule(selector, newRule) {" + "ruleIndex = mySheet.cssRules.length;" + "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" + "}"; String insertRule1 = "addCSSRule('html', 'padding: 0px; height: " + (myWebView.getMeasuredHeight()/getContext().getResources().getDisplayMetrics().density ) + "px; -webkit-column-gap: 0px; -webkit-column-width: " + myWebView.getMeasuredWidth() + "px;')"; myWebView.loadUrl("javascript:" + varMySheet); myWebView.loadUrl("javascript:" + addCSSRule); myWebView.loadUrl("javascript:" + insertRule1); } } private class MyWebChromeClient extends WebChromeClient { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); if(newProgress == 100) { postDelayed(new Runnable() { @Override public void run() { calculateNoOfPages(); } },200); } } } private void calculateNoOfPages() { if(GlobalSettings.EPUB_LAYOUT_TYPE == GlobalConstants.FIXED) { } else { if(getMeasuredWidth() != 0) { int newPageCount = computeHorizontalScrollRange()/getMeasuredWidth(); getData().getChapterVO().setPageCount(newPageCount); } } } @Override public int computeHorizontalScrollRange() { // TODO Auto-generated method stub return super.computeHorizontalScrollRange(); } 

Uno al que cargues url

Sigue esta cuenta github .

FbReader proporciona algunas grandes bibliotecas para epub y lector de pdf. Prueba esto….

o

Puede crear su propio WebView personalizado ampliando WebView . Aquí puede colocar y modificar todas las funcionalidades que desea de su WebView.

Mi colega hizo un lector usando este FbReader y fue fabuloso.

Hey, creo que esto te ayudará. La respuesta de Nacho L funcionó para mí. Aquí HTML libro-como la paginación ?

  • Cómo mostrar texto marathi en Android procedente de webservice
  • Retofit2 error java.io.EOFException: Fin de la entrada en la línea 1 columna 1
  • WebViewClient shouldInterceptRequest Congela el WebView
  • Aumentar el tamaño de la cuota WebSQL en un WebView
  • ¿Cómo se puede pasar JSON a AngularJS en la vista web de Android?
  • Cambiar usuario o volver a autenticar con Instagram
  • El banner de instalación de la aplicación no funciona
  • Vista web de Android: lee las cookies
  • Android ViewPager + Webview, ClassCastException! Necesita una vista web en un viewpager
  • Android: Obtener la posición de desplazamiento de un WebView
  • Vinculación del elemento de una página web a una aplicación para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.