05/04/2019Artículo original
¿Conoces el SDK PlugPDF? Esta API te permite trabajar con documentos PDF de forma nativa, tanto en Android como en iOS.
En este tutorial te vamos a enseñar cómo poner en tus apps Android un completo lector y visor de documentos PDF, totalmente funcional, que incluye una barra de navegación con todo lo siguiente:
- Bloquear la rotación del documento
- Elegir el modo de visionado: 1, 2 o 4 páginas por pantalla
- Brillo
- Búsqueda de texto
- Insertar anotaciones: subrayar o tachar texto, dibujar a mano alzada, etc.
¡Ya verás que con PlugPDF es muy sencillo! Haremos lo anterior con un par de líneas de código. Asumimos, eso sí, que cuentas con conocimientos básicos en programación Android.
Para ampliar esta información, no dudes en visitar la serie de posts titulada Building Android PDF Apps, allí encontrarás ejemplos más sencillos que te ayudarán a seguir este how-to con más facilidad.
Consigue tu licencia PlugPDF gratis
El primer paso para poner en marcha tus aplicaciones PlugPDF es conseguir una licencia de uso.
En este enlace puedes conseguir una licencia de prueba durante 30 días. Por otro lado, si eres un desarrollador independiente (indie), en este otro enlace tienes a tu disposición una licencia indie para uso personal, sin límite de tiempo, que incluye todas las características del SDK.
Cuando solicitas tu licencia de uso, entonces ya te puedes descargar el SDK, y luego, solo tienes que inicializarlo en tu aplicación; por ejemplo, en el método onCreate de tu actividad principal.
@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// init PlugPDFtry{PlugPDF.init(getApplicationContext(),"YOUR_PLUGPDF_LICENSE_HERE");}catch(PlugPDFException.InvalidLicenseex){Log.e("PlugPDF","Invalid license exception",ex);}// your code here...}
En aplicaciones Android más complejas que cuentan con varias clases, es recomendable ejecutar el método PlugPDF.init dentro de una clase que extienda de Application para que dicha inicialización tenga un alcance global, y no tengas que ejecutarla en todas y cada una de las actividades de tu app.
Crear un proyecto Android nuevo e importar PlugPDF
Ahora vamos a crear un proyecto Android nuevo que llamaremos SimpleDocumentReader, y justo a continuación, importaremos PlugPDF como un módulo nuevo. La estructura de la aplicación tiene que quedar como sigue.
No olvides añadir la dependencia compile project(‘:plugpdf’) en tu archivo build.gradle (Module: app)
dependencies{compilefileTree(dir:'libs',include:['*.jar'])compile'com.android.support:appcompat-v7:22.0.0'compileproject(':plugpdf')}
¿Qué viene con la librería PDF?
El SDK incorpora esta jerarquía de clases Java con la funcionalidad PDF que puedes esperar en un API de estas características: añadir anotaciones, crear documentos PDF, añadir propiedades a tus documentos PDF, poner páginas e imágenes, etc.
Pero además de lo anterior, PlugPDF viene con una serie de clases Java que tienen como objetivo facilitar la vida al desarrollador. Estas clases están disponibles en com.epapyrus.plugpdf y son las siguientes:
- AnnotSettingMenu
- OutlineAdapter
- PasswordDialog
- SimpleDocumentReader
- SimpleDocumentReaderListener
- SimpleReaderControlPanel
- SimpleReaderControlView
- SimpleReaderFactory
Concretamente, la clase estrella de la lista anterior, por decirlo de alguna manera, es SimpleDocumentReader. Esta clase es la que implementa toda la funcionalidad que muestran las figuras 1-7 anteriores.
Para más detalles, puedes echar un vistazo al código fuente del archivo SimpleDocumentReader y también consultar la documentación de PlugPDF, así entenderás rápidamente cómo se utiliza tal o cual clase del SDK.
Mi primer editor PDF nativo
Entonces, dicho todo lo anterior, tan solo hay que instanciar un objeto de tipo SimpleDocumentReader, tal y como muestra el código que viene a continuación.
packagecom.mycompany.simpledocumentreader;importandroid.app.Activity;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importcom.epapyrus.plugpdf.SimpleDocumentReader;importcom.epapyrus.plugpdf.SimpleDocumentReaderListener;importcom.epapyrus.plugpdf.SimpleReaderFactory;importcom.epapyrus.plugpdf.core.PlugPDF;importcom.epapyrus.plugpdf.core.PlugPDFException;importcom.epapyrus.plugpdf.core.viewer.DocumentState;publicclassMainActivityextendsActivity{privateSimpleDocumentReadermReader;privateButtonselectFileButton;finalintACTIVITY_CHOOSE_FILE=1;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// init PlugPDFtry{PlugPDF.init(getApplicationContext(),"YOUR_PLUGPDF_LICENSE_HERE");}catch(PlugPDFException.InvalidLicenseex){Log.e("PlugPDF","Invalid license exception",ex);}selectFileButton=(Button)findViewById(R.id.selectFileButton);selectFileButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewarg0){IntentchooseFile=newIntent(Intent.ACTION_GET_CONTENT);chooseFile.setType("application/pdf");startActivityForResult(Intent.createChooser(chooseFile,"Choose a file"),ACTIVITY_CHOOSE_FILE);}});}@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){// Check which request we're responding toif(requestCode==ACTIVITY_CHOOSE_FILE){// Make sure the request was successfulif(resultCode==RESULT_OK){// get the file uriUrifileUri=data.getData();// launch the PDF viewermReader=SimpleReaderFactory.createSimpleViewer(this,listener);mReader.openFile(fileUri.getPath(),"");}}}/** * listener receiving event notifications on completion of PDF document loading on a {@link SimpleDocumentReader} */privateSimpleDocumentReaderListenerlistener=newSimpleDocumentReaderListener(){@OverridepublicvoidonLoadFinish(DocumentState.OPENstate){Log.i("PlugPDF","[INFO] Open "+state);}};@OverrideprotectedvoidonDestroy(){if(mReader.getDocument()!=null){mReader.save();mReader.clear();}super.onDestroy();}}
Como ves, la magia está en estas dos líneas:
// launch the PDF viewermReader=SimpleReaderFactory.createSimpleViewer(this,listener);mReader.openFile(fileUri.getPath(),"");
¡Ya lo tenemos! Esperamos que hayas podido correr este lector PDF nativo en tu Android, en pocos minutos. Si te gustó este post estás invitado/a a compartirlo con tus amigos/as. Muchas gracias.