2 pontos por GN⁺ 2024-05-04 | 1 comentários | Compartilhar no WhatsApp
  • O Stirling PDF é uma plataforma open source de edição de PDFs que permite editar, assinar, ocultar, converter e automatizar PDFs sem enviar documentos para serviços externos
  • Suporta app desktop pessoal, UI no navegador, implantação em servidor próprio e API privada, permitindo rodar conforme o ambiente de trabalho
  • Oferece mais de 50 ferramentas para PDF, incluindo recursos como mesclar, dividir, OCR e compressão, além de pipelines no-code baseados em UI e automação via API
  • Para uso empresarial, oferece SSO, auditoria e implantação on-premises; a maioria das ferramentas tem REST API, permitindo integração com sistemas existentes
  • O início rápido é feito com Docker: execute docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf e depois abra http://localhost:8080

O que o Stirling PDF oferece

  • Stirling PDF é uma plataforma open source de edição de PDFs que pode ser executada como app desktop pessoal, UI no navegador ou servidor auto-hospedado
  • Ao implantar em servidor próprio, é possível usar uma API privada e processar operações em PDFs sem enviar documentos para serviços externos
  • As principais operações são edição, assinatura, ocultação, conversão e automação

Escopo das principais funcionalidades

  • Oferece mais de 50 ferramentas para PDF
    • Edição
    • Mesclagem
    • Divisão
    • Assinatura
    • Ocultação
    • Conversão
    • OCR
    • Compressão
  • Suporta automação e workflows
    • É possível criar pipelines no-code pela UI
    • É possível processar milhões de PDFs via API
  • Também inclui características de plataforma para desenvolvedores
    • Quase todas as ferramentas oferecem REST API
    • Pode ser integrado a sistemas existentes
  • A UI está disponível em mais de 40 idiomas
  • A lista completa de funcionalidades pode ser consultada na Documentation

Formas de implantação e execução

  • Os ambientes de execução suportados são cliente desktop, UI no navegador e servidor auto-hospedado
  • O início rápido pode ser feito com um comando Docker
docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf

Recursos empresariais e operacionais

  • Como recursos de nível empresarial, oferece SSO, auditoria e implantação on-premises flexível
  • Informações sobre Server Plan e Enterprise estão em Server Plan & Enterprise

Desenvolvimento, contribuição e suporte

  • Principais recursos
  • Canais de suporte
  • O guia de contribuição segue CONTRIBUTING.md
  • Os comandos de build, desenvolvimento e teste usam Task como executor unificado de comandos
    • Inicie a execução do editor com task dev
    • Veja comandos usados com frequência com task
    • O conteúdo completo está em DeveloperGuide.md
  • Para adicionar traduções, consulte devGuide/HowToAddNewLanguage.md
  • A licença é open-core, e os detalhes estão em LICENSE

