A propriedade do projeto foi alterada recentemente e estamos procurando ativamente colaboradores para trazer o projeto de volta aos rastreamentos. Por favor, visite
AndroidpdfViewer 1.x está disponível no AndroidpDfViewerv1 repo, onde pode ser desenvolvido de forma independente. A versão 1.x usa o mecanismo diferente para desenhar o documento sobre tela; portanto, se você não gosta da versão 2.x, tente 1.x.
Biblioteca para exibir documentos em PDF no Android, com animations
, gestures
, zoom
e suporte double tap
. É baseado no PDFiumandroid para decodificar arquivos PDF. Funciona na API 11 (Android 3.0) e superior. Licenciado no Apache License 2.0.
fitEachPage
Contants.PRELOAD_COUNT
substituídos.preload_count com PRELOAD_OFFSET
PDFView#fitToWidth()
(variante sem argumentos)Configurator#invalidPageColor(int)
Método como páginas inválidas não são renderizadasOnRenderListener#onInitiallyRendered(int)
Método, pois o documento pode ter tamanhos de página diferentesPDFView#setSwipeVertical()
Adicionar ao Build.gradle :
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
Ou se você quiser usar uma versão mais estável:
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
A biblioteca está disponível no repositório do JCenter, provavelmente estará no Maven Central em breve.
Se você estiver usando o ProGuard, adicione a regra seguinte ao arquivo de configuração do 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 as opções disponíveis com valores padrão:
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
é opcional, ele permite filtrar e solicitar as páginas do PDF conforme necessário A alça de rolagem substitui a barra de rolagem da ramificação 1.x.
A partir da versão 2.1.0, colocando o PDFView no RelativeLayout para usar o scrollHandle não é necessário, você pode usar qualquer layout.
Para usar o identificador de rolagem, basta registrá -lo usando o Method Configurator#scrollHandle()
. Este método aceita implementações da interface scrollhandle .
Há implementação padrão enviada com AndroidpdfViewer e você pode usá -lo com .scrollHandle(new DefaultScrollHandle(this))
. O padrãoScrollHandle é colocado à direita (ao rolar verticalmente) ou na parte inferior (ao rolar horizontalmente). Ao usar o construtor com o segundo argumento ( new DefaultScrollHandle(this, true)
), a alça pode ser colocada para a esquerda ou superior.
Você também pode criar alças de rolagem personalizadas, basta implementar a interface scrollhandle . Todos os métodos são documentados como comentários Javadoc na fonte da interface.
Versão 2.3.0 Introduziu fontes de documentos , que são apenas fornecedores para documentos em PDF. Todo provedor implementa a interface DocumentSource . Os provedores predefinidos estão disponíveis no pacote com.github.barteksc.pdfviewer.source e podem ser usados como amostras para criar as personalizadas.
Provedores predefinidos podem ser usados com métodos de abreviação:
pdfView.fromUri(Uri)
pdfView.fromFile(File)
pdfView.fromBytes(byte[])
pdfView.fromStream(InputStream)
pdfView.fromAsset(String)
Os provedores personalizados podem ser usados com o método pdfView.fromSource(DocumentSource)
.
Versão 3.0.0 Introduziu o suporte para links em documentos em PDF. Por padrão, o DefaultLinkHandler é usado e clicando no link que referências na mesma documento causam o salto para a página de destino e clicando no link que tem como alvo algum URI faz com que a abre -a no aplicativo padrão.
Você também pode criar manipuladores de link personalizados, basta implementar a interface LinkHandler e defini -lo usando o método Configurator#linkHandler(LinkHandler)
. Dê uma olhada na fonte DefaultLinkHandler para implementar o comportamento personalizado.
Desde a versão 3.0.0, a biblioteca suporta páginas de montagem na tela em 3 modos:
Além da política selecionada, todas as páginas são dimensionadas para ter tamanho em relação a outras páginas.
A política de ajuste pode ser definida usando Configurator#pageFitPolicy(FitPolicy)
. A política padrão é de largura .
Por padrão, os bitmaps gerados são compactados com o formato RGB_565
para reduzir o consumo de memória. A renderização com ARGB_8888
pode ser forçada usando o método pdfView.useBestQuality(true)
.
Existem três níveis de zoom: Min (padrão 1), MID (padrão 1,75) e Max (padrão 3). No primeiro toque duplo, a visualização é ampliada para o nível médio, no nível do segundo para o máximo e no terceiro retorno ao nível mínimo. Se você estiver entre os níveis médio e máximo, a batida dupla causa o zoom no máximo e assim por diante.
Os níveis de zoom podem ser alterados usando os seguintes métodos:
void setMinZoom ( float zoom );
void setMidZoom ( float zoom );
void setMaxZoom ( float zoom );
O Android PDFViewer depende do PDFiumAndroid, que é conjunto de bibliotecas nativas (quase 16 MB) para muitas arquiteturas. O APK deve conter todas essas bibliotecas para executar em todos os dispositivos disponíveis no mercado. Felizmente, o Google Play nos permite fazer upload de vários APKs, por exemplo, um por cada arquitetura. Há um bom artigo sobre a divisão automática de seu aplicativo em vários APKs, disponíveis aqui. A seção mais importante é melhorar a criação de vários APKs e o manuseio do código de versão com divisões de APK , mas vale a pena ler um artigo inteiro. Você só precisa fazer isso em seu aplicativo, sem necessidade de marcar o pdfiumandroid.
O download de arquivos é um processo de longa execução que deve estar ciente do ciclo de vida da atividade, deve suportar alguma configuração, limpeza de dados e cache; portanto, criar esse módulo provavelmente acabará como nova biblioteca.
Você precisa armazenar o número da página atual e defini -lo com pdfView.defaultPage(page)
, consulte o aplicativo de amostra
Use FitPolicy.WIDTH
Policy ou Adicione seguinte snippet quando deseja encaixar a página desejada no documento com diferentes tamanhos de página:
Configurator . onRender ( new OnRenderListener () {
@ Override
public void onInitiallyRendered ( int pages , float pageWidth , float pageHeight ) {
pdfView . fitToWidth ( pageIndex );
}
});
Você pode usar uma combinação das seguintes configurações para obter um comportamento de rolagem e falha semelhante a um viewpager:
. swipeHorizontal ( true )
. pageSnap ( true )
. autoSpacing ( true )
. pageFling ( true )
Se você tiver alguma sugestão sobre como melhorar este LIB, escreva -me, crie problemas ou escreva algum código e envie uma solicitação de tração.
Criado com a ajuda do 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.