La propiedad del proyecto se cambió recientemente y estamos buscando activamente contribuyentes para que el proyecto vuelva a rastrear. Visite
AndroidPDFViewer 1.x está disponible en AndroidPDFViewerv1 Repo, donde se puede desarrollar de forma independiente. La versión 1.x usa un motor diferente para dibujar un documento sobre lienzo, por lo que si no le gusta 2.X Versión, intente 1.x.
Biblioteca para mostrar documentos PDF en Android, con animations
, gestures
, zoom
y soporte double tap
. Se basa en PDFiumAndroid para decodificar archivos PDF. Trabaja en API 11 (Android 3.0) y superior. Licencia bajo la licencia Apache 2.0.
fitEachPage
Contants.PRELOAD_COUNT
reemplazados.preload_count con PRELOAD_OFFSET
PDFView#fitToWidth()
(variante sin argumentos)Configurator#invalidPageColor(int)
Método como páginas no válidas no se representanOnRenderListener#onInitiallyRendered(int)
, ya que el documento puede tener diferentes tamaños de páginaPDFView#setSwipeVertical()
Agregar a Build.gradle :
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
O si desea usar una versión más estable:
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
La biblioteca está disponible en el repositorio de JCenter, probablemente pronto estará en Maven Central.
Si está utilizando Proguard, agregue la siguiente regla al archivo de configuración Proguard:
-keep class com.shockwave.**
< com .github.barteksc.pdfviewer.PDFView
android : id = " @+id/pdfView "
android : layout_width = " match_parent "
android : layout_height = " match_parent " />
Todas las opciones disponibles con valores predeterminados:
pdfView . fromUri ( Uri )
or
pdfView . fromFile ( File )
or
pdfView . fromBytes ( byte [])
or
pdfView . fromStream ( InputStream ) // stream is written to bytearray - native code cannot use Java Streams
or
pdfView . fromSource ( DocumentSource )
or
pdfView . fromAsset ( String )
. pages ( 0 , 2 , 1 , 3 , 3 , 3 ) // all pages are displayed by default
. enableSwipe ( true ) // allows to block changing pages using swipe
. swipeHorizontal ( false )
. enableDoubletap ( true )
. defaultPage ( 0 )
// allows to draw something on the current page, usually visible in the middle of the screen
. onDraw ( onDrawListener )
// allows to draw something on all pages, separately for every page. Called only for visible pages
. onDrawAll ( onDrawListener )
. onLoad ( onLoadCompleteListener ) // called after document is loaded and starts to be rendered
. onPageChange ( onPageChangeListener )
. onPageScroll ( onPageScrollListener )
. onError ( onErrorListener )
. onPageError ( onPageErrorListener )
. onRender ( onRenderListener ) // called after document is rendered for the first time
// called on single tap, return true if handled, false to toggle scroll handle visibility
. onTap ( onTapListener )
. onLongPress ( onLongPressListener )
. enableAnnotationRendering ( false ) // render annotations (such as comments, colors or forms)
. password ( null )
. scrollHandle ( null )
. enableAntialiasing ( true ) // improve rendering a little bit on low-res screens
// spacing between pages in dp. To define spacing color, set view background
. spacing ( 0 )
. autoSpacing ( false ) // add dynamic spacing to fit each page on its own on the screen
. linkHandler ( DefaultLinkHandler )
. pageFitPolicy ( FitPolicy . WIDTH ) // mode to fit pages in the view
. fitEachPage ( false ) // fit each page to the view, else smaller pages are scaled relative to largest page.
. pageSnap ( false ) // snap pages to screen boundaries
. pageFling ( false ) // make a fling change only a single page like ViewPager
. nightMode ( false ) // toggle night mode
. load ();
pages
son opcionales, le permite filtrar y ordenar las páginas del PDF como lo necesite El mango de desplazamiento es un reemplazo de la barra de desplazamiento desde 1.x rama.
Desde la versión 2.1.0 Putt PDFView en RelativeLayout para usar Scrollhandle no es necesario, puede usar cualquier diseño.
Para usar el mango de desplazamiento, simplemente registrelo usando el Método Configurator#scrollHandle()
. Este método acepta implementaciones de la interfaz de control de desplazamiento .
Hay una implementación predeterminada enviada con AndroidPDFViewer, y puede usarla con .scrollHandle(new DefaultScrollHandle(this))
. Defaultscrollhandle se coloca a la derecha (al desplazarse verticalmente) o en la parte inferior (al desplazarse horizontalmente). Mediante el uso de Constructor con el segundo argumento ( new DefaultScrollHandle(this, true)
), el mango se puede colocar a la izquierda o superior.
También puede crear manijas de desplazamiento personalizadas, simplemente implementa la interfaz de control de desplazamiento . Todos los métodos se documentan como comentarios de Javadoc en la fuente de interfaz.
Versión 2.3.0 Fuentes de documentos introducidas, que son solo proveedores de documentos PDF. Cada proveedor implementa la interfaz DocumentSource . Los proveedores predefinidos están disponibles en com.github.barteksc.pdfviewer.source paquete y se pueden usar como muestras para crear otras personalizadas.
Los proveedores predefinidos se pueden usar con métodos de taquigrafía:
pdfView.fromUri(Uri)
pdfView.fromFile(File)
pdfView.fromBytes(byte[])
pdfView.fromStream(InputStream)
pdfView.fromAsset(String)
Los proveedores personalizados se pueden usar con el método pdfView.fromSource(DocumentSource)
.
Versión 3.0.0 Introducido soporte para enlaces en documentos PDF. De manera predeterminada, se usa defaultLinkHandler y se hace clic en el enlace que hace referencia a la página en el mismo documento hace que saltar a la página de destino y hacer clic en el enlace que se dirige a algunas causas de URI que lo abrirá en la aplicación predeterminada.
También puede crear controladores de enlaces personalizados, simplemente implementar la interfaz de LinkHandler y configurarla usando el método Configurator#linkHandler(LinkHandler)
. Eche un vistazo a la fuente de defaultLinkHandler para implementar un comportamiento personalizado.
Desde la versión 3.0.0, la biblioteca admite páginas ajustadas en la pantalla en 3 modos:
Además de la política seleccionada, cada página está escalada para tener un tamaño en relación con otras páginas.
La política de ajuste se puede configurar utilizando Configurator#pageFitPolicy(FitPolicy)
. La política predeterminada es el ancho .
Por defecto, los mapas de bits generados se comprimen con formato RGB_565
para reducir el consumo de memoria. La representación con ARGB_8888
puede forzarse utilizando el método pdfView.useBestQuality(true)
.
Hay tres niveles de zoom: min (predeterminado 1), MID (predeterminado 1.75) y Max (predeterminado 3). En el primer doble toque, la vista se acerca al nivel medio, en el segundo al nivel máximo, y en el tercer rendimiento al nivel MIN. Si está entre los niveles medios y máximos, el doble golpe hace que el zoom de zoom a máximo y así sucesivamente.
Los niveles de zoom se pueden cambiar utilizando los siguientes métodos:
void setMinZoom ( float zoom );
void setMidZoom ( float zoom );
void setMaxZoom ( float zoom );
Android PDFViewer depende de PDFiumAndroid, que se establece en bibliotecas nativas (casi 16 MB) para muchas arquitecturas. APK debe contener todas estas bibliotecas para ejecutarse en cada dispositivo disponible en el mercado. Afortunadamente, Google Play nos permite cargar múltiples APK, por ejemplo, uno por cada arquitectura. Hay un buen artículo sobre la división automáticamente de su aplicación en múltiples APK, disponibles aquí. La sección más importante es mejorar la creación de múltiples APKS y el manejo del código de versiones con divisiones APK , pero vale la pena leer un artículo completo. Solo necesita hacer esto en su aplicación, sin necesidad de bifurcar PDFiumandroid más o menos.
La descarga de archivos es un proceso de ejecución que debe tener en cuenta el ciclo de vida de la actividad, debe admitir alguna configuración, limpieza de datos y almacenamiento en caché, por lo que la creación de dicho módulo probablemente terminará como una nueva biblioteca.
Debe almacenar el número de página actual y luego configurarlo con pdfView.defaultPage(page)
, consulte la aplicación de muestra
Use FitPolicy.WIDTH
Política de ancho o agregue el siguiente fragmento cuando desee ajustar la página deseada en el documento con diferentes tamaños de página:
Configurator . onRender ( new OnRenderListener () {
@ Override
public void onInitiallyRendered ( int pages , float pageWidth , float pageHeight ) {
pdfView . fitToWidth ( pageIndex );
}
});
Puede usar una combinación de la siguiente configuración para obtener un comportamiento de desplazamiento y aventura similar a un ViewPager:
. swipeHorizontal ( true )
. pageSnap ( true )
. autoSpacing ( true )
. pageFling ( true )
Si tiene alguna sugerencia sobre cómo mejorar esta lib, escriba, cree un problema o escriba algún código y envíe una solicitud de extracción.
Creado con la ayuda de Android-PDFView por Joan Zapata
Copyright 2017 Bartosz Schiller
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.