Skip to main content

Como escolher um módulo Drupal 7 para visualizar PDFs

RELAÇÃO ENTRE O TAMANHO DO CANO, A PRECISÃO, E A POTÊNCIA DA ARMA (Abril 2025)

RELAÇÃO ENTRE O TAMANHO DO CANO, A PRECISÃO, E A POTÊNCIA DA ARMA (Abril 2025)
Anonim

Recentemente, um cliente me pediu para adicionar um novo recurso ao site Drupal da empresa: exibir arquivos PDF no navegador. Como eu naveguei as opções no drupal.org, percebi que esta foi uma oportunidade perfeita para documentar o meu processo de tomada de decisão real como eu escolhi um novo módulo. Eu estou sempre dizendo para escolher os módulos com sabedoria, mas agora você pode ver como eu acho que isso funciona na vida real.

Defina o que você quer

O primeiro passo é definir o que você quer. No meu caso, eu queria:

  • A capacidade de visualizar arquivos PDF em um navegador da Web, semelhante a este exemplo. O cliente enviaria PDFs do boletim informativo da empresa e os visitantes poderiam lê-los facilmente.
  • O site é Drupal 7, portanto, o módulo precisaria corresponder a essa versão principal. (O Drupal 7 já está esgotado há algum tempo, portanto, se um desenvolvedor de módulos ainda não tiver lançado uma versão do Drupal 7, eles provavelmente não terão.)
  • Embora o cliente não tenha especificado isso, eu também queria evitar depender de um serviço de terceiros. Para vídeos, estou feliz em postar o conteúdo no YouTube ou no Vimeo e depois incorporá-lo em um site do Drupal, mas, para os PDFs, não acho que a possível exposição extra supere o possível incômodo, quebra e despesas. No entanto, eu estava aberto a um serviço de terceiros, se fosse a única opção.
  • Apesar do meu desejo de evitar um serviço de terceiros, eu sabia que a minha escolha provavelmente exigiria um JavaScript de terceiros biblioteca . Embora isso adicione um passo a mais em atualizações futuras, geralmente me sinto melhor em executar minha própria cópia de uma biblioteca em vez de confiar em um serviço de terceiros.
  • Eu queria manter o módulo o mais leve e específico possível. Eu não queria me envolver com uma maneira radicalmente nova de manipular ou organizar arquivos de mídia. Eu queria algo mais como o Colorbox, que amplia as imagens para melhor visualização, mas permanece completamente independente de como você escolhe gerenciar os arquivos de imagem. Eu tinha um palpite de que essa biblioteca seria o pdf.js, mas estava aberta a outras possibilidades.
  • Como sempre, queria seguir as diretrizes gerais para escolher um módulo do Drupal. Basicamente, escolha um módulo que já esteja em uso por alguns milhares de pessoas (se possível) por algum tempo, com um mínimo de dependências, que parece ser mantido por um desenvolvedor ativo que planeja continuar apoiando o projeto no futuro e não t requer uma taxa de licenciamento.

Pesquisa no Drupal.org

Com esses objetivos em mente, o próximo passo foi uma simples pesquisa no Drupal.org. Hora de pular para dentro do Pit Ball of Module Goodness.

Página "Comparação" para módulos PDF

Minha primeira parada foi (ou deveria ter sido), nesta página: uma comparação dos módulos de visualização de PDF. Drupal.org tem uma excelente tradição de páginas de documentação que descrevem os prós e contras de vários módulos no mesmo espaço. Há uma lista central de páginas de comparação, mas elas também são espalhadas pelo site.

A página de comparação de PDF incluiu quatro módulos de visualizador de PDF. Eu vou cobri-los aqui, assim como alguns outros que eu encontrei da pesquisa. Vou começar com os candidatos que decidi pular.

Agora vamos nos aprofundar nos detalhes de por que esses módulos funcionaram (ou quase não funcionaram) para este projeto.

Visualizador de Arquivos

O File Viewer usa o Internet Archive BookReader, que me intrigou porque sou um viciado em Internet Archive. Toda vez que vou lá, sinto cócegas de medo e submergir nas montanhas de livros que posso arrancar do éter.

