Filipe Saraiva's blog

Tecnologia, sociedade e política.

PDF – extensões que quebram o padrão e a “Solução Poppler”

with 26 comments

Recentemente comprei um tablet com o principal objetivo de utilizá-lo para leituras em geral, em especial de artigos científicos, facilitando assim o gerenciamento, armazenamento e reduzindo o número de impressões que faço deste tipo de documento. Por conta disso, uma das funcionalidades que adoraria utilizar seria a possibilidade de fazer anotações nos arquivos que leio no tablet, manter estas anotações nos arquivos, abrir estes mesmos arquivos em um computador convencional utilizando outro software, e ainda assim conseguir visualizar e manipular as anotações feitas anteriormente.

O formato mais comum destes documentos serem encontrados é o Portable Document Format – ou PDF, que tem como característica a manutenção da formatação do documento independente da plataforma utilizada para lê-lo. O PDF é um formato originalmente desenvolvido pela Adobe em 1993 para sua suíte Acrobat, e por conta da fidelidade de formatação e independência de plataforma tornou-se um dos “padrões de fato” para compartilhamento de arquivos digitais.

As especificações do formato PDF foram durante muito tempo propriedade exclusiva da Adobe, e aqueles que queriam desenvolver alguma solução utilizando o formato tinham basicamente duas opções: ou recorriam ao pagamento de royalties para a empresa ou se empenhavam nas técnicas de engenharia reversa sobre o formato.

Isso perdurou até o ano de 2008, quando a versão 1.7 da especificação do PDF foi submetida pela Adobe à ISO, na tentativa de torná-lo um padrão aberto. Após os trâmites convencionais da organização, o PDF 1.7 entrou para  rol dos formatos abertos de documento, publicado pela ISO sob o código 32000-1:2008. Você pode ter acesso ao documento pagando 238 francos suíços (253 Obamas quando este texto foi escrito) ou baixando gratuitamente uma cópia no site da Adobe.

O documento, um verdadeiro calhamaço de 756 páginas, traz as descrições completas do formato e também funcionalidades extras. Temos lá a sintaxe, como tratar gráficos, com tratar fontes, como encriptar o acesso, transparências, como adicionar áudio e vídeo ao PDF (você sabia que isso é possível?), como criar formulários interativos (sabia dessa também?) e, entre muitas outras, temos a descrição do suporte a anotações (seção 12.5).

Entretanto, apesar da existência de um padrão de suporte a anotações em PDFs, a aplicação desta especificação é totalmente dependente da implementação realizada pelos desenvolvedores. Apenas a existência de um padrão internacional ISO, documentado e certificado, não garante que todas as implementações que levam o nome do formato, de fato, estejam implementando aquilo que está especificado no padrão.

E este é um dos grandes problemas que afetam o formato PDF. Diversas implementações seguem apenas um subconjunto da especificação padrão, notadamente a renderização dos arquivos, tratamento de fontes, etc. Demais funcionalidades que permitem o uso dos arquivos desse formato para além da visualização fiel de documentos, ou muitas vezes não são implementadas, ou pior, são implementadas de uma forma que não seguem a especificação do padrão.

Esta tática é comumente utilizada por alguns atores da indústria de software para manter, a força, os usuários nos domínios de seus produtos, impedindo a migração ou mesmo o uso simultâneo de soluções diferentes para um mesmo fim.

Daí decorre a confusão de normalmente acharmos que não há um padrão para o uso de anotações em PDF: na verdade ele existe, mas é sumariamente negligenciado por empresas que desenvolvem softwares nesse campo, onde estas preferem implementar um padrão próprio não compatível com a especificação e não compatível com outros programas similares.

A solução para este problema é um pouco complicada. No mundo ideal, todos os leitores de PDF e bibliotecas associadas deveriam implementar a especificação ISO 32000-1:2008, mas não vivemos nesse mundo. Uma possibilidade seria termos conhecimento a priori se determinado software implementa ou não a especificação padrão, mas dificilmente encontramos esta informação de uma forma fácil.

Portanto, uma das saídas é elencar quais funcionalidades você gostaria de utilizar que não fossem dependentes de apenas um distribuidor, e sair testando a esmo quais delas são compatíveis em quais softwares. Outra saída seria utilizar softwares leitores de PDF baseados em Poppler, que implementem as funcionalidades que você deseja.