1 comentários

 
GN⁺ 2024-05-04
Comentários do Hacker News
  • O que realmente falta no ecossistema de PDF, na minha opinião, são ferramentas open source relacionadas a assinaturas.
    Assinaturas em PDF são juridicamente importantes em várias partes do mundo por causa de regulamentações como o eIDAS, mas, fora a Adobe ou ferramentas proprietárias suspeitas, é difícil demais assinar documentos PDF criptograficamente. Mesmo que você descubra como assinar com LibreOffice ou poppler, é difícil obter certificados verificáveis sem gastar muito dinheiro.
    Se alguém fizesse para PDFs e certificados S/MIME algo como o Let's Encrypt, acho que a confiança pública melhoraria muito.

    • Dizem que é preciso um certificado verificável, mas só colar uma imagem de assinatura no macOS Preview já leva você surpreendentemente longe.
    • Concordo totalmente. Estou criando algo relacionado em uma empresa que, na terminologia do eIDAS, é uma TRA e QTSP.
      Uma excelente biblioteca open source que lida com PDF, assinaturas digitais e até assinaturas em PDF: https://github.com/MatthiasValvekens/pyHanko
      A DSS Tool da European Commission também é útil. Basta enviar um único PDF; não é preciso incluir tanto o original quanto a versão assinada: https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo...
      A empresa é https://www.zealid.com/en/, e em https://my.zealid.com/en você pode fazer onboarding remoto gratuitamente, baixar e enviar um certificado qualificado, assinar com QES e baixar o PDF, tudo de graça. Também é possível integrar via API.
    • É exatamente isso. Perguntei ao responsável de TI interno, que entende bem de Windows Server, quanto tempo levaria para implementar uma PKI básica para assinar documentos internos, e ele ficou me olhando como se eu tivesse duas cabeças.
    • O Preview do macOS não atende a essa necessidade?
  • Estou hospedando isso em casa. Eu mesmo não uso; basta usar as ferramentas CLI do Linux que servem de base.
    Mas acho melhor minha esposa fazer conversões ou divisões de PDF com isso do que enviar para qualquer site ou app. Afinal, esses sites muitas vezes usam as mesmas ferramentas de linha de comando.
    Ela também não se importa muito de um jeito ou de outro, e parece atender bem ao caso de uso dela.

    • Fiquei curioso sobre a parte das ferramentas CLI do Linux que servem de base. O que encontrei foi isto: https://pdfbox.apache.org/2.0/commandline.html
      PDFBox é uma aplicação Java, então deveria funcionar de forma multiplataforma, não só no Linux. Se você estava falando de outra coisa, seria bom saber.
    • É melhor simplesmente comprar uma ferramenta de PDF com licença perpétua por 70 dólares. Vale muito o dinheiro. Se conseguir também uma versão exe portátil, melhor ainda.
  • No README está escrito que “o Stirling PDF não inicia chamadas externas para fins de registro ou rastreamento”, então parece que a conclusão já está dada.

    • Sou o criador. Acho que há um pouco de confusão na documentação. Não foi feito totalmente com ChatGPT.
      No começo, no ano passado, eu quis testar como era o ChatGPT 3.0 e comecei como um desafio de 24 horas para criar o app inteiro com ChatGPT dentro desse limite de tempo.
      Publiquei no Reddit, houve muita demanda, então transformei em um app completo; só nas primeiras 24 horas foi totalmente com ChatGPT. Agora já se passou mais de um ano.
    • Fico me perguntando o que essa frase quer dizer. Foi colocada para chamar a atenção no HN? Parece parecido com produtos ou serviços que têm alguma relação com dados e, de repente, colocam em algum lugar da landing page “aliás, também fazemos IA”.
      Não é como se alguém escrevesse no README “desenvolvido usando IntelliSense”.
    • Para mim, significa duas coisas: não expor à internet pública e não inserir entradas não confiáveis.
      Então, pelos meus critérios, a utilidade cai bastante.
    • Impressionante. Vivemos mesmo em uma era incrível.
    • Então dá para confiar nisso?
  • Seria bom se esse recurso fosse integrado ao Paperless. Às vezes um documento escaneado entra de cabeça para baixo e preciso escanear de novo.
    Seria ótimo poder apertar um botão de rotação, mudar a ordem se necessário e mandar processar novamente.

    • Na última versão minor do paperless-ngx foram adicionados mesclar, dividir e girar.
      Fonte: https://docs.paperless-ngx.com/changelog/#paperless-ngx-270
    • O paperless-ngx mais recente oferece suporte a rotação de documentos. Vale conferir.
    • Ai. Basta girar o documento no leitor de PDF e depois imprimir em PDF.
  • Uma atualização relativamente recente do Firefox adicionou um editor de PDF.
    Acho que muita gente ainda tem uma percepção do Firefox baseada em algumas versões atrás. Como alguém que o usa diariamente ao longo de toda a sua história, acho que o Firefox evoluiu bastante ao longo dos anos.
    Se você não usa há algum tempo, vale tentar de novo.

  • Ao ler no README a frase “Stirling PDF does not initiate any outbound calls for record-keeping or tracking purposes”, fiquei curioso se haveria alguma forma de um usuário em potencial verificar isso de antemão, sem fazer uma auditoria do código.
    Em especial, alguns requests web são necessários para o app funcionar, mas como um app baseado na web poderia sustentar uma afirmação dessas se, por exemplo, ele tivesse que fazer requests apenas para uma lista limitada de URLs descrita em um manifesto como uma Content-Security-Policy?
    É uma questão bem concreta ao implantar um app em que o usuário precisa “fazer upload” de conteúdo sensível.

    • Se você hospedar por conta própria, o Little Snitch pode ajudar. Se não hospedar por conta própria, não há como garantir, e a postura padrão é “presuma o pior”.
      https://www.obdev.at/products/littlesnitch/index.html
      O Little Snitch é uma ferramenta focada em macOS. Deve haver outras, mas não conheço bem. Sinto que esse tipo de coisa deveria ser um recurso no nível do sistema operacional.
    • Se você hospedar por conta própria no Kubernetes, pode configurar uma política de rede de deny-all egress para esse deployment ou pod. Assim, todas as chamadas de rede externas são bloqueadas.
    • Um web app não precisa fazer requests web externos para funcionar. Quem interage com a web, o usuário, é quem inicia as solicitações.
      Você pode fornecer acesso ao app por meio de um proxy HTTP e filtrar as solicitações externas do web app, ou simplesmente não configurar roteamento de rede no servidor que hospeda esse app. Nesse caso, o que sobra são apenas as solicitações iniciadas por JavaScript dentro da página renderizada.
    • No fim, é um problema presente em praticamente todos os pacotes, bibliotecas e sistemas que usamos.
      O open source funciona sobre um nível considerável de confiança, e todos nós participamos dessa estrutura.
    • Basta colocar um sniffer ou uma ferramenta de captura de rede, como o Wireshark, no meio. Além disso, também dá para limitar completamente o acesso de rede do app apenas à rede doméstica local.
  • Estou trabalhando em um produto que pode ser descrito de forma parecida.
    CxReports: ferramenta web auto-hospedada para relatórios em PDF
    https://www.cx-reports.com

  • Vi esse projeto alguns meses atrás e gostei de imediato. Instalei e comecei a usar de verdade, mas ele tinha muitos bugs, e algumas ferramentas eram praticamente inutilizáveis.
    Espero que tenha melhorado agora.

  • Já usei isso para tentar aumentar o contraste de um arquivo PDF que continha um formulário de texto escaneado. A digitalização mal aparecia, então eu basicamente precisava escurecer ainda mais as partes escuras e, se possível, deixá-las um pouco mais grossas para ficarem mais legíveis.
    Mesmo uma tarefa que parecia tão simples não foi bem atendida pela ferramenta, e a melhoria foi muito pequena. Tentei repetir várias vezes, mas depois da segunda vez não havia mais diferença visual, enquanto o tamanho do arquivo continuava mudando.

    • Na verdade, isso não é um problema do PDF em si. Nesse caso, o PDF é apenas um wrapper fino em volta de uma imagem raster.
      Você pode extrair a imagem, aumentar o contraste com GIMP ou ImageMagick e criar um novo PDF. Se houver muitos arquivos, também dá para processar por script.
  • Estou olhando a lista e tentando descobrir se há uma API para extrair texto de PDFs.
    Ou também me pergunto se dá para obter isso em forma de vetores ou embeddings.