30 pontos por GN⁺ 2025-10-14 | 2 comentários | Compartilhar no WhatsApp
  • Ferramenta de CLI open source para manipulação de arquivos PDF, baseada em Python e criada pela equipe do py-pdf
  • Oferece diversos recursos de edição de PDF, como exibição de metadados, extração e mesclagem de páginas, remoção de páginas, conversão de imagens em PDF, compressão de documentos, criação de booklets e mais
  • Também oferece recursos avançados como extração de imagens e texto anotado de PDFs e recuperação de xref de PDFs corrompidos por edição manual
  • Na versão 0.5.0, lançada recentemente, foram adicionados novos recursos como assinatura e verificação de documentos PDF, extração apenas de páginas com anotações e rotação de páginas específicas

Ferramenta open source de CLI para PDF: pdfly

  • pdfly é o projeto mais recente da organização py-pdf, uma ferramenta de linha de comando para manipulação de arquivos PDF que funciona em ambientes Python
  • Foi desenvolvida com base nas bibliotecas fpdf2 e pypdf, e é fácil de instalar e usar, podendo ser aproveitada em várias plataformas
  • O maior ponto forte do pdfly é o amplo suporte de recursos em comparação com projetos open source concorrentes, além de uma interface intuitiva que até desenvolvedores iniciantes conseguem usar com facilidade
  • Em comparação com outros projetos, permite lidar facilmente com a maior parte das tarefas com PDF usando uma única ferramenta, oferecendo excelente eficiência

Principais recursos

  • Exibição de metadados

    • Os comandos pdfly meta e pdfly pagemeta permitem exibir metadados de PDF
    • Fornece dados do sistema operacional como nome do arquivo, permissões, tamanho e horários de criação/modificação/acesso
    • Exibe dados internos do PDF como versão do PDF, número de páginas, uso de criptografia, informações de fontes, anexos e quantidade de imagens
  • Combinação e edição de documentos

    • pdfly cat: recurso de extração de páginas específicas e mesclagem de documentos
    • pdfly rm: recurso de remoção seletiva de páginas
    • pdfly x2pdf: conversão de imagens em documentos PDF
    • pdfly compress: recurso de compressão de documentos
    • pdfly 2-up e pdfly booklet: recurso de criação de booklets
  • Extração de conteúdo

    • pdfly extract-images: extração de imagens de PDFs
    • pdfly extract-annotated-text: extração de texto anotado
  • Recuperação de PDF

    • pdfly update-offsets: corrige a tabela xref de PDFs editados manualmente em um editor de texto para que possam ser abertos novamente
    • A tabela xref é um índice de offsets em bytes dentro do documento e pode ser corrompida durante a edição manual

Lançamento da versão 0.5.0 e novos recursos

  • Lançamento da versão 0.5.0 do pdfly em 13 de outubro de 2025
  • pdfly sign: permite adicionar assinatura eletrônica a documentos PDF de forma simples
  • pdfly check-sign: recurso de verificação de assinatura de documentos PDF
  • pdfly extract-annotated-pages: extrai seletivamente apenas páginas com anotações, ajudando em revisões e retrabalho repetitivos de documentos grandes
  • pdfly rotate: recurso para rotacionar páginas específicas do documento

Planos futuros

  • diversas ideias de funcionalidades em preparação nas issues marcadas como up-for-grabs no GitHub
  • Também há issues com a label good first issues voltadas para novos contribuidores, incentivando a participação de quem está começando em open source
  • O plano é dar prioridade à expansão de recursos relacionados a assinatura eletrônica como pdfly sign e check-sign
  • Feedback de usuários, relatos de bugs e sugestões de funcionalidades são muito bem-vindos

https://github.com/py-pdf/pdfly

2 comentários

 
ifmkl 2025-10-14