Dito isto, o local de demonstração parecia um pouco feio para mim. Eu poderia viver com isso, mas duvidei que meu cliente, quandopdf.js parece muito mais elegante.

Além disso, em uma segunda olhada na página do projeto, vi o grande anúncio em negrito no topo:Este módulo foi movido para o módulo PDF formalmente. Justo. Com menos de 400 instalações, a fusão com o módulo PDF mais popular (que abordaremos em breve) parece ser uma boa jogada. Nunca baixe um módulo que tenha sido mesclado / movido / abandonado.

Formatador de arquivos do Visualizador do Google

O Google Viewer File Formatter é o que parece: uma maneira de usar o Google Docs para incorporar exibições de arquivos em sua página da web. Embora eu tenha gostado da versatilidade do Google Docs, um dos meus objetivos era permanecer independente de qualquer serviço de terceiros.

Além disso, este módulo tinha menos de 100 instalações.

Visualizador de Documentos Ajax

Embora "AJAX" seja um termo geral de Javascript, o Ajax Document Viewer acabou se baseando em um serviço específico de terceiros. Apenas cerca de 100 instalações. Se movendo…

Escaldar PDF

O Scald PDF só tinha 40 instalações, mas eu tive que dar uma olhada, já que era claramente parte de um projeto maior chamado (sim) Scald. Como a página do projeto Scald explicou: " Escaldar é uma abordagem inovadora sobre como lidarÁtomos de Mídia em Drupal ".

Essa frase levantou duas enormes bandeiras vermelhas: "take inovador" e a palavra "Media" emparelhada com "Atom". "Atom" foi obviamente uma palavra reaproveitada para "coisa", que fez uma bandeira vermelha sozinha. O Drupal tem uma propensão para essas palavras vazias: nó , entidade , característica … Quanto mais geral a palavra, mais abrangentes as mudanças podem ser.

Quando eu rolei para baixo, minhas suspeitas foram confirmadas. Li relatos entusiasmados de como o Scald basicamente reinventaria como eu lidei com o Media no meu site.

Agora, a verdade é que o manuseio de mídia do Drupal poderia usar alguma reinvenção. Escaldar não é o único projeto ambicioso neste espaço.No entanto, com menos de 1000 instalações até agora, eu não queria entrar no andar térreo.

Claro, por esta altura no próximo ano, Scald pode ser as próximas visualizações. Isso iria balançar. Mas também pode ser abandonado, com uma (pequena) trilha de sites quebrados para chorar.

Por enquanto, queria me ater a uma solução muito menos ambiciosa e perigosa. Basta exibir PDFs, por favor. Isso é tudo que eu estava perguntando.

Caixa de sombra

O Shadowbox me surpreendeu: ele afirmava ser uma solução única para exibir todos os tipos de mídia, de PDFs a imagens e vídeos. Isso não foi tão abrangente como Scald, uma vez que se concentraria apenas em exibindo mídia sem introduzir novos conceitos como "Átomos da Mídia". Mas eu já gosto do Colorbox, como mencionei. Eu não queria ter que repensar essa decisão.

No entanto, eu notei (com um gemido interno) que com mais16,000 instala, Shadowbox poderia ser uma alternativa mais poderosa no mesmo espaço. Eu teve dar uma olhada.

O módulo Shadowbox Drupal é basicamente uma ponte para uma biblioteca Javascript, Shadowbox.js, então eu verifiquei o site da biblioteca. Lá, descobri dois motivos para seguir em frente:

  • A biblioteca requer uma taxa de licença para uso comercial. A taxa foi razoável o suficiente, mas tento evitar o software de código aberto que não é gratuito.
  • Uma pesquisa cuidadosa do FAQ revelou que, ao contrário da descrição na página do módulo Drupal, os PDFs são não 100% suportado pela biblioteca do Shadowbox. Oops Ainda bem que eu verifiquei.

Os dois contendores: "PDF" e "PDF Reader"

Tendo eliminado o resto, cheguei agora aos dois candidatos óbvios: PDF e PDF Reader

