Technè

Tecnologia & Experiência do Usuário no C.E.S.A.R

Como utilizar o Google Cloud Print para imprimir via Android

Posted by Felipe On julho - 12 - 2011

Na busca por uma maneira de como enviar um arquivo para impressão de um smartphone Android, surge a dúvida de como faria isso direto da aplicação sem se preocupar como iria ser feito esta conexão com a impressora, ai que surge o Google com suas ferramentas revolucionárias, o Google Cloud Print.

Como a ferramenta já diz, levar a impressão pras nuvens. Ao conectar o seu navegador ‘Google Chrome’ à conta do ‘Google Cloud Print’, ele permite que todas as impressoras que o navegador tenha acesso, sejam jogadas nas núvens, para futuras impressões, e o melhor, de qualquer computador / smarthphone, independente de onde você estiver.

A princípio devemos acessar: http://www.google.com/cloudprint e fazer o login para integrar a conta do google com o cloudprint, caso você não esteja no utilizando o ‘Google Chrome’ que é um fator fundamental para configurar as impressoras que serão usadas nas nuvens, ele irá sugerir para o download.

Feito isso, vá em Opções (Options) -> Opções Avançadas (Under the hood) -> Na última opção faça o login no cloudprint e configure as impressoas que estarão disponívels para uso. “Google Cloud Print lets you access this computer’s printers from anywhere. Sign in to enable.”

Com tudo configurado, vamos ao código.

A princípio a permissão de acesso a INTERNET no Manifest da sua aplicação, para que a Activity que fará a conexão com o google possa mostrar o conteúdo do site no seu webview.

// permissão para uso da internet
<uses-permission android:name="android.permission.INTERNET" />

Basicamente, o código em si é esta chamada de Activity onde o programador irá passar o documento em forma de URI e seu MimeType (Uma lista de tipos pode ser encontrada aqui), e o título no qual o documento terá na lista de arquivos que estão sendo impressos.

Intent printIntent = new Intent(this, PrintDialogActivity.class);
printIntent.setDataAndType(docUri, docMimeType);
printIntent.putExtra("title", docTitle);
startActivity(printIntent);

Um exemplo seria a impressão de um PDF, para demonstração utilizo a biblioteca iText (http://www.itextpdf.com/) que é OpenSource e utilizada em Java e C#. Após adicionar o arquivo .jar ao Build Path do seu projeto no eclipse, basta criar um arquivo no SDcard, lembrando que precisamos de criar uma permissão para esse feito:

// permissão para escrever no armazenamento externo
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

// pega o armazenamento externo
File root = Environment.getExternalStorageDirectory();
// instancia um arquivo que será criado no diretório base do SDCARD
File file = new File(root, "teste.pdf");
// se o arquivo já existir, delete-o
if (file.exists())
    file.delete();
// tente criar um arquivo temporário
try {
    file.createNewFile();
} catch (IOException e) {
}

// criamos um documento do tipo PDF
Document document = new Document();
try {
    // avisamos ao PdfWriter que esse documento será salvo
    // na minha instancia de file para que
    // ao fechados o documento ele salve o arquivo
    PdfWriter.getInstance(document, new FileOutputStream(file));
    document.open();
    // adicionamos um paragrafo ao documento
    document.add(new Paragraph("Hello World!"));
} catch (DocumentException e) {
    e.printStackTrace();
}
document.close();

// e finalmente mandamos o arquivo para a Activity que
// fará a comunicação com o Google Cloud Print
Intent printIntent = new Intent(this, PrintDialogActivity.class);
printIntent.setDataAndType(Uri.fromFile(file), "application/pdf");
printIntent.putExtra("title", "PDF para ser impresso");
startActivity(printIntent);

O código da PrintDialogActivity juntamente com seu layout está disponível no site do projeto no google, e não precisa de nenhuma modificação, acesse para maiores informações: http://code.google.com/apis/cloudprint/docs/android.html

Outras bibliotecas PDF.

Categorias: Geral

One Response to “Como utilizar o Google Cloud Print para imprimir via Android”

  1. Glauber says:

    Meus parabéns Felipe, belíssimo post.

    []’s
    Glauber

Leave a Reply