3 puntos por GN⁺ 2023-10-25 | 1 comentarios | Compartir por WhatsApp
  • SumatraPDF es un lector de documentos multiformato para Windows, con soporte para los formatos PDF, EPUB, MOBI, CBZ, CBR, FB2, CHM, XPS y DjVu
  • La licencia es (A)GPLv3, y parte del código usa licencia BSD
  • Más información disponible en Website, Manual, Developer Information

1 comentarios

 
GN⁺ 2023-10-25
Comentarios en Hacker News
  • Como Adobe está empujando la monetización de Acrobat de forma más agresiva, algunas tareas con PDF se están cambiando a herramientas open source. SumatraPDF es una de las herramientas que usan, y qpdf se usa para quitar cifrado, desbloquear y convertir; se puede instalar en WSL con apt-get install qpdf
    Con qpdf --decrypt --password="" input.pdf output.pdf se puede quitar la contraseña, y PDF4QT es un editor de PDF open source para borrar, reordenar y extraer páginas, aunque todavía no tiene lanzamiento en Chocolatey y requiere instalación manual
    Inkscape y LibreOffice Draw sirven para editar PDF y agregar texto, MuPDF como herramienta de línea de comandos y paquete de Python para parsing, rellenado de formularios y agregar texto, SumatraPDF para visualización, y pdfplumber junto con Jupyter Lab es útil para extraer tablas de PDF hacia pipelines de datos

    • Con Firefox también se pueden ver PDF, firmarlos y agregar texto. Si lo desbloqueas y luego imprimes a PDF, también puedes quitar la contraseña
    • PDFTK y pdfjam también son herramientas de línea de comandos útiles. PDFTK se usa para fusionar PDF, extraer, borrar y duplicar páginas, y descomprimir para sacar y manipular texto y datos de comandos PDF en crudo; pdfjam se usa para imprimir varias páginas por hoja y ajustar tamaño de página y márgenes
    • Se dijo que qpdf no está en Chocolatey, pero sí está en Scoop, otro administrador de paquetes para Windows: https://github.com/ScoopInstaller/Main/blob/master/bucket/qp...
    • Para extraer tablas, desde hace años usan http://tabula.technology/. Ha manejado bastante bien tablas complejas y no ha dado mayores problemas
    • En realidad, SumatraPDF ahora usa MuPDF. Aun así, tiene algunas limitaciones en el renderizado de PDF y ebooks, por ejemplo en el manejo del formato de PDF o la visualización de caracteres Unicode en epub
  • Excelente texto retrospectivo escrito por el autor de SumatraPDF: https://blog.kowalczyk.info/article/2f72237a4230410a888acbfc...

    • Las cuatro frases del texto retrospectivo —“se puede escribir código complejo y relativamente libre de bugs sin tests”, “también se puede sin code review”, “si nadie usa la app, no importa que se caiga”, y “si mucha gente la usa, reportarán los crashes y entonces se arreglan”— se contradicen entre sí
      El sentido real parece estar más cerca de decir que no es que no hagan falta tests o code review, sino que puedes dejarle las pruebas a los usuarios
      El autor probablemente sí prueba su código. Ejecutar la app también es una forma de testing. Pero quizá no sea un enfoque lo bastante estricto o sistemático como para dar la sensación de seguridad que aportan las pruebas de regresión
      Casi nadie sostiene seriamente que sea imposible escribir código complejo sin pruebas automatizadas. Apoyo fuertemente las pruebas automatizadas, pero a fines de los 90 e inicios de los 2000 llegué a crear un renderer multiplataforma bastante grande sin una sola prueba automatizada, y el proceso tomó mucho tiempo; además, mientras más cambios hacía, más miedo me daba tocarlo
    • Debates anteriores en HN sobre el texto de los 15 años de SumatraPDF: https://news.ycombinator.com/item?id=27968900 - julio de 2021, 133 comentarios
      Debate de la republicación del mismo texto en 2023: https://news.ycombinator.com/item?id=35065785 - marzo de 2023, 173 comentarios
    • Viendo la parte de “Gtk es feo, Qt es extremadamente pesado y WxWidgets casi no funciona”, parece que el autor no ha revisado los toolkits multiplataforma desde los 90
    • Fue un texto interesante, y me sorprendió especialmente la mención al final sobre agregar funciones de edición. Suena como un agujero negro que absorbe sin fin solicitudes de funciones y bloat
  • Ojalá todos los desarrolladores de lectores de PDF implementaran la función de overview de sioyek[0]. Al pasar el mouse sobre una referencia cruzada, el contenido referenciado se abre en una pequeña ventana de vista previa
    Es una función que cambia por completo la experiencia al leer libros de texto y papers técnicos, y es imposible exagerar lo útil que es
    [0] https://github.com/ahrm/sioyek#overview

    • Desde la perspectiva de quien hizo SumatraPDF, sí conoce sioyek y está pensando en tomar algunas ideas de ahí. Puede que entren en la próxima versión
    • Wikipedia también funciona de forma parecida, así que supongo que eso ya lo sabrá. Me pregunto qué está entendiendo mal
      Además, si por esa función el lector de PDF terminara ejecutando código remoto arbitrario, sería un riesgo serio, ¿no?
    • ¿No es esto la transclusión (transclusion) de Ted Nelson? Es decir, “el mismo contenido existe en dos o más lugares de una forma perceptible”
      https://en.m.wikipedia.org/wiki/Transclusion
    • Está realmente genial. Me gustaría llevar algunas de estas ideas a mi app Kavita
  • Lo acabo de instalar por primera vez y el rendimiento supera por mucho no solo a Adobe Reader sino incluso a Foxit. Superar a Adobe Reader no es gran cosa, pero superar a Foxit sí es bastante impresionante
    El tamaño de instalación también es apenas como el 10% del de esos programas. Me pregunto qué hace exactamente Adobe para que su software sea tan insoportablemente lento y tan horrible de usar

    • Adobe probablemente está lidiando con soporte 100% de la especificación PDF y con solicitudes de funciones enrevesadas que 6 empresas de una industria muy específica realmente necesitan con urgencia
      Sumatra es excelente y es casi el único lector PDF que uso en Windows, pero tiene como el 10% de las funciones de Adobe Acrobat. Eso sí, ese 10% incluye casi todo lo que necesita casi todo el mundo
    • Lo más impresionante probablemente es que es un proyecto de un solo desarrollador. SumatraPDF es uno de los mejores ejemplos de un gran proyecto de software, y algo a lo que aspirar
    • Lo que hace Adobe es probablemente procesar todas las listas de funciones deseadas que se han acumulado hasta ahora. Incluso aquí en los comentarios todo el mundo dice algo como “Sumatra está bien, pero le faltan estas funciones”
    • Desde que Foxit empezó a distribuir también spyware, me cuesta animarme a probar otras alternativas
    • https://old.reddit.com/r/geek/comments/ddh5p/comment/c0zfics...
  • Bendiciones para quien haya visto la especificación PDF y haya pensado: “qué bien, quiero escribir un parser para esto”

    • Hablando como alguien que hizo SumatraPDF, para ser justos no escribí yo mismo el renderizado de PDF. Eso sí que no es nada fácil
      Antes usábamos poppler y luego cambiamos a MuPDF. En ese momento MuPDF estaba más activo, aunque parece que desde entonces poppler también agarró impulso
      El conjunto básico de funciones de PDF en sí no es tan terrible de implementar. Por lo que he visto, las partes malas y complejas son cosas agregadas después, como XML, JavaScript dentro de formularios, funciones complejas de gráficos vectoriales como el enmascarado vectorial, soporte para múltiples espacios de color y separación CMYK, manejo de fuentes y renderizado de texto
      También es difícil tener que renderizar rápido PDFs mal hechos; es muy fácil arruinar un PDF al crearlo, y la gente lo arruina de todas las formas imaginables. Si Adobe o Chrome pueden abrirlo, ya no basta con decir que es un “PDF inválido”, así que los desarrolladores de MuPDF agregaron muchas heurísticas para poder mostrar incluso documentos PDF rotos
    • Incluso después de hacer el parser en sí, sigue siendo interesante averiguar qué mostrar y dónde. Eso pasa sobre todo con documentos generados más que con documentos hechos a mano; para obtener la posición de los elementos hay que multiplicar matrices, y para averiguar el contenido del texto también hay que escribir otro parser para tablas de codepoints muy personalizadas
    • No es broma. Ayer me enteré de que un PDF puede tener un formulario con JavaScript
      https://tcpdf.org/examples/example_014/
      No tengo idea de cómo demonios funciona eso
    • Por experiencia propia, la especificación PDF es en muchos sentidos bastante más sensata y mejor diseñada que muchas “API” que hacen hoy los desarrolladores modernos de JavaScript
      La especificación original es algo fea porque ahorraba bytes en el formato usando una sola letra para claves de diccionario y cosas así, pero en realidad hay partes muy bien pensadas. Los Appearance Streams son excelentes para la compatibilidad hacia atrás y hacia adelante, y probablemente esa sea una de las razones más grandes por las que nada ha logrado reemplazar a PDF
    • Escribir un parser para archivos PDF que sí siguen la especificación quizá no sea tan difícil. Claro, escribir un renderizador completo y la interfaz sí es definitivamente difícil
      Pero como muchos archivos PDF no siguen la especificación, también hay que aceptarlos con tolerancia, como hace el parser de Adobe
  • Ayer salió una gran actualización de SumatraPDF [1]. La lista de tareas pendientes [2] incluye muchas correcciones de errores y mejoras
    [1] https://github.com/sumatrapdfreader/sumatrapdf/releases/tag/...
    [2] https://github.com/sumatrapdfreader/sumatrapdf/issues/3672

    • Lo uso como si fuera modo oscuro con opciones avanzadas. Básicamente configuro un color de página cálido y un fondo oscuro
      MainWindowBackground = #191919
      FixedPageUI [
      TextColor = #282828
      BackgroundColor = #ebdbb2
      SelectionColor = #2d938f
      ...
      Hasta ahora cambiaba entre distintos modos sobrescribiendo SumatraPDF-settings.txt con AutoHotkey. Quisiera compartir un pequeño script, pero hace poco se rompió de repente
    • El modo oscuro y el cambio de pestañas con teclado son excelentes añadidos para el mejor lector PDF ligero
    • Me pregunto si ya arreglaron los problemas relacionados con la impresión. Por eso siempre terminaba usando otro visor de PDF
  • Como dijeron otros, Sumatra es una de las pocas utilidades exclusivas de Windows que siempre extraño cuando uso Mac o Linux. En especial, al ver esquemas de circuitos, planos mecánicos/técnicos y hojas de datos, hay dos operaciones simples que extraño todos los días:
    Alt + scroll para acercar/alejar, clic derecho + arrastrar para desplazarse. Me pregunto si habrá algún visor en Mac o Linux que ofrezca esas dos funciones. Skim en Mac soporta Option + scroll y desplazamiento con clic izquierdo + arrastrar, pero no permite reasignarlo a otras teclas o botones del mouse

    • En Linux, Zathura sí lo soporta. La diferencia es que el zoom se hace con Ctrl en vez de Alt. Arrastrar con clic derecho funciona para desplazarse.
      Una función que de verdad me encanta es que Page Down te lleva a la parte superior de la siguiente página. Es muy práctico cuando quieres revisar rápido con un nivel de zoom que no encaja exactamente al tamaño de la página
    • Me gusta mucho Okular. En especial, su tema que permite leer PDF con fondo rojo oscuro y texto amarillo. Pero no pude hacerlo correr en un Mac Mini con Apple Silicon. Parece que la fórmula más reciente de brew para Mac está rota
    • Foxit usa Ctrl+scroll para acercar/alejar y clic izquierdo+arrastrar para desplazarse. Funciona en Mac y probablemente también en Linux.
      Me parece que es bastante parecido. Si de verdad quieres llevarlo al extremo, seguramente habrá alguna app shareware que haga emulación de teclado por aplicación y remapeo de entrada al vuelo.
      Según entiendo, https://www.keyboardmaestro.com/main/ es la solución estándar
    • Uso qpdfview y estoy muy satisfecho. Se puede personalizar mucho
    • Me pregunto si no podrías remapear esa entrada con Karabiner Elements y BetterTouchTool solo cuando Skim esté en primer plano
  • Algo muy cómodo de SumatraPDF es que, si se modifica un archivo de imagen normal, lo recarga automáticamente. Así que es fácil mostrar salida gráfica dentro de la ventana simplemente guardándola como archivo de imagen

    • No solo con imágenes, también con PDFs completos. En el trabajo genero PDFs, y es excelente poder ejecutar el comando de actualización y ver los cambios de inmediato apenas termina
    • También es muy útil poder enviar un PDF a la impresora seleccionada desde la línea de comandos. Al menos en Windows, eso es una función matadora
  • Me encanta SumatraPDF. Lo uso desde hace años y es excelente. Cuando escribo LaTeX en vim y compilo con el documento abierto al lado en Sumatra, se actualiza al instante.
    El hecho de que vuelva a cargar la página inmediatamente hace que el flujo de trabajo sea muy fluido

    • Así es. También hay que reconocerle el mérito a lervag. Su plugin vimtex es una bestia.
      Lo más probable es que estés usando eso. Se integra con Sumatra por defecto, y también con MuPDF, Skim y otros. Eso está genial
    • Evince también soporta esta función. Personalmente, la considero absolutamente imprescindible.
      Probé Sumatra un poco antes de cambiarme a Linux, y era bastante bueno y ágil
    • Atril también recarga automáticamente
  • Durante el doctorado, mientras escribía manuscritos y artículos, usé Sumatra PDF como herramienta principal para ver en tiempo real los cambios en los PDFs. La versión de pago de Acrobat y la versión gratuita de Foxit tienen más funciones, pero bloquean el archivo mientras está cambiando

    • Es un buen ejemplo de cómo un producto puede salir perjudicado cuando se implementan restricciones innecesarias sin considerar bien cómo van a estorbar al usuario. Ojalá el software que hace lo mismo en Android, como SafetyNet o el bloqueo de capturas de pantalla, también termine volviéndose tan irrelevante como Acrobat Reader