Como imprimir fotos

Um dos usos mais comuns dos dispositivos móveis é tirar e compartilhar fotos. Se seu aplicativo tirar fotos, exibir fotos ou permitir que os usuários compartilhem imagens, considere habilitar a impressão dessas imagens no app. A Biblioteca de Suporte do Android oferece uma função conveniente para habilitar a impressão de imagens usando pouquíssimo código e um conjunto simples de opções de layout de impressão.

Esta lição mostra como imprimir uma imagem usando a classe PrintHelper da Biblioteca de Suporte v4.

Imprimir uma imagem

A classe PrintHelper da Biblioteca de Suporte do Android oferece uma maneira simples de imprimir imagens. A classe possui uma única opção de layout, setScaleMode(), que permite imprimir com uma das seguintes opções:

  • SCALE_MODE_FIT: esta opção dimensiona a imagem para que ela seja exibida inteira na área imprimível da página.
  • SCALE_MODE_FILL: esta opção dimensiona a imagem para que ela preencha toda a área imprimível da página. Escolher essa configuração significa que uma parte das margens superior e inferior ou esquerda e direita da imagem não será impressa. Esse será o valor padrão se um modo de dimensionamento não for definido.

As duas opções de dimensionamento para setScaleMode() mantêm a proporção existente da imagem intacta. O exemplo de código a seguir mostra como criar uma instância da classe PrintHelper, definir a opção de dimensionamento e iniciar o processo de impressão:

Kotlin

    private fun doPhotoPrint() {
        activity?.also { context ->
            PrintHelper(context).apply {
                scaleMode = PrintHelper.SCALE_MODE_FIT
            }.also { printHelper ->
                val bitmap = BitmapFactory.decodeResource(resources, R.drawable.droids)
                printHelper.printBitmap("droids.jpg - test print", bitmap)
            }
        }
    }
    

Java

    private void doPhotoPrint() {
        PrintHelper photoPrinter = new PrintHelper(getActivity());
        photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.droids);
        photoPrinter.printBitmap("droids.jpg - test print", bitmap);
    }
    

Esse método pode ser chamado como a ação para um item de menu. Os itens de menu para ações que nem sempre são compatíveis (como impressão) precisam ser colocados no menu flutuante. Para ver mais informações, consulte o guia de design da barra de ações (link em inglês).

Nenhuma outra ação do seu aplicativo será necessária depois que o método printBitmap() for chamado. A interface do usuário de impressão do Android será exibida, permitindo que o usuário selecione uma impressora e as opções de impressão. Em seguida, o usuário pode imprimir a imagem ou cancelar a ação. Se o usuário optar por imprimir a imagem, um trabalho de impressão será criado e uma notificação de impressão será exibida na barra do sistema.

Caso você queira incluir mais conteúdo nas impressões além de uma imagem, é necessário criar um documento de impressão. Para ver informações sobre como criar documentos de impressão, consulte as lições Como imprimir um documento HTML ou Como imprimir um documento personalizado.