Poppler é uma biblioteca livre (GPL 2) multiplataforma voltada para renderização de PDFs, e implementa o padrão ISO 32000-1:2008. Esta biblioteca é um projeto apoiado pela freedesktop.org, iniciativa que provê padrões interoperáveis entre os diversos ambientes desktop livres e unix’s em geral. Poppler atingiu um nível de maturidade suficiente para que a Free Software Foundation retirasse o desenvolvimento da biblioteca GNU PDF de sua lista de projetos de alta prioridade.

O software leitor de documentos universal do KDE, Okular, durante alguns anos teve como o pedido de funcionalidade mais recorrente o suporte a anotações em PDFs. O software até lia anotações que seguiam o padrão ISO, mas não as salvava como metadados do próprio PDF. Até então, o Okular utilizava um “truque” para suportar anotações em todos os tipos de documentos que ele lê criando um formato de projeto .okular onde eram salvos o arquivo em si e os metadados das notas.

Após a adoção da versão 0.20 da biblioteca Poppler no último lançamento do KDE 4.9, o Okular versão 0.15.2 passou a suportar a gravação das anotações no próprio PDF. Para tanto, basta após a realização das anotações, ir em Arquivo -> Salvar Como. Na imagem abaixo, temos o arquivo PDF com duas anotações realizadas no Okular:

Para testar o suporte destas anotações em outro software, abri-o no Evince, o leitor de documentos do Gnome que também usa a biblioteca Poppler. Eu não consegui fazer anotações nesse software (acho que ele não suporta esta funcionalidade <UPDATE> O leitor Alexandre Harano descobriu como fazer anotações no Evince: “com o documento aberto, habilite o Side Pane através do botão F9. Uma vez que o side pane esteja aberto, troque onde está escrito Index (ao lado do X para fechar a aba) por Annotations.” Uma funcionalidade meio escondida, acredito que precisa melhorar esta usabilidade. Obrigado Alexandre! </UPDATE>), mas ele conseguiu apresentar as anotações anteriormente realizadas no Okular:

Portanto, vale lembrar: Poppler dá suporte a funcionalidades e segue a maneira como estas são especificadas no padrão PDF; entretanto, o software que utiliza Poppler ainda deve prover o acesso a estas funcionalidades. É possível encontrar na página wiki do projeto uma lista de leitores de PDF que utilizam Poppler.

Entretanto, o Poppler deve ser tratado como uma “quase solução” para o problema que relatei no primeiro parágrafo. No Android, até o momento, não temos um bom leitor de PDFs baseado nessa biblioteca. Existe o apdfviewer, mas de acordo com seu repositório faz algum tempo que ele não é mais desenvolvido. Portanto, para o problema de manter anotações em PDFs e  compartilhá-las entre distribuições GNU/Linux e Android, a saída seria desenvolver um novo leitor PDF baseado em Poppler, fazer um fork do apdfviewer e implementar o que falta, ou fazer os testes a esmo sobre a compatibilidade dessa funcionalidade.

Portanto, gostaria de convidar quem se interessou pelo tema a compartilhar nos comentários quais os leitores PDF que você utiliza, em qual plataforma os usa, se eles seguem um padrão que permite a você utilizar as funcionalidades em um e outro, e mais assuntos sobre o tema. Inclusive, seria muito útil criarmos uma tabela para visualizarmos quais funcionalidades são compartilhadas por quais softwares leitores de PDF que temos disponíveis por aí. Você pode baixar artigo de uma página com as anotações que utilizei como exemplo neste link.

<UPDATES>

Eu e alguns amigos realizamos testes no arquivo PDF com anotações linkado acima em vários softwares. Quem estiver fazendo também, por favor vá colocando nos comentários que irei atualizando o texto:

Adobe Reader 9 (Linux, software proprietário e grátis) – abriu as anotações corretamente. Não sei se anotações feitas nele abre nos demais.

Evince (Linux, software livre, desenvolvido pelo time do Gnome) – mostrou tanto o destaque de texto quanto a anotação, mas aparentemente não é possível fazer anotações com ele e é possível criar anotações com ele.

ezPDF (Android, software proprietário e pago) – abriu as anotações corretamente (dica do Fred, obrigado!).

Mantano (Android, software proprietário e grátis) – não abriu as anotações.

MyLibrary (Android, , software proprietário, exclusivo da ASUS) – não abriu as anotações.

Nitro PDF Reader (Windows, software proprietário) – abriu normalmente as anotações (valeu Havokdan!).

Okular (Linux, software livre, desenvolvido pelo time do KDE) – foi com ele que fiz as anotações e está tudo documentado nesse texto.