Esses dois projetos tinham semelhanças importantes:

  • Ambos tinham quase 3.000 instalações, muito mais que as alternativas (exceto Shadowbox).
  • Ambos usaram a mesma biblioteca de Javascript externa,pdf.js.

E as diferenças?

Leitor de PDF também tinha a opção de integração com o Google Docs. Nesse caso em particular, achei que meu cliente poderia gostar disso, então gostei da opção.

Enquanto isso, PDF foi marcado comoBuscando co-mantenedor (es). Isso poderia ser um sinal de que o desenvolvedor logo abandonaria o projeto, mas, por outro lado, o commit mais recente foi há uma semana, então pelo menos o desenvolvedor ainda estava ativo.

Por outro lado, Leitor de PDF foi marcado comoMantido ativamente, mas o commit mais recente foi há um ano.

Sem um vencedor claro, decidi testar os dois.

Testando os contendores

Eu testei ambos os módulos em uma cópia do meu site ao vivo. (Não importa o quão sólido e inócuo um módulo apareça, nunca tente primeiro em um site ao vivo. Você pode quebrar seu site inteiro.)

Eu estava inclinado para Leitor de PDF , porque parecia ter mais opções (como o Google Docs) do que PDF . Então eu decidi tentar PDF primeiro, tirá-lo do caminho.

Falha de PDF: Compilação necessária?

No entanto, quando eu instalei PDF e leiaREADME.txt, Descobri um problema que eu tinha visto mas ignorado na página do projeto. Por alguma razão, este módulo parece requerer que você compilepdf.js manualmente. Embora a página do projeto sugerisse que isso não era necessariamente necessário,README.txt sugeriu que era.

Desde a Leitor de PDF usaria exatamente a mesma biblioteca sem precisar desse passo, decidi tentar primeiro, afinal. Se não funcionasse, eu sempre poderia voltar para PDF e tente compilar manualmentepdf.js.

Leitor de PDF: Sucesso! Tipo de.

Então, finalmente, eu tentei Leitor de PDF . Este módulo fornece um novo widget para exibir umArquivo campo. Você adiciona um campo de arquivo ao tipo de conteúdo desejado e define o tipo de widget comoLeitor de PDF. Em seguida, você cria um nó desse tipo e carrega seu PDF. O PDF aparece incorporado em uma "caixa" na página.

Você pode tentar diferentes opções de exibição editando o tipo de conteúdo novamente e alterando as configurações de exibição do campo.

Eu achei que cada opção de exibição tinha vantagens e desvantagens:

  • odocumentos Google O leitor funcionou bem como uma incorporação, mas quando eu clicou para ir para tela inteira, acabei em uma página do Google Docs que pediu desculpas por ter excedido meu limite de taxa. Oops Talvez isso fosse mais confiável se eu conectasse o módulo a uma conta paga do Google Apps, mas não me dei ao trabalho de descobrir, pois eu tinha certeza de que meu cliente não gostaria da exibição.
  • opdf.js opção funcionou maravilhosamente … no Firefox e no Chrome. Mas quando liguei o Internet Explorer, a caixa parecia vazia. Aparentemente, isso é um problema compdf.js em si, não o Leitor de PDF módulo. Eu suponho que eu deveria ter esperado isso, dado quepdf.js é desenvolvido pela Mozilla e o Internet Explorer é … ele mesmo. Ainda assim, fiquei desapontado por não ter pensado em confirmarpdf.js Funcionou de forma confiável em todos os navegadores, em primeiro lugar.
  • oEmbutir a opção foi a mais confiável. Isso realmente rodou o Adobe Reader em uma caixa na página da web. Meu Firefox ainda preferia rodarpdf.js, mas acho que isso foi uma configuração do navegador. De qualquer maneira, contanto que um visitante tivesse o Firefox ou um visualizador de PDF como o Adobe Reader, o PDF seria exibido.

Assim, no final, minha solução foi usar o Leitor de PDF com oEmbutir opção de exibição. Essa opção me permite anexar um PDF a um nó do Drupal e exibi-lo de maneira confiável em uma página da Web do Drupal.

Infelizmente, às vezes "confiável" não é suficiente. Depois de toda essa busca, tive que considerar um serviço de terceiros, afinal.