Impressão para PDF no Ubuntu – correção de problemas

April 4th, 2008 by guilhermegarnier Leave a reply »

Alguns programas no Ubuntu permitem a impressão para o formato PDF, como o Evince e o Gedit. Para ter essa opção disponível em qualquer programa, basta instalar uma impressora virtual de PDF, usando o pacote cups-pdf. Se ele não estiver instalado na sua distribuição, instale-o com o comando sudo apt-get install cups-pdf.

Para criar uma impressora de PDF, acesse a opção System -> Administration -> Printing e depois “New Printer”. Depois selecione “Print into PDF file” como tipo de impressora, e na tela seguinte, “Generic” como fabricante e “PDF file generator” como modelo. Finalmente, dê um nome para a impressora. Feito isso, a impressora de PDF ficará disponível para qualquer programa que tenha a opção de impressão. Os PDFs serão criados no diretório PDF dentro do home do usuário.

O processo acima já foi descrito diversas vezes, em vários blogs e sites sobre Linux. Porém, decidi escrever sobre isso porque a maioria dos artigos pára por aí, não informando como alterar as configurações do cups-pdf e nem como resolver alguns dos problemas mais comuns.

Configurações

O arquivo de configuração do cups-pdf fica em /etc/cups/cups-pdf.conf. Neste arquivo, ficam definidos o diretório de destino dos PDFs, o diretório de spool, as regras para formação dos nomes de arquivos a partir do nome do documento impresso, configurações de segurança e permissões, o grupo de usuários que tem permissão para usar esta impressora, tipo de log, configurações do Ghostscript e outros. Se você alterar algum destes parâmetros, será necessário executar sudo /etc/init.d/cupsys restart para que as modificações tenham efeito.

Problemas

Os problemas mais comuns com o cups-pdf são:

  • se após enviar um trabalho para a impressora o arquivo correspondente não aparecer no diretório PDF dentro do seu home (ou o diretório que você tiver definido no arquivo de configuração), verifique o log (por padrão fica em /var/log/cups/cups-pdf_log). Ele pode ajudar a descobrir o que ocorreu (ex: problemas de permissão)
  • verifique se o usuário está no grupo correspondente definido no arquivo de configuração (grupo lp por padrão)
  • se você alterar o diretório de destino dos PDFs, altere também o arquivo /etc/apparmor.d/usr.sbin.cupsd, na seção /usr/lib/cups/backend/cups-pdf. Este arquivo contém as regras de segurança do AppArmor, e define os diretórios onde o cups-pdf tem permissão de escrita. Após alterá-lo, execute sudo /etc/init.d/cupsys restart
  • se o log do cups-pdf apresentar a mensagem "[ERROR] failed to set file mode for PDF file (non fatal)", execute o comando sudo aa-complain cupsd

Posts relacionados:

8 comments

  1. Adam Astor says:

    Parabéns!

    Realmente muitos já escreveram sobre como imprimir em pdf, mas ainda não vi nada como este seu post, o qual fala sobre possíveis problemas, e como resolvê-los.

    Gostaria de sugerir, e ao mesmo tempo consultar: Como fazer para se atribuir um nome ao arquivo pdf, no momento em se dá o comando para a sua geração?

    A idéia é permitir ao usuário, dar o nome à imagem de impressão em pdf, evitando que o sistema atribua o nome por default, pois, caso já exista o arquivo pdf, ele destrói o arquivo existente, e atribui o mesmo nome ao arquivo recém gerado, provocando a perda do anterior.

    Um jeito de se evitar esta perda do arquivo existente, é o usuário ser obrigado a renomeá-lo antes de uma nova impressão.

    Isto pode acontecer, por exemplo, quando se quer imprimir vários extratos de banco, para meses diferenciados, o sistema dará o mesmo nome ao arquivo, destruindo os anteriores, caso o usuário esqueça de renomeá-los.

    Qual a melhor forma, e como se deve fazer para o usuário poder escolher o nome a ser dado ao arquivo pdf, no momento que ele se dá o comando?

    Parabéns pelo post.

  2. LKRaider says:

    Acredito que o cups-pdf vem instalado por padrão no Ubuntu, pois instalei 2 máquinas recentemente, e ambas já tem a opção de impressão em PDF.

  3. Ricardo says:

    No Ubuntu Gutsy, e talvez em muitas outras distros, a opção de impressão em .pdf já ñ vem habilitada?
    Fiz um teste aqui e confimei isso, além tb de se ter a opção por arquivo postscript, em se selecionando impressão p/ arquivo.

  4. ggarnier says:

    Ricardo,

    conforme escrevi no post, essa opção de impressão para PDF existe em alguns programas específicos (já vi no Evince e no Gedit). Mas criando a impressora com o cups-pdf, ela fica disponível para qualquer programa que tenha a opção imprimir.

    Adam,

    não descobri uma maneira de perguntar ao usuário o nome do arquivo. Há um programa para Windows chamado PDF Creator (http://sourceforge.net/projects/pdfcreator/) que faz exatamente isso, mas no Linux não sei se é possível fazer algo parecido.
    O cups-pdf permite definir no arquivo de configuração as regras para formação do nome, a partir do título do documento (seção “Filename Settings” deste arquivo). É possível, por exemplo, incluir o número do job no nome do arquivo, para evitar que um arquivo que já exista com esse nome seja sobrescrito.
    Há um outro parâmetro “TitlePref” que permite passar o título por linha de comando. Só que ainda não consegui usar.

  5. Luciano says:

    conteúdo do log:

    Sun Feb 15 13:28:54 2009 [ERROR] failed to set file mode for PDF file (non fatal) (/home/lucianno/Test_Page.pdf)

    então

    “se o log do cups-pdf apresentar a mensagem “[ERROR] failed to set file mode for PDF file (non fatal)”, execute o comando sudo aa-complain cupsd”

    …acho que era isso que faltava =],

    []‘s

    Luciano

  6. Mauricio says:

    Boa tarde, estou atrás de solução para o problema de qual driver carregar para a estação windows, pq quando eu acesso o compartilhamento, ele me pede um driver. eu escolho um generico,. e após a instaslação, diz que não foi possível a conexão.

    abraço

  7. Mauricio,
    não entendi o problema. O que você está tentando fazer? Compartilhar uma impressora?

Trackbacks /
Pingbacks

  1. Impressão para PDF no Ubuntu

Leave a Reply