PDF Annotation (Android, software livre) – abriu a anotação mas não o destaque de texto. É possível fazer anotações com ele, mas não destacar texto (dica da Fabianne, valeu!).

pdfjs (Firefox, software livre) – um complemento para abrir PDFs no Firefox, eu fiz os testes mas abriu apenas a anotação, e não o destaque de texto. Não sei se é possível fazer anotações nele.

Sumatra PDF (Windows, software livre) – realça as partes com anotações, mas não as abre (obrigado Aluísio).

Visualizador de PDFs do Chrome (Chrome, software proprietário) – não apresentou as anotações (obrigado Alcemir!);

</UPDATES>.

P.S.: se você não conhece, visite o site pdfreaders.org, mantido pela FSFE, que contém vários softwares livres leitores de PDF. O objetivo é criar um repositório e uma conscientização de que leitor de PDF não é necessariamente Adobe Reader. Aliás, eu fiz a tradução do site para o português nos idos de 2009. 🙂

26 Responses to “PDF – extensões que quebram o padrão e a “Solução Poppler””

  1. Wisllan César disse:

    Uso o Okular – Kubuntu 12.10. KDE 4.9. Aqui tive q clicar algumas vezes na anotação para ela ser exibida.

  2. Miguel Vieira disse:

    Eita, boa pesquisa! Testei aqui abrindo num pc com GNU/Linux, no evince 3.6.0, e a exibição funcionou corretamente (o único porém é que o texto do primeiro comentário aparece num “hint” de baixíssima legibilidade, fonte preta sobre fundo cinza; será que é coisa do meu tema?). Também não achei opções para editar.

    Só uso esse visualizador. Fiz outro teste com o pdftotext, que vem no pacote poppler-utils (e converte um .pdf em um .txt), e ele não salvou as anotações (mas essa conversão já não é grande coisa, e nem sei se seria o caso de ela incluir as anotações…).

    • Filipe Saraiva disse:

      Oi @Miguel Vieira, tudo beleza? Acho que o evince apenas mostra as anotações, mas não possibilita criá-las ou modificá-las. Acho que até por conta disso ele não abre um “pop-up” para a nota e deixa apenas essa fonte preta sobre cinza (aqui no meu apareceu fonte branca sobre preto com o texto da nota).

      Sobre o poppler-utils, acho que ele não tem a finalidade de converter as notas em txt mesmo. Eu sei que essa funcionalidade é utilizada para fazer buscas por palavras no PDF.

      Miguel, te sugiro dar uma chance pro okular. Apesar de você não estar usando o KDE, acho que você poderá gostar muito das funcionalidades desse leitor universal de documentos. 😉

      • Miguel Vieira disse:

        Fala @Filipe Saraiva! Valeu pela dica; na verdade, eu já tinha descoberto o okular, bem por acaso, quando estava procurando mais sobre essa questão das anotações. Gostei, é completaço mesmo! Vou passar a usar nas leituras longas… no cotidiano (na hora de abrir um pdf qualquer que veio por e-mail, por exemplo), ainda prefiro um pouco o evince pela rapidez em carregar.

        Capaz que na minha próxima instalação eu experimente o KDE — faz tempo que sofro pra me acertar com um PIM, e depois que testei o korganizer ele está me parecendo a melhor opção; e integradinho ficaria melhor ainda.

        (Ah, e aquele hint em preto sobre cinza era do meu tema mesmo, vai entender.)

  3. Alcemir Santos disse:

    Aqui, o próprio visualizador do chrome não mostrou as anotações no artigo.

    Estou usando Ubuntu 12.04, logado com KDE. O Okular abriu normalmente a anotação e o highlightening. Já o Evince, abriu o highlightening e não abriu a anotação nem ferrando, apesar de mostrar as propriedades da anotação.

    • Filipe Saraiva disse:

      E aí @Alcemir Santos, tudo bacana? Valeu pelos testes!

      Acho que como o Evince não suporta anotações, eles acabam não tratando muito bem quando abrem um documento que já as tem. Aqui ele também não abriu, mas se você repousar o mouse sobre a nota o texto irá aparecer.

      • @Filipe Saraiva, por menos intuitivo que seja, encontrei o local de anotações do evince utilizado no Ubuntu: com o documento aberto, habilite o Side Pane através do botão F9.

        Uma vez que o side pane esteja aberto, troque onde está escrito Index (ao lado do X para fechar a aba) por Annotations.

        Ou seja, a opção existe mas a interface, além de não ser amigável para essa funcionalidade, dificulta quanto às questões de acessibilidade, uma vez que não possui atalho fácil para isso (talvez usando vários tabs para finalmente poder utilizar as anotações…).

    • Filipe Saraiva disse:

      @Alcemir Santos, ah, sobre o Chrome, aqui o visualizador que uso no Firefox, o pdfjs, conseguiu mostrar a anotação mas não o destaque de texto.

      O site do visualizador é https://mozillalabs.com/en-US/pdfjs/

  4. Filipe Saraiva disse:

    Fiz alguns testes com outros visualizadores.

    No Firefox uso a extensão pdfjs que permite abrir PDFs direto no navegador. Ela conseguiu mostrar a anotação, mas não o destaque de texto. O site desse projeto é https://mozillalabs.com/en-US/pdfjs/

    Testei no Android o MyLibrary (existe apenas nos tablets da Asus) e o Mantano. Infelizmente, nenhum deles mostrou as anotações que fiz no PDF. 🙁

  5. Filipe Saraiva disse:

    Mais algumas atualizações:

    No Android testei o ezPDF (proprietário e pago) e o PDF Annotation. O primeiro abriu tudo perfeitamente, já o segundo abriu a nota mas não o destaque de texto.

    Testei o Adobe Reader 9 no Linux e ele abriu as anotações também, mas não sei se anotações feitas nele abririam no okular.

  6. Felipe disse:

    Obrigado pelo texto, muito instrutivo.
    Houve uma época que usei o Okular e ele realmente salvava as anotações num arquivo separado, que não era utilizado por outros leitores.
    Muito bom saber que agora ele suporta o padrão.
    Agora posso parar de usar um arquivo texto para fazer anotações com o número da página do lado 😀
    Ah, legal sua preocupação com software livre 🙂

    • Filipe Saraiva disse:

      Valeu @Felipe, obrigado!

      Acho que irei preparar um texto sobre anotações no Okular. Esse software é hoje, com certeza, um dos melhores e mais completos leitores de documentos disponíveis, inclusive se compararmos ele com soluções proprietárias. 😉

  7. Aluísio A. S. G. disse:

    O leitor de PDFs do Windows 8 também lê e faz anotações.
    O Sumatra PDF (http://blog.kowalczyk.info/software/sumatrapdf/) realça as partes com anotações, mas não as abre.

  8. Havokdan disse:

    No shareware NitroPDF Professional funcional normalmente o pdf do texto, ele tem uma versão gratuita chamada Nitro PDF Reader.

  9. carlos felipe disse:

    Muito bom. Só uma correção, traz, verbo, é com z.

  10. ibere fernandes disse:

    filipe,

    obrigado pelo post. estudo para concursos públicos e cursos em pdf é minha realidade. anotações, grifos, bookmarks, balões, retângulos e highlight de diferentes cores são necessários. migrei há pouco tempo do win7 para ubuntu 12.04 e procurei muiiito por algo parecido com a experiência que eu tinha no foxit reader sob win7. tentei xournal, okular, pdfedit, pdfstudio e nenhum atendeu. o okular foi o mais próximo, mas não salvava as marcações no mesmo arquivo pdf. agora vejo que mudou, vou experimentar de novo. alguma dica ou posso instalá-lo normalmente sob o ubuntu 12.04? obrigado novamente!

  11. JOÃO ZILIOTTO disse:

    Filipe.

    Oportunamente, experimente JPDFtweak, disponível em:

    http://jpdftweak.sourceforge.net/

    Um abraço.

    20121212.

    JOÃO Z.

  12. Eduardo Werley disse:

    Caro Filipe, a Adobe liberou a funcionalidade completa de anotações na versão Reader XI. A versão disponível para Linux ainda é a 9.0, mas consegui instalar a XI no Wine. Ainda roda com vários bugs, mas consegui adicionar comentários e salvar normalmente. Consegui visualizar depois no Acroread (linux), mas no Okular só apareceram os textos grifados.
    Veja no link

    http://www.adobe.com/products/reader/features.html

    Abraço, Edu W.

  13. Eduardo, talvez seja porque a Adobe implementa as funcionalidades mas não segue o padrão de metadados estabelecido e seguido pela poppler.

    Depois me manda o arquivo pra eu testar por aqui.

  14. […] Okular – um leitor universal de documentos (lê PDF, ePub, txt, ODF, OOXML, e mais) que permite fazer anotações seguindo o padrão PDF; […]

Leave a Reply to Miguel Vieira