Eu usava o Moduui PDF e, para ficar mais prático para meu uso pessoal, criei uma ferramenta de PDF que suporta apenas algumas funções (extração, mesclagem, remoção, rotação e reordenação) e estou usando ela. No navegador, usando pdf.js / pdf-lib.js. Antes de criar minha própria ferramenta pessoal, também procurei, e vi que existe uma quantidade enorme de ferramentas e sites relacionados a PDF.

 
GN⁺ 2025-10-14
Opinião no Hacker News
  • É um comentário de 10 anos atrás, mas ainda acho válido. Só no ecossistema de bibliotecas Python já existem muitas opções com funcionalidades de PDF parcialmente sobrepostas. Em outras linguagens acontece a mesma coisa, com inúmeras bibliotecas. No fim, cada uma delas é basicamente um conjunto de funções que transformam estruturas de dados parecidas. Por isso, para fazer trabalhos complexos com PDF, você acaba precisando combinar duas ou três bibliotecas, o que é ineficiente tanto do ponto de vista do desenvolvedor quanto em termos de recursos computacionais. Se alguém criasse em Rust estruturas de leitura/escrita de PDF de baixo nível, bem projetadas e em memória, acho que todo o ecossistema melhoraria muito. Qualquer linguagem ou biblioteca de PDF poderia aproveitar essas estruturas e, ao adotá-las, haveria chance de reduzir código e melhorar desempenho e segurança. E se ainda fornecessem apenas get_structure_pointer() e set_structure_pointer(), as próprias bibliotecas poderiam se integrar livremente entre si. Com uma estrutura dessas, bibliotecas pequenas poderiam adicionar funcionalidades com facilidade e ser adotadas rapidamente. Não sei quem, na prática, toparia fazer isso, mas acho que é algo realmente necessário

    • Ao criar uma biblioteca de PDF, há trade-offs de projeto constantes dependendo do objetivo de uso. O próprio conceito de "em memória" já é uma grande escolha, porque o formato PDF foi projetado justamente para não exigir que o arquivo inteiro seja carregado de uma vez na memória. Além disso, para quem prefere módulos profundos com interfaces mínimas, nunca fará sentido tratar módulos rasos e com funcionalidades amplas como a resposta. Por fim, também é preciso considerar que, em ambientes gerenciados como a JVM, uma biblioteca feita com interface em C traz complexidade e overhead adicionais. Link relacionado

    • Concordo com a opinião de que "se alguém fizesse uma estrutura de PDF em memória realmente boa em Rust, isso revolucionaria o ecossistema". Mas já é difícil o bastante criar uma biblioteca muito melhor do que todas as existentes; continuar atualizando, corrigindo bugs e fazendo manutenção é muito mais difícil ainda. Mesmo que houvesse financiamento suficiente, ainda seria preciso encontrar alguém disposto a manter isso com entusiasmo ano após ano e, quando essa pessoa perdesse o interesse, arrumar outra. E, nesse meio-tempo, inevitavelmente também seria preciso lidar com reclamações. Resumindo: já quero agradecer antecipadamente ao voluntário que vai criar isso e manter para sempre

    • Ao ver a discussão sobre "seria ótimo existir uma excelente estrutura de PDF em memória feita em Rust", compartilho o projeto open source lopdf, que de fato já existe

    • Estou justamente depurando um problema de parsing de PDF agora e acabei escrevendo meu próprio parser. Tentei entender os parsers existentes, mas o código era tão bagunçado que no fim implementei o meu. O formato PDF, sinceramente, ficou bastante complexo ao longo da sua evolução, com toda sorte de remendos e adições excessivas de funcionalidades. A ideia em si é boa, mas existem tantos tipos de objeto e propriedades especiais em PDF que, toda vez que você tenta fazer bindings para isso, a complexidade de FFI acaba se repetindo. Talvez fosse melhor criar um mapeamento oficial entre PDF e JSON e, desde que o problema de memória fosse aceitável, permitir que as principais bibliotecas trocassem dados assim. O modelo de objetos também não é tão diferente assim

    • Brinca-se que toda essa discussão pode ser resumida em uma única tirinha do XKCD, e compartilha-se o link

  • O Poppler não detalha isso muito bem no site oficial, mas na prática é uma biblioteca com vários utilitários incluídos, e também é fácil de usar em distribuições Linux. Já usei essas ferramentas várias vezes com ótimos resultados. Link para a wiki

    • Usei essas ferramentas para analisar centenas de milhares de holerites em PDF e subir os dados para um novo sistema financeiro. Dou nota 10 de 10, facilmente

    • Também uso as ferramentas do poppler com frequência no dia a dia. Acho excelentes

  • Para trabalho de baixo nível, o qpdf é bastante útil

    • Eu também vim aqui para falar disso. Qpdf é o que mais uso na linha de comando para lidar com arquivos PDF. Dá para usar para criptografar, descriptografar, extrair páginas, mesclar e mais. Tem licença Apache e foi escrito em C++
  • Também existe o pdfcpu.io. Ainda assim, se você só precisa fazer alterações simples em PDF, é muito difícil encontrar um aplicativo GUI open source, multiplataforma, que resolva isso. Eu mesmo ainda não encontrei

    • Já usei bastante o PDF SAM basic ("split and merge"). Link do site É open source, multiplataforma, e ainda tem funcionalidades extras disponíveis só na versão paga

    • Se você puder hospedar por conta própria, o Signature PDF também me pareceu bem interessante. Link do projeto

    • Talvez o pdf24 tools sirva. Ele também oferece instalação offline

    • Já usei pdfcpu images list, e levei um susto quando ele começou a baixar alguma fonte da internet no meu computador local. É outubro, mas achei assustador demais e deixei para lá

    • No fim das contas, depois de pensar bastante, decidi usar uma licença paga do Creative Cloud. O Acrobat simplesmente funciona, então não teve jeito. Eu realmente queria uma alternativa, mas na prática não há um substituto à altura

  • Gostaria de recomendar o PDFgear. Não é algo super avançado, mas entre as alternativas ao Adobe, é praticamente o único que considero utilizável para edição de PDF de nível intermediário. É gratuito e está disponível em todas as plataformas, exceto Linux

    • Já que suporta tudo menos Linux, perguntam em tom de brincadeira onde estão os binários para OpenVMS, Apple II e DEC Alpha

    • Também existe o Master PDF, que inclusive tem versão para Linux. Link

    • Mesmo que pareça bom à primeira vista, acho difícil acreditar na lógica de "é grátis, não tem anúncios, não vende dados e funciona de forma transparente só com capital de investidores". O comentário até cita a explicação do próprio site, que diz que o PDFgear opera sem receita de anúncios ou dados, sustentado por investimento e otimização técnica

    • Tenho certa desconfiança em relação ao PDFgear. No passado, ele já fez upload para a nuvem sem o conhecimento do usuário, e há indícios de que a empresa também administra o próprio subreddit

  • Fato que aprendi hoje: já existem muitas ferramentas multifuncionais para arquivos PDF

  • Queria muito que existisse uma função que gerasse automaticamente o sumário (metadados). PDFs de livros antigos muitas vezes não têm isso, e a navegação fica muito ruim. O Kybook3 tem uma versão dessa função, mas não funciona direito. Com a tecnologia de LLM atual, talvez isso já fosse possível

    • Estou usando pdf.tocgen. Não é totalmente automático, mas já economiza um enorme tempo em comparação com fazer tudo manualmente
  • Fico me perguntando se uma ferramenta para automatizar assinatura de PDF realmente faz sentido. A essência de uma assinatura é que uma pessoa leu e concordou; então automatizar isso parece meio contraditório

    • Acho que não há motivo para uma empresa deixar de assinar automaticamente documentos que ela própria gera. A assinatura aqui não é a assinatura visual dentro do PDF, mas sim uma assinatura criptográfica que permite a qualquer pessoa verificar quem emitiu o documento. Ou seja, serve para que o usuário possa confirmar se um extrato bancário realmente veio do banco

    • Um CEO não tem tempo para assinar uma quantidade enorme de contratos de funcionários. Mesmo na era analógica, havia secretárias encarregadas de carimbar documentos, então automatizar assinaturas faz sentido na prática

    • Comprovantes bancários podem ser emitidos com assinatura automática sempre que necessário. Ninguém espera que o gerente da agência fique sentado assinando cada solicitação manualmente

    • Por exemplo, se você precisa assinar 25 PDFs, é muito mais conveniente revisar tudo na tela e fazer uma assinatura em lote do que abrir um visualizador e assinar um por um manualmente

  • Além do que foi mencionado acima, também existe o pdfcpu, um "Go PDF processor and CLI". GitHub do pdfcpu

  • Para mim, a verdadeira ferramenta canivete suíço de PDF sempre foi o conjunto de utilitários PDF do Didier Stevens. Link do programa