Copyright
Copyright © José
Luis Lara Carrascal 2012-2024
Sumario
Introducción
Preliminares
Instalación
Opciones de línea de comandos
Funciones del teclado y ratón
Hacer de MuPDF el visor de archivos PDF predefinido del sistema
Configurar la vista previa de impresión con MuPDF en las aplicaciones GTK+
Iniciamos MuPDF
Enlaces
Introducción
MuPDF es un visor de archivos en formato PDF, OpenXPS, CBZ y CBR (entre otros formatos), que se ejecuta desde la línea de comandos. Soporta todas las características de PDF 1.7. La
representación de los documentos en la pantalla es de una gran
calidad, aprovechando la capacidad de los procesadores
multinúcleo, y su velocidad de ejecución y renderizado es
muy superior a otros visores de archivos PDF, existentes en GNU/Linux. Un excelente complemento para los administradores de archivos, cuyos manuales están disponibles en la web.
Desde la versión 1.3, soporta la carga directa de archivos de imagen en formato JPEG, TIFF y PNG. También soporta la carga progresiva de archivos PDF de forma remota, utilizando el binario mupdf-x11-curl, que es el que utilizaremos de forma predefinida para crear el script correspondiente de ejecución.
Desde la versión 1.8, incluye un binario ejecutable (mupdf-gl) con soporte de OpenGL,
que podemos utilizar de forma alternativa al predefinido utilizado en
este manual. Aunque su consumo de memoria, es 4 veces superior al
binario ejecutable utilizado como predefinido en este manual y la
velocidad de ejecución es mucho menor.
Desde la versión 1.24.0, incluye soporte para los formatos de
archivo, DOCX, PPTX, XLSX, CBR, TXT, FDF y CFB. También puede
leer de forma directa archivos comprimidos en formato GZ.
Preliminares
1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH
Abrimos una ventana de terminal y ejecutamos el siguiente comando:
[jose@Fedora-18 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin
|
Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
export PATH=/usr/local/bin:$PATH |
Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.
$ su -c "install -m755 variables.sh /etc/profile.d" |
Tenemos que cerrar el emulador de terminal y volverlo a abrir para que
la variable de entorno aplicada sea efectiva. Es conveniente guardar
una copia de este script para posteriores
instalaciones de nuestro sistema, teniendo en cuenta que es el que se
va a utilizar a partir de ahora en todos los manuales de esta web, para
establecer variables de entorno globales, excepto en aquellas que
sólo afectan al usuario, en las que se utilizará el
archivo de configuración personal, ~/.bashrc.
La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.
2) Comprobar que el directorio /usr/local/lib64 está incluido en /etc/ld.so.conf
En este apartado, no todas las distribuciones incluyen los directorios de las librerías compartidas a cachear por ldconfig en el archivo de configuración, /etc/ld.so.conf, también utilizan el directorio /etc/ld.so.conf.d, por lo que su edición sólo será necesaria en el caso de que el comando ldconfig no cachee las librerías compartidas ubicadas en /usr/local/lib64, en ese caso, abrimos con un editor de texto, el archivo de configuración /etc/ld.so.conf y añadimos la ruta correspondiente. Un ejemplo:
/usr/X11R6/lib/Xaw3d
/usr/X11R6/lib
/usr/lib/Xaw3d
/usr/i386-suse-linux/lib
/usr/local/lib64
/opt/kde3/lib
include /etc/ld.so.conf.d/*.conf |
3) Comprobar que la variable de entorno XDG_DATA_DIRS incluye el directorio /usr/local/share
Esta variable se aplica para que los archivos desktop
ubicados en un directorio específico del sistema puedan ser
leídos por los menús de entornos gráficos
como XFce 4, o
paneles como LXPanel o Fbpanel.
Este aspecto es bastante delicado porque cada distribución es un
mundo y lo mejor que podemos hacer es establecer una variable de
entorno global que incluya todos los directorios predefinidos del
sistema que incluyen archivos desktop, siempre y cuando el directorio /usr/local/share
no esté incluido por defecto en la distribución de turno.
Para saberlo basta abrir el menú de aplicaciones en cualquiera
de los programas antes comentados y comprobar que aparece la entrada
correspondiente a la aplicación tratada en este manual. Si no es
así, en el mismo archivo /etc/profile.d/variables.sh, añadimos lo que está en rojo:
#!/bin/sh
export PATH=/usr/local/bin:$PATH
export XDG_DATA_DIRS=/usr/share:/usr/local/share:$HOME/.local/share:$XDG_DATA_DIRS |
3) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr
Aún en el caso de que la versión a compilar la vayamos a
instalar en el mismo directorio que la que proporciona la
distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado MuPDF
para la elaboración de este documento.
* GCC - (14.2.0) o Clang - (19.1.3)
* Make - (4.4.1)
* Pkg-config - (0.29.2)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.14)
LibX11 - (1.8.10)
LibXcursor - (1.2.3)
LibXext - (1.3.6)
LibXrandr - (1.5.4)
* Curl - (8.11.0)
* Freetype2 - (2.13.3)
* HarfBuzz - (10.1.0)
* Jbig2dec - (0.20)
* Leptonica - (1.84.1)
* Libarchive - (3.7.7)
* Libglvnd - (1.7.0)
* Libgumbo - (0.12.2)
* Libjpeg-turbo - (3.0.4)
* OpenJPEG - (2.5.2)
* Tesseract - (5.3.4)
* Zlib - (1.3.1)
Aplicaciones
* Magick (ImageMagick) - (7.1.1-41) [1]
[1] Requerido para poder crear los iconos del archivo desktop.
Descarga
mupdf-1.24.11-source.tar.lz
Optimizaciones
$ export
XCFLAGS='-O3 -march=znver3 -mtune=znver3'
|
Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla: |
Nota informativa sobre las optimizaciones para GCC
|
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado.
* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.
* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
|
Nota informativa sobre las optimizaciones para Clang
|
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.
* Los valores de color azul no son compatibles con Clang.
* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
|
Valores |
CPU |
Genéricos |
generic |
Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune=', si utilizamos GCC. Esta opción está disponible a partir de GCC 4.2. |
native |
Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2. |
x86-64 |
Procesador genérico con extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 1.9. |
x86-64-v2 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v3 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v4 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, AVX512*, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
Intel |
alderlake |
Intel Alderlake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
arrowlake |
Intel Arrow Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
arrowlake-s |
Intel Arrow Lake S con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
atom |
Intel Atom con soporte de
instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones
64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición bonnell. |
bonnell |
Intel Bonnell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
broadwell |
Intel Broadwell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
cannonlake |
Intel Cannonlake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 3.9. |
cascadelake |
Intel Cascadelake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 8. |
clearwaterforest |
Intel Clearwater Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, ENQCMD, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, USER_MSR, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
cooperlake |
Intel Cooper Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16 y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 9. |
core2 |
Intel Core2 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.3. |
core-avx2 |
Intel Core (Haswell). Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición haswell. |
core-avx-i |
Intel Core (ivyBridge) con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición ivybridge. |
corei7 |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2 y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición nehalem. |
corei7-avx |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición sandybridge. |
emeraldrapids |
Intel Emerald Rapids. Esta opción está disponible a partir de GCC 13 y Clang 16. |
goldmont |
Intel Goldmont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 5. |
goldmont-plus |
Intel Goldmont Plus con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
grandridge |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, RAOINT y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512-FP16, AVX512BF16, AMX-FP16, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids-d |
Intel Granite Rapids D con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI, AMX-COMPLEX y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 17. |
haswell |
Intel Haswell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
i386 |
Intel i386.
|
i486 |
Intel i486. |
i586, pentium |
Intel Pentium sin soporte de instrucciones MMX. |
i686 |
Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son. |
icelake-client |
Intel Icelake Client con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
icelake-server |
Intel Icelake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
intel |
Intel Haswell y Silvermont. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.9. |
ivybridge |
Intel Ivy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
knl |
Intel Knights Landing con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER y extensiones 64-bit. Esta opción está disponible a partir de GCC 5 y Clang 3.4. |
knm |
Intel Knights Mill con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER, AVX512CD, AVX5124VNNIW, AVX5124FMAPS, AVX512VPOPCNTDQ y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 6. |
lakemont |
Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
lunarlake |
Intel Lunar Lake. Esta opción está disponible a partir de GCC 14 y es equivalente a la opción arrowlake-s. |
meteorlake |
Intel Meteor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
nehalem |
Intel Nehalem con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
nocona |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2, SSE3 y extensiones 64-bit. |
pantherlake |
Intel Panther Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
penryn |
Intel Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1. |
pentiumpro |
Intel PentiumPro. |
pentium2 |
Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX. |
pentium3, pentium3m |
Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE. |
pentium4, pentium4m |
Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2. |
pentium-m |
Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino. |
pentium-mmx |
Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX. |
prescott |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
raptorlake |
Intel Raptor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
rocketlake |
Intel Rocket Lake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 13. |
sandybridge |
Intel Sandy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sapphirerapids |
Intel Sapphire Rapids con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
silvermont |
Intel Silvermont con soporte de instrucciones MOVBE, MMX, SSE, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMU, RDRND y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sierraforest |
Intel Sierra Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
skylake |
Intel Skylake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.6. |
skylake-avx512 |
Intel Skylake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
tigerlake |
Intel Tiger Lake con soporte de instrucciones OVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 10. |
tremont |
Intel Tremont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP, GFNI-SSE, CLWB, ENCLV y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
westmere |
Intel Westmere con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
yonah |
Procesadores basados en la microarquitectura de Pentium M, con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
AMD |
amdfam10, barcelona |
Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3. La definición barcelona está disponible a partir de Clang 3.6. |
athlon, athlon-tbird |
AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch. |
athlon4, athlon-xp, athlon-mp |
Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE. |
bdver1 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver2 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver3 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8 y Clang 3.4. |
bdver4 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.9 y Clang 3.5. |
btver1 |
Procesadores basados en AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.6. |
btver2 |
Procesadores basados en AMD Family 16h core con soporte de instrucciones x86-64 (MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8. |
geode |
AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3. |
k6 |
AMD K6 con soporte de instrucciones MMX. |
k6-2, k6-3 |
Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!. |
k8, opteron, athlon64, athlon-fx |
Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit). |
k8-sse3, opteron-sse3, athlon64-sse3 |
Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3. |
znver1 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 6 y Clang 4. |
znver2 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, ,CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 9 y Clang 9. |
znver3 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
znver4 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 12.3 y Clang 16. |
znver5 |
Procesadores basados en AMD Family 1ah core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, PREFETCHI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$ export XCFLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block' |
IPA
|
$ export XCFLAGS+=' -fipa-pta'
|
Clang |
Polly |
$ export XCFLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine' |
Parámetros adicionales
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export
XLDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64" |
Cada usuario tendrá
que establecer la ruta de búsqueda de directorios, en
función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export XLDFLAGS+=' -fuse-ld=mold' |
Establecer el uso de enlazador dinámico para LLD |
Clang |
$ export XLDFLAGS+=' -fuse-ld=lld' |
Extracción y
Compilación
$ tar axvf mupdf-1.24.11-source.tar.lz
$ cd mupdf-1.24.11-source
$ cat > user.make << "EOF"
USE_SYSTEM_FREETYPE := yes
USE_SYSTEM_HARFBUZZ := yes
USE_SYSTEM_JBIG2DEC := yes
USE_SYSTEM_LCMS2 := no
USE_SYSTEM_LIBJPEG := yes
USE_SYSTEM_MUJS := no
USE_SYSTEM_OPENJPEG := yes
USE_SYSTEM_ZLIB := yes
USE_SYSTEM_GLUT := no
USE_SYSTEM_CURL := yes
USE_SYSTEM_GUMBO := yes
USE_SYSTEM_LEPTONICA := yes
USE_SYSTEM_TESSERACT := yes
USE_TESSERACT := yes
USE_ARCHIVE := yes
EOF
$ sed -i 's:-O2 ::g' Makerules
$ make build=release shared=yes
|
Explicación de los
comandos
cat > user.make << "EOF" .....
: Crea un archivo de configuración de la compilación del
paquete (user.make), incluyendo las dependencias que ya existen en
nuestro sistema y activando el soporte de Tesseract, que es
opcional.
sed -i 's:-O2 ::g' Makerules
: Borra las referencias existentes en el archivo Makerules, al nivel de optimización utilizado por defecto (-O2) para evitar
una duplicidad de niveles de optimización aplicados en el
proceso de compilación, y sea este último el aplicado por el compilador.
build=release shared=yes
: Compila la versión optimizada del paquete, omitiendo la
creación de las librerías estáticas, para reducir
el tamaño de la instalación del mismo.
Parámetros de compilación opcionales
CC=clang CXX=clang++ : Si vamos a compilar el paquete con Clang, establecemos la correspondiente variable de entorno.
-j$(nproc) :
Establece el número de procesos de compilación en
paralelo, en función del número de
núcleos e hilos que tenga nuestro procesador, tomando como
referencia la información mostrada por el sistema con el comando
correspondiente. Si nuestro procesador es mononúcleo de un solo
hilo, no añadir esta opción.
Instalación
como root
$ su
# make install build=release shared=yes libdir=/usr/local/lib64
# ldconfig -v
# ln -sf mupdf-x11-curl /usr/local/bin/mupdf
# for i in /usr/local/share/icons/hicolor ; do \
install -dm755 $i/{16x16,24x24,32x32,48x48,64x64,scalable}/apps ; \
install -m644 docs/logo/mupdf-logo.svg $i/scalable/apps/mupdf.svg ; \
magick docs/logo/mupdf-logo.svg -resize 64 -background transparent $i/64x64/apps/mupdf.png ; \
magick docs/logo/mupdf-logo.svg -resize 48 -background transparent $i/48x48/apps/mupdf.png ; \
magick docs/logo/mupdf-logo.svg -resize 32 -background transparent $i/32x32/apps/mupdf.png ; \
magick docs/logo/mupdf-logo.svg -resize 24 -background transparent $i/24x24/apps/mupdf.png ; \
magick docs/logo/mupdf-logo.svg -resize 16 -background transparent $i/16x16/apps/mupdf.png ; \
gtk-update-icon-cache -tf $i &> /dev/null ; \
done
|
Explicación de los
comandos
libdir=/usr/local/lib64 : Instala la librería compartida en /usr/local/lib64, en sistemas de 64 bits multiarquitectura. La ubicación y el nombre de este
directorio, puede variar en función de la distribución que
cada usuario use.
ldconfig -v : Actualiza la caché de las librerías compartidas del sistema.
ln -sf mupdf-x11-curl /usr/local/bin/mupdf : Crea el enlace simbólico correspondiente al ejecutable que vamos a utilizar como principal en uso de MuPDF.
for i in /usr/local/share/icons/hicolor ..... : Instala y crea los iconos de la aplicación, a partir del logo en formato SVG del programa, incluido en el paquete.
Estadísticas de Compilación e Instalación de MuPDF
Estadísticas de Compilación e Instalación de MuPDF |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.12.0-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.40 |
Enlazador dinámico |
Mold 2.34.1 |
Compilador |
Clang 19.1.3 |
Parámetros de optimización |
-03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine |
Parámetros de compilación |
-j12 |
Tiempo de compilación |
17" |
Archivos instalados |
117 |
|
Enlaces simbólicos creados |
1 |
/usr/local/bin/mupdf |
Ocupación de espacio en disco |
50,7 MB |
Consumo inicial de CPU y RAM de MuPDF
Consumo inicial de CPU y RAM de MuPDF |
Programa
|
CPU |
RAM |
mupdf-x11-curl |
0 % |
35,7 MB |
Para medir el consumo de CPU se utiliza el programa top, y para medir
el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace. |
Desinstalación
como root
1)
MODO TRADICIONAL
Este programa no tiene soporte para desinstalación con el comando 'make uninstall'
2)
MODO MANUALINUX
El principal inconveniente del comando anterior es
que
tenemos que tener el directorio de compilación en nuestro
sistema para poder desinstalar el programa. En algunos casos esto
supone muchos megas de espacio en disco. Con el paquete de scripts que
pongo a continuación logramos evitar
el único inconveniente que tiene la compilación
de
programas, y es el tema de la desinstalación de los mismos
sin
la necesidad de tener obligatoriamente una copia de las fuentes
compiladas.
mupdf-1.24.11-scripts.tar.gz
$ su
# tar zxvf mupdf-1.24.11-scripts.tar.gz
# cd mupdf-1.24.11-scripts
# ./Desinstalar_mupdf-1.24.11 |
Copia de Seguridad
como root
Con este otro script creamos una copia de seguridad de los binarios
compilados, recreando la estructura de directorios de los mismos en un
directorio de copias de seguridad (copibin)
que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de
los binarios podemos copiarlo como usuario a nuestro home
y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos
volver a restaurar la copia, tendremos que volver a copiarlo al lugar
donde se ha creado.
$ su
# tar zxvf mupdf-1.24.11-scripts.tar.gz
# cd mupdf-1.24.11-scripts
# ./Respaldar_mupdf-1.24.11 |
Restaurar la Copia de Seguridad
como root
Y con este otro script (que se copia de forma automática
cuando
creamos la copia de respaldo del programa) restauramos la copia de
seguridad como root cuando resulte necesario.
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_mupdf-1.24.11
|
Opciones de línea de comandos
uso:
mupdf [opciones] archivo.pdf [página]
-p - contraseña para los
archivos PDF que estén cifrados
-r - cambia el nivel inicial de zoom (72
dpi)
-A - establece la calidad del nivel de
suavizado de las fuentes de texto (0=ninguno, 8=el mejor)
-C - RRGGBB (color de mezcla en sintaxis hexadecimal)
-W - anchura de la página con esquema EPUB
-H - altura de la página con esquema EPUB
-I - invierte los colores
-S - tamaño de la fuente de texto para el esquema EPUB
-U - hoja de estilo del usuario para el esquema EPUB
-X - desactiva los estilos de documento para el esquema EPUB
|
Funciones principales del teclado y ratón
Funciones principales del teclado y ratón |
Combinación de teclas y ratón |
Acción a realizar |
Clic izquierdo del ratón |
Abre los enlaces que contenga el documento. En modo presentación, pasa a la siguiente página. |
Clic derecho del ratón |
En modo presentación, pasa a la pagina anterior. |
Movimiento del ratón
con el botón izquierdo presionado |
Desplaza
la página y salta a la siguiente o a la anterior. Si el
nivel de zoom es superior al tamaño de la ventana,
podrá desplazar el documento en un radio de 360 grados. |
Movimiento del ratón
con el botón derecho presionado |
Selecciona
un área y copia el texto seleccionado al portapapeles. |
Rueda del
ratón hacia arriba o hacia abajo |
Desplaza la
página hacia abajo o hacia arriba. |
Ctrl + rueda del
ratón hacia arriba
|
Aumenta
el tamaño del documento en la pantalla hasta un nivel
máximo de resolución de 1152 dpi. El
tamaño de la ventana no excederá nunca los
límites del tamaño de la pantalla. |
Ctrl + rueda del
ratón hacia abajo |
Reduce el
tamaño del documento en la pantalla hasta un nivel
mínimo de resolución de 54 dpi.
|
Mayús +
rueda del ratón hacia arriba
|
Desplaza hacia
la derecha, la página, siempre y cuando se esté
utilizando el zoom de ampliación.
|
Mayús +
rueda del ratón hacia abajo |
Desplaza hacia
la izquierda, la página, siempre y cuando se esté
utilizando el zoom de ampliación. |
[ |
Rota el
documento 90 grados hacia la izquierda. |
] |
Rota el
documento 90 grados hacia la derecha. |
H, J, K, L |
Desplaza la
página hacia la izquierda, hacia abajo, hacia arriba o hacia
la derecha.
|
+, -
|
Aumenta o
reduce el tamaño del documento en la pantalla. |
Mayús + W |
Ajusta la
anchura de la página a la anchura de la ventana. |
Mayús + H |
Ajusta la
altura de la página a la altura de la ventana. |
Mayús + Z |
Ajusta la anchura o la altura de la página al tamaño de la ventana. |
W
|
Ajusta el
tamaño de la ventana al tamaño de la
página, cuando reducimos el tamaño de esta
última.
|
R
|
Recarga la
página. |
punto, flecha derecha, barra de espacio.
|
Pasa a la
página siguiente.
|
coma, flecha izquierda, B, retroceso. |
Pasa a la
página anterior. |
M
|
Marca la
página para volver a la misma. Pueden marcarse hasta 256 páginas.
|
T
|
Pasa a la
última página marcada.
|
[0-9]m
|
Guarda el
número de página actual en el registro numerado. |
[0-9]t |
Pasa a la
última página guardada en el registro numerado. |
123g |
Pasa a la
página 123. |
/ |
Búsqueda
de texto hacia adelante. Se muestra en la parte superior izquierda de la pantalla
sobreimpresionado, el formulario 'Search:'. |
? |
Búsqueda
de texto hacia atrás. Se muestra en la parte superior izquierda de la pantalla
sobreimpresionado, el formulario 'Search:'. |
G |
Pasa a la primera página. |
Mayús + G |
Pasa a la última página. |
N |
Busca el
siguiente resultado de búsqueda. |
Mayús + N |
Busca el
anterior resultado de búsqueda. |
<, > |
Aumenta o disminuye el tamaño de la fuente de texto de los documentos en formato EPUB y XHTML. |
F |
Activa el modo de pantalla completa. |
P |
Activa el modo de presentación. |
C |
Alterna
entre el renderizado a color y a escala de grises. |
Mayús + C |
Alterna
entre el renderizado normal de color y el sepia. |
I |
Alterna entre
el renderizado normal de color y el invertido. |
E |
Alterna entre el renderizado normal de color y el modo de color ICC |
e |
Alterna entre el renderizado normal de color y el modo de color sólido |
A |
Establece el nivel de suavizado a utilizar. |
Mayús + S |
Guarda el documento actualizado. |
Q |
Finaliza el programa. |
Hacer de MuPDF el visor de archivos PDF predefinido del sistema
Para poder utilizar MuPDF
como visor de archivos PDF
predefinido del sistema, tendremos en cuenta las aplicaciones que
permiten lanzar el programa asociado a la lectura de este tipo de
archivos. Normalmente, los navegadores web y los administradores de
archivos, ya sean gráficos o de consola ejecutados en un
emulador de terminal.
De estas aplicaciones diferenciaremos las que son compatibles con las
especificaciones relacionadas con los tipos MIME de freedesktop.org, en
las que controlamos las aplicaciones asociadas a un determinado tipo de
archivo de dos modos diferentes:
1) Aplicación
predefinida (~/.local/share/applications/defaults.list)
La establecemos con la utilidad xdg-mime,
del paquete xdg-utils,
que crea el archivo de configuración ~/.local/share/applications/defaults.list,
que contiene el tipo MIME correspondiente y el archivo desktop asociado
de la aplicación que hemos predefinido con el comando.
También lo podemos hacer de forma manual. Un
ejemplo:
$ xdg-mime default
qBittorrent.desktop
application/x-bittorrent
x-scheme-handler/magnet
|
El comando siempre debe de comenzar por xdg-mime default,
seguido del nombre del archivo desktop de la aplicación
correspondiente, en este caso qBittorrent.desktop,
y el tipo o tipos MIME, separados por espacios, application/x-bittorrent
x-scheme-handler/magnet.
Que podemos encontrar en el mismo archivo desktop proporcionado por la
aplicación, o en su lugar, si ésta no proporciona
ninguno, podemos echarle un vistazo a los archivos mimeinfo.cache, que
genera el comando update-desktop-database,
ubicados en los correspondientes subdirectorios, /share/applications,
de los directorios en los que estén instaladas las
aplicaciones, /usr,/usr/local,$HOME/.local,etc.
Para saber los tipos MIME que tenemos instalados en nuestro sistema,
basta con examinar el archivo /usr/share/mime/types.
Si hemos instalado aplicaciones en otras ubicaciones, y
éstas han instalado tipos MIME, tendremos que examinar el
correspondiente archivo /share/mime/types
de cada ubicación.
Una vez lo hemos creado por primera vez, podemos editarlo de forma
manual.
[Default
Applications]
application/x-bittorrent=qBittorrent.desktop
x-scheme-handler/magnet=qBittorrent.desktop
|
2) Orden de
ejecución cuando hay más de una
aplicación asociada a un tipo de archivo
(~/.local/share/applications/mimeapps.list)
Y con este segundo método, que aún
está en desarrollo, determinamos el orden de
ejecución de la aplicación (cuando tenemos
más de un programa que sirve para abrir un determinado tipo
de archivo), lo que equivale al orden en el que se mostrará
la lista de aplicaciones que se muestran en algunos administradores de
archivos, cuando desplegamos el menú sobre un archivo
y seleccionamos Abrir
con.
Se configura mediante la edición o
creación del archivo de configuración personal, ~/.local/share/applications/mimeapps.list,
en el que, además de establecer el orden de la lista de
aplicaciones asociadas a un archivo, podemos eliminar aplicaciones para
que éstas no aparezcan en el menú Abrir con. Un
ejemplo:
[Added
Associations]
application/x-bittorrent=qBittorrent.desktop
[Removed Associations]
application/x-bittorrent=transmission-gtk.desktop
|
En el ejemplo, establecemos en la sección [Added Associations],
que sea qBittorrent
el primero en la lista de aplicaciones asociadas a los archivos
torrent, lo que implica también que será el
programa que las abra por defecto, cuando hagamos clic sobre un archivo
torrent. Y en la sección [Removed
Associations], establecemos que el cliente BitTorrent, Transmission, no
aparezca en el menú Abrir
con.
Si queremos que aparezcan los dos, y sea este último el
primero en la lista lo dejamos de esta forma, siempre y cuando el orden
preestablecido del sistema, sea que el primero en ejecutarse es qBittorrent. Otro
ejemplo:
[Added
Associations]
application/x-bittorrent=transmission-gtk.desktop;qBittorrent.desktop;
[Removed Associations]
|
Cada aplicación adicional asociada a un tipo MIME que se
añada, es decir, cada archivo desktop, siempre separado por
punto y coma, tanto en una sección como en la otra.
Una vez sabemos cómo funciona esto, sólo nos
queda aplicarlo a MuPDF:
1) Crear un script de
ejecución de MuPDF
Teniendo en cuenta, que MuPDF
es una aplicación de línea de comandos, crearemos
un script de ejecución del mismo con cat, al que le pasaremos las
opciones que creamos oportunas. En el ejemplo habilitaremos el nivel
máximo de suavizado para las fuentes de texto, pero el
usuario también le puede pasar un nivel determinado de zoom,
con la opción '-r',
por ejemplo '-r96'.
$ cat > mupdf.sh << "EOF"
#!/bin/sh
mupdf -A8 "$@"
EOF |
Y lo
instalamos en /usr/local/bin.
La desinstalación y respaldo de este archivo viene incluida
en
los scripts correspondientes proporcionados en este manual.
$ su
# install -dm755 /usr/local/bin
# install -m755 mupdf.sh /usr/local/bin |
2) Crear el archivo
mupdf.desktop
Una vez que tenemos el script, tendremos que crear el correspondiente
archivo desktop con cat o con un editor de texto, para poder establecer MuPDF, como el visor
de archivos PDF
predefinido del sistema, para aquellas aplicaciones que son
compatibles con el
estándar de tipos MIME de freedesktop.org.
# cat > mupdf.desktop << "EOF"
[Desktop
Entry]
Name=MuPDF
Exec=mupdf.sh
StartupNotify=false
Terminal=false
NoDisplay=true
Icon=mupdf
Type=Application
MimeType=application/pdf;application/oxps;application/x-cbz;application/x-cbr
EOF
|
Luego lo instalamos como root en /usr/local/share/applications.
La desinstalación y respaldo de este archivo viene incluida
en
los scripts correspondientes proporcionados en este manual.
# install -dm755 /usr/local/share/applications
# install -m644 mupdf.desktop /usr/local/share/applications
# update-desktop-database
|
3) Establecer la
aplicación
predefinida para los archivos PDF, XPS y CBZ
(~/.local/share/applications/defaults.list)
Abrimos una terminal y ejecutamos el siguiente comando:
$ xdg-mime default
mupdf.desktop
application/pdf
application/oxps application/x-cbz
|
Y el resultado del mismo es el siguiente:
[Default
Applications]
application/pdf=mupdf.desktop
application/oxps=mupdf.desktop
application/x-cbz=mupdf.desktop
|
4) Establecer el orden de
ejecución cuando hay más de una
aplicación asociada a un tipo de archivo
(~/.local/share/applications/mimeapps.list)
Abrimos con un editor de texto, si no existe lo creamos, el archivo ~/.local/share/applications/mimeapps.list,
y añadimos lo que está en rojo:
[Added
Associations]
application/pdf=mupdf.desktop
application/oxps=mupdf.desktop
application/x-cbz=mupdf.desktop
[Removed
Associations]
|
Para aquellas aplicaciones que no son compatibles con esta
especificación de freedesktop.org,
tendremos que recurrir a la configuración personalizada de
cada una. A continuación, algunos ejemplos (sólo
con PDF) con aplicaciones cuya documentación está
disponible en la web.
1) Midnigh Commander (MC)
Ejecutamos el programa, y seleccionamos Utilidades >>
Editar extensiones..., esto hará que se copie
el archivo /etc/mc/mc.ext,
a nuestro directorio de configuración personal, ~/.config/mc/mc.ext.
Aunque lo podemos editar desde MC,
es recomendable hacerlo con un editor de texto gráfico, como
Leafpad,
más que nada, por cuestión de
visualización, ya que nos resultará
más cómodo que desde MC. Una vez tenemos
abierto dicho archivo, en el editor de texto, que hayamos elegido, nos
vamos a la línea 509, y cambiamos el visor PDF predefinido,
por mupdf.sh.
#
PDF
type/^PDF
Open=(mupdf.sh %f
&)
#Open=(acroread %f &)
#Open=(ghostview %f &)
View=%view{ascii} pdftotext %f -
|
Las últimas versiones de este programa sí son compatibles, con la especificación de freedesktop.org, por lo que esta edición ya no resulta necesaria.
2) ROX-Filer
En ROX-Filer,
cuando estemos sobre un archivo PDF, hacemos clic con el
botón derecho del ratón, y seleccionamos en el
menú, Definir
qué ejecutar..., dejando el cuadro de
diálogo que se mostrará igual que en la captura
de pantalla siguiente, y haciendo clic en el botón Usar el comando.
3) XFE
En XFE,
cuando estemos sobre un archivo PDF, hacemos clic con el
botón derecho del ratón, y seleccionamos en el
menú, Propiedades,
luego, en la pestaña Asociaciones
de archivos de la ventana que se abra, dejamos las
entradas Abrir:
y Ver:, tal
y como aparece en la captura de pantalla siguiente, y hacemos clic en Aceptar:
Configurar la vista previa de impresión con MuPDF en las aplicaciones GTK+
En la vista previa de impresión en las aplicaciones GTK+, el programa utilizado por defecto es Evince. A continuación explico cómo editar o crear los archivos de configuración de GTK2 y GTK3, para que sea MuPDF el programa utilizado para este cometido.
1) GTK2
Editamos, si no existe lo creamos, el archivo de configuración personal, ~/.gtkrc-2.0, y añadimos lo que está en rojo, cambiando jose por el nombre de usuario de cada uno. Se puede hacer también en modo gráfico con el programa LXAppearance. Un ejemplo:
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
gtk-theme-name="Glossy"
gtk-font-name="DejaVu Sans 10"
gtk-cursor-theme-name="crystalblue_classic"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"
include "/home/jose/.gtkrc-2.0.mine"
|
Editamos, si no existe lo creamos, el archivo de configuración personal, ~/.gtkrc-2.0.mine, y añadimos lo siguiente. Un ejemplo:
gtk-print-preview-command = "mupdf.sh %f"
|
2) GTK3
Editamos, si no existe lo creamos, el archivo de configuración personal, ~/.config/gtk-3.0/settings.ini, y añadimos lo que está en rojo. Un ejemplo:
[Settings]
gtk-theme-name = Adwaita GRN+
gtk-icon-theme-name = Xquisite
gtk-font-name = DejaVu Sans 10
gtk-button-images = 1
gtk-menu-images = 1
gtk-print-preview-command = "mupdf.sh %f"
|
Más información sobre cómo editar este archivo, la podemos encontrar en esta entrada de Manualinux - Blog.
Iniciamos MuPDF
Enlaces
http://www.mupdf.com >> La web de MuPDF.
|