3 pontos por GN⁺ 2023-10-25 | 1 comentários | Compartilhar no WhatsApp
  • SumatraPDF é um leitor de documentos multiformato para Windows, com suporte aos formatos PDF, EPUB, MOBI, CBZ, CBR, FB2, CHM, XPS e DjVu
  • A licença é (A)GPLv3, e parte do código usa a licença BSD
  • Mais informações estão disponíveis em Website, Manual e Developer Information

1 comentários

 
GN⁺ 2023-10-25
Opiniões no Hacker News
  • Com a Adobe impulsionando a monetização do Acrobat de forma mais agressiva, algumas tarefas com PDF estão sendo substituídas por ferramentas open source. O SumatraPDF é uma das ferramentas usadas; o qpdf é usado para remover senhas, desbloquear e converter, e pode ser instalado no WSL com apt-get install qpdf
    É possível remover a senha com qpdf --decrypt --password="" input.pdf output.pdf; o PDF4QT é um editor de PDF open source para excluir, organizar e extrair páginas, mas ainda não tem release no Chocolatey, então exige instalação manual
    Inkscape e LibreOffice Draw são úteis para editar PDFs e adicionar texto; MuPDF, como ferramenta de linha de comando e pacote Python para parsing, preenchimento de formulários e adição de texto; SumatraPDF, para visualização; e pdfplumber, junto com o Jupyter Lab, para extrair tabelas de PDFs para pipelines de dados

    • O Firefox também permite visualizar PDFs, assinar e adicionar texto. Depois de desbloquear, também dá para remover a senha usando imprimir em PDF
    • PDFTK e pdfjam também são ferramentas de linha de comando úteis. O PDFTK é usado para mesclar PDFs, extrair, excluir e duplicar páginas, e descompactar para extrair e manipular texto e dados de comandos PDF brutos; o pdfjam é usado para juntar várias páginas por folha e ajustar tamanho de página e margens
    • Foi dito que o qpdf não está no Chocolatey, mas ele existe no Scoop, outro gerenciador de pacotes para Windows: https://github.com/ScoopInstaller/Main/blob/master/bucket/qp...
    • Para extração de tabelas, venho usando há anos http://tabula.technology/. Ele lidou bem até com tabelas bem complexas e não tive grandes problemas
    • Na verdade, o SumatraPDF agora usa MuPDF. Mas ainda há algumas limitações na renderização de PDFs e e-books, como no tratamento de formulários PDF ou na exibição de caracteres Unicode em epub
  • Um excelente texto retrospectivo escrito pelo autor do SumatraPDF: https://blog.kowalczyk.info/article/2f72237a4230410a888acbfc...

    • As quatro frases da retrospectiva — “é possível escrever código complexo e relativamente sem bugs mesmo sem testes”, “também é possível sem code review”, “se ninguém usa o app, não importa se ele trava” e “se muita gente usa, avisam sobre os crashes e aí você corrige” — se contradizem
      O sentido real não é que testes ou code review sejam desnecessários, mas algo mais próximo de delegar os testes aos usuários
      O autor provavelmente também testa o código. Afinal, executar o app também é um teste. Só que é muito provável que não seja uma abordagem rigorosa ou sistemática o bastante para dar aquela sensação de segurança que testes de regressão oferecem
      Quase ninguém afirma seriamente que seja impossível escrever código complexo sem testes automatizados. Sou forte defensor de testes automatizados, mas no fim dos anos 90 e começo dos anos 2000 já construí um renderizador multiplataforma relativamente grande sem um único teste automatizado; o processo levou muito tempo e, quanto mais mudanças eram feitas, mais assustador ficava
    • Discussões antigas no HN sobre o texto de 15 anos do SumatraPDF: https://news.ycombinator.com/item?id=27968900 - julho de 2021, 133 comentários
      Discussão do repost do mesmo texto em 2023: https://news.ycombinator.com/item?id=35065785 - março de 2023, 173 comentários
    • Pelo trecho “Gtk é feio, Qt é extremamente inchado e WxWidgets quase não funciona”, parece que o autor não dá uma olhada em toolkits multiplataforma desde os anos 90
    • Foi um texto interessante, e a menção no final a adicionar recursos de edição foi especialmente surpreendente. Soa como um buraco negro que suga pedidos de funcionalidades e inchaço sem fim
  • Gostaria que todos os desenvolvedores de leitores de PDF implementassem o recurso de visão geral do sioyek[0]. Ao passar o mouse sobre uma referência cruzada, o conteúdo referenciado abre em uma pequena janela de prévia
    É um recurso que muda completamente o jogo ao ler livros didáticos e artigos técnicos, e não dá para enfatizar o suficiente o quanto ele é útil
    [0] https://github.com/ahrm/sioyek#overview

    • Falando como criador do SumatraPDF, conheço o sioyek e estou pensando em trazer algumas ideias de lá. Talvez entrem na próxima versão
    • A Wikipedia também funciona de forma parecida, e provavelmente você já sabe disso. Fico curioso sobre o que estou entendendo errado
      Além disso, se esse recurso fizer o leitor de PDF executar código remoto arbitrário, não seria um risco sério?
    • Isso não é a transclusão (transclusion) do Ted Nelson? Ou seja, “o mesmo conteúdo existir em mais de um lugar de forma perceptível”
      https://en.m.wikipedia.org/wiki/Transclusion
    • Muito legal. Quero levar algumas dessas ideias para o meu app Kavita
  • Acabei de instalar pela primeira vez, e o desempenho supera não só o Adobe Reader, mas até o Foxit. Vencer o Adobe Reader não é grande coisa, mas vencer o Foxit é bem impressionante
    O tamanho da instalação também é só cerca de 10% do desses programas. Fico me perguntando o que a Adobe faz para o software ser tão insuportavelmente lento e penoso de usar

    • A Adobe provavelmente está lidando com suporte a 100% da especificação PDF e com solicitações de recursos obscuras que seis empresas de um setor extremamente nichado querem desesperadamente
      O Sumatra é excelente e é praticamente o único leitor de PDF que uso no Windows, mas tem só uns 10% dos recursos do Adobe Acrobat. Só que esses 10% são os recursos de que quase todo mundo precisa
    • O mais impressionante talvez seja o fato de ser um projeto de um único desenvolvedor. O SumatraPDF é um dos exemplos clássicos de um excelente projeto de software, e algo a se mirar
    • O que a Adobe faz? Talvez esteja implementando todas as listas de desejos de recursos já publicadas. Até os comentários aqui são todos do tipo “o Sumatra é bom, mas falta este ou aquele recurso”
    • Depois que me queimei quando o Foxit começou a distribuir spyware junto, fico hesitante até para experimentar outras coisas
    • https://old.reddit.com/r/geek/comments/ddh5p/comment/c0zfics...
  • Bênçãos para quem olha para a especificação PDF e pensa: “legal, eu queria escrever um parser para isso”

    • Falando como criador do SumatraPDF, para ser justo, eu não escrevi diretamente a renderização de PDF em si. Isso é realmente uma tarefa bem difícil
      Antigamente eu usava o poppler e depois mudei para o MuPDF. Na época, o MuPDF era mais ativo, e depois o poppler parece ter ganhado ritmo também
      O conjunto principal de recursos de PDF em si não é tão ruim de implementar. Pelo que vi, as partes ruins e complexas são coisas acrescentadas depois, como XML, JavaScript em formulários, recursos complexos de gráficos vetoriais como mascaramento vetorial, suporte a vários espaços de cor e separação CMYK, tratamento de fontes e renderização de texto
      Também é difícil ter de renderizar rapidamente PDFs malformados; PDF é fácil de estragar na criação, e as pessoas estragam de todas as maneiras imagináveis. Se a Adobe ou o Chrome conseguem abrir, não dá para simplesmente dizer que é um “PDF inválido”, então os desenvolvedores do MuPDF adicionaram muitas heurísticas para conseguir exibir até documentos PDF quebrados
    • Mesmo depois de criar o parser em si, descobrir de fato o que exibir e onde é interessante. Isso vale especialmente para documentos gerados, mais do que para documentos feitos à mão; para obter a posição dos elementos é preciso multiplicar matrizes, e para descobrir o conteúdo do texto é preciso escrever mais um parser para tabelas de codepoints extremamente customizadas
    • Não é piada. Ontem descobri que PDFs podem ter formulários com JavaScript
      https://tcpdf.org/examples/example_014/
      Não faço ideia de como isso funciona
    • Falando por experiência própria, a especificação PDF é, em muitos aspectos, muito mais sensata e bem projetada do que muitas “APIs” feitas por desenvolvedores JavaScript modernos
      A especificação original é meio feia, como usar chaves de dicionário de uma letra para economizar bytes no formato, mas há partes de fato bem pensadas. Appearance Streams são excelentes para compatibilidade retroativa e futura, e possivelmente são o maior motivo pelo qual nada substituiu o PDF
    • Escrever um parser para arquivos PDF que seguem a especificação pode não ser tão difícil. Claro, escrever um renderizador e uma interface completos é definitivamente difícil
      Mas, como muitos arquivos PDF não seguem a especificação, é preciso aceitar arquivos PDF inválidos com tolerância, como o parser da Adobe
  • Uma grande atualização do SumatraPDF saiu ontem [1]. A lista de pendências [2] inclui muitas correções de bugs e melhorias
    [1] https://github.com/sumatrapdfreader/sumatrapdf/releases/tag/...
    [2] https://github.com/sumatrapdfreader/sumatrapdf/issues/3672

    • Uso assim, pelas opções avançadas, como um modo escuro. Configuro uma cor de página quente e um fundo escuro
      MainWindowBackground = #191919
      FixedPageUI [
      TextColor = #282828
      BackgroundColor = #ebdbb2
      SelectionColor = #2d938f
      ...
      Até agora eu alternava entre outros modos sobrescrevendo o SumatraPDF-settings.txt com AutoHotkey. Queria compartilhar um script pequeno, mas ele quebrou de repente há pouco tempo
    • Modo escuro e troca de abas pelo teclado são ótimos acréscimos ao melhor leitor de PDF leve
    • Fico curioso se corrigiram os problemas relacionados à impressão. Era por causa disso que eu sempre acabava usando outro visualizador de PDF
  • Como outras pessoas disseram, o Sumatra é um dos poucos utilitários exclusivos do Windows dos quais sempre sinto falta quando uso Mac ou Linux. Em especial, há duas operações simples das quais sinto falta todos os dias ao visualizar esquemas de circuitos, desenhos mecânicos/técnicos e datasheets:
    Alt + rolagem para ampliar/reduzir, clique direito + arrastar para mover. Fico curioso se existe algum visualizador no Mac ou no Linux que ofereça esses dois recursos. O Skim no Mac oferece Option + rolagem e clique esquerdo + arrastar para mover, mas não permite redefinir para outra tecla ou botão do mouse

    • No Linux, o Zathura oferece isso. A diferença é que o zoom é com Ctrl, não com Alt. Arrastar com o botão direito funciona para mover
      Um recurso de que gosto muito é que Page Down vai para o topo da próxima página. É muito prático quando você quer passar rapidamente pelo documento com um nível de zoom que não se ajusta exatamente ao tamanho da página
    • Gosto muito do Okular. Especialmente do tema que permite ler PDFs com fundo vermelho-escuro e texto amarelo. Mas não consegui executá-lo em um Mac Mini com Apple Silicon. Parece que a fórmula mais recente do brew para Mac está quebrada
    • O Foxit amplia/reduz com Ctrl+rolagem e move com clique esquerdo+arrastar. Roda no Mac e provavelmente também no Linux
      Acho que é parecido o suficiente. Se você realmente quiser forçar isso, deve haver algum app shareware que faça emulação de teclado por aplicativo e remapeamento de entrada na hora
      Pelo que sei, https://www.keyboardmaestro.com/main/ é a solução padrão
    • Uso o qpdfview e estou muito satisfeito. Ele permite muita personalização
    • Talvez dê para remapear essa entrada com Karabiner Elements e BetterTouchTool apenas quando o Skim estiver em primeiro plano
  • Algo muito conveniente no SumatraPDF é que, quando um arquivo de imagem comum é modificado, ele é recarregado automaticamente. Por isso, é fácil exibir saída gráfica dentro de uma janela salvando em um arquivo de imagem

    • Não só imagens; PDFs inteiros também. No trabalho, gero PDFs, e é ótimo executar o comando de atualização e ver as alterações imediatamente assim que ele termina
    • Também é muito conveniente poder enviar um PDF para a impressora selecionada pela linha de comando. Pelo menos no Windows, é um recurso matador
  • Gosto muito do SumatraPDF. Uso há anos, e ele é excelente. Quando escrevo LaTeX no vim e mantenho o documento aberto lado a lado no Sumatra, ele é atualizado imediatamente ao compilar
    O recarregamento instantâneo das páginas torna o fluxo de trabalho muito fluido

    • Verdade. Também é preciso prestar respeito ao lervag. O plugin vimtex dele é monstruoso
      É bem provável que você esteja usando isso. Ele se integra ao Sumatra por padrão, e também ao MuPDF, Skim etc. Esse aspecto é legal
    • O Evince também oferece esse recurso. Pessoalmente, considero algo absolutamente indispensável
      Usei o Sumatra por pouco tempo antes de migrar para Linux; ele era bem bom e ágil
    • O Atril também recarrega automaticamente
  • Durante o doutorado, usei o Sumatra PDF como minha principal ferramenta para ver alterações em PDFs em tempo real enquanto escrevia manuscritos e artigos. A versão paga do Acrobat e a versão gratuita do Foxit têm mais recursos, mas bloqueiam o arquivo que está sendo alterado

    • É um bom exemplo de como implementar uma restrição desnecessária pode prejudicar um produto quando não se considera direito como essa restrição vai atrapalhar o usuário. Espero que softwares que fazem a mesma coisa no Android, como SafetyNet ou bloqueio de capturas de tela, também se tornem tão sem sentido quanto o Acrobat Reader