A biblioteca do visualizador de PDF do Jetpack, com suporte das APIs do framework, oferece uma solução pronta e de alta performance para aplicativos relacionados a documentos PDF no Android.
A biblioteca do visualizador de PDF (androidx.pdf) oferece uma interface do usuário incorporável que permite aos usuários fazer o seguinte:
- Abrir e visualizar documentos PDF
- Pesquisar e selecionar conteúdo
- Zoom e rolagem
- Salvar anotações no documento
- Interagir com PDFs usando uma stylus
É possível criar uma experiência completa em PDF integrando as APIs da biblioteca Jetpack ou usando diretamente as APIs do framework.
Biblioteca PDF do Jetpack
A biblioteca PDF do Jetpack fornece a classe PdfViewerFragment
que renderiza documentos PDF, incluindo PDFs paginados. Cada página é renderizada em uma visualização própria. O PdfViewerFragment mostra um botão de ação flutuante
para compatibilidade com anotações e geralmente inclui um botão ou outro controle de interface que
abre um menu de pesquisa.
Para saber como implementar o PdfViewerFragment, consulte
Implementar um visualizador de PDF.
APIs do framework
A biblioteca Jetpack usa APIs de framework para analisar e carregar documentos PDF.
O PdfRenderer fornece as APIs básicas de framework relacionadas à renderização de PDF.
Antes do Android V (nível 35 da API), as classes PdfRenderer e PdfRenderer.Page forneciam as APIs para processamento de PDF. As classes PdfRenderer e PdfRenderer.Page foram atualizadas no
Android V com recursos avançados de PDF.
PdfRenderer
APIs anteriores ao Android V
getPageCount(): recebe o número de páginas no documento.openPage(index: Int): abre uma página para renderização.shouldScaleForPrinting(): indica se o documento precisa ser dimensionado para impressão. Considere essas informações se o documento for renderizado para impressão e o tamanho da mídia de destino for diferente do tamanho da página.
APIs adicionadas no Android V
PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams)— Cria uma nova instância. É possível carregar PDFs protegidos por senha.getDocumentLinearizedType(): retorna o tipo linearizado de documento para PDFs com menos de 1 KB.getPdfFormType(): retorna o tipo de formulário do PDF carregado.write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean): salva o estado do documento carregado no momento no descritor de arquivo gravável transmitido como um argumento.
PdfRenderer.Page
A classe PdfRenderer.Page representa uma página de documento PDF para renderização.
APIs anteriores ao Android V
RENDER_MODE_FOR_DISPLAY: modo para renderizar o conteúdo para exibição em uma tela.RENDER_MODE_FOR_PRINT: modo para renderizar o conteúdo para impressão.getIndex(): recebe o índice da página.getWidth(): recebe a largura da página em pontos (1/72 de polegada).getHeight(): recebe a altura da página em pontos (1/72 de polegada).render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int): renderiza uma página em um bitmap.
APIs adicionadas no Android V
applyEdit(editRecord: FormEditRecord): aplica umFormEditRecordao PDF.getFormWidgetInfos(): retorna informações sobre todos os widgets de formulário na página.getFormWidgetInfos(types: IntArray): retorna informações sobre todos os widgets de formulário dos tipos especificados na página.getFormWidgetInfoAtIndex(widgetIndex: Int): retorna informações sobre o widget identificado pelo argumentowidgetIndex.fun getFormWidgetInfoAtPosition(x: Int, y: Int): retorna informações sobre o widget no ponto especificado.getGotoLinks(): recebe os favoritos e os links de navegação presentes na página de um documento PDF.getImageContents(): retorna uma lista dePdfPageImageContentencontradas na página.getLinkContents(): recebe os limites e URLs de todos os links na página.getTextContents(): retorna uma lista dePdfPageTextContentna página.render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams): renderiza uma página em um bitmap.searchText(query: String): pesquisa a string especificada na página e retorna os limites de todas as correspondências.selectContent(start: SelectionBoundary, stop: SelectionBoundary): retorna umPageSelectionque representa o conteúdo entre os dois limites.
Uso da API
A API
PdfRenderer#write()grava uma versão do PDF carregado em umParcelFileDescriptor. Os casos de uso incluem o seguinte:- Salvar uma cópia do documento PDF depois de remover a segurança da senha
- Salvar edições (anotações, preenchimento de formulários etc.)
As APIs
PdfRenderer.Page#render()renderizam uma página ou parte dela em um bitmap. Em caso de zoom, a API também pode ser usada para renderizar uma parte da página em um bitmap de um determinado tamanho.As APIs
PdfRenderer.PagegetImageContents(),getLinkContents()egetTextContents()retornam o conteúdo disponível na página. Você pode usar o conteúdo para acessibilidade e anúncios do TalkBack ou em recursos com tecnologia de IA, como gerar um resumo da página.A API
PdfRenderer.Page#selectContentseleciona o conteúdo disponível em uma página. Você pode usar o conteúdo selecionado para ações como:- Ligar, se um número de telefone
- Maps, se um endereço estiver selecionado
- Copiar
- Compartilhar
- Comentários
Compatibilidade
A classe PdfRendererPreV expõe as APIs do Android V no
Android R até U (níveis de API 30 a 34).
Outros recursos
Consulte Implementar um leitor de PDF para saber como adicionar um leitor de PDF ao seu app.