Como crear un PDF con documentación en formato .rst desde GitHub usando ibis-next, por ejemplo del repo symfony-docs - gratis
Desarrollo

Como crear un PDF con documentación en formato .rst desde GitHub usando ibis-next, por ejemplo del repo symfony-docs - gratis

10 Jan, 2025 • 5 min de lectura

Cómo crear un PDF con documentación en formato rst desde GitHub usando Ibis-Next

Ibis-Next es una herramienta que crea archivos PDF a partir de documentación escrita en formato reStructuredText (rst). Puedes usarla directamente en repositorios de GitHub, como por ejemplo en el repositorio symfony-docs.

Aquí te enseñamos cómo hacerlo de manera sencilla.

Instalación

Primero, instala Ibis-Next en tu sistema. La forma recomendada es usar pipx:

pipx install ibis-next

</p>

Si no tienes pipx, primero instala pipx:

python3 -m pip install --user pipx</p>
python3 -m pipx ensurepath

Si sigues teniendo errores baja hasta el Troubleshooting

Creando la documentación PDF

Una vez instalado, genera el PDF con el comando ibis seguido de la URL del repositorio en GitHub. Por ejemplo, para el repositorio symfony-docs, ejecuta:

ibis-next https://github.com/symfony/symfony-docs</p>

Esto creará un archivo PDF llamado symfony-docs.pdf en tu directorio actual.

Personalizar la Salida

Ibis-Next permite personalizar el nombre del archivo de salida y el directorio donde se guarda.

Cambiar el nombre del archivo

Usa la opción -o para especificar un nombre de archivo diferente:

ibis https://github.com/symfony/symfony-docs -o documentacion_symfony.pdf</p>

Cambiar el directorio de salida

Usa la opción -d para especificar un directorio de salida:

ibis https://github.com/symfony/symfony-docs -d /ruta/a/tu/directorio</p>

Opciones Adicionales

Ibis-Next tiene varias opciones que permiten controlar el proceso de generación del PDF.

Listar todas las opciones

Ejecuta ibis --help para ver todas las opciones disponibles.

Especificar una rama o etiqueta

Usa la opción -b para especificar una rama o etiqueta específica:

ibis https://github.com/symfony/symfony-docs -b nombre_de_la_rama</p>

Usar un directorio local

Si ya tienes una copia local del repositorio, puedes usar la opción -l para generar el PDF desde ese directorio:

ibis -l /ruta/a/tu/repositorio/local</p>

Comparación de Opciones

Aquí hay una tabla que resume las opciones más importantes:

Opción Descripción Ejemplo
-o Especifica el nombre del archivo de salida. ibis ... -o mi_documento.pdf
-d Especifica el directorio de salida. ibis ... -d /ruta/a/mi/directorio
-b Especifica una rama o etiqueta específica. ibis ... -b mi_rama
-l Usa un directorio local en lugar de un repositorio remoto. ibis -l /ruta/a/mi/repositorio
--help Muestra todas las opciones disponibles. ibis --help
Sin opciones Crea un PDF con el nombre del repositorio. `ibis https://github.com/usuario/repositorio`
Directorio actual El PDF se guarda en el directorio actual.
nombre_repo.pdf Nombre del archivo PDF generado por defecto.
pipx Forma recomendada de instalación. pipx install ibis-next
ibis Comando principal para generar el PDF. `ibis https://github.com/usuario/repositorio`
URL de GitHub Especifica el repositorio remoto de la documentación. `ibis https://github.com/usuario/repositorio`
Sin opciones Especifica el nombre del archivo de salida. ibis https://github.com/usuario/repositorio -o mi_documento.pdf

Troubleshooting

Otra opción es instalarlo con composer

composer require hi-folks/ibis-next

</p>

Precisará de varios paquetes según el error:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- hi-folks/ibis-next[v1.0.0, …, v1.0.10] require mpdf/mpdf ^8.0 -> satisfiable by mpdf/mpdf[v8.0.0, …, v8.2.5].
- hi-folks/ibis-next[v1.0.11, …, v1.2.0, v2.0.0, …, v2.0.6] require ext-dom * -> it is missing from your system. Install or enable PHP's dom extension.
- mpdf/mpdf[v8.0.0, …, v8.0.3] require php ^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 -> your php version (8.3.6) does not satisfy that requirement.
- mpdf/mpdf[v8.0.4, …, v8.0.7] require php ^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 -> your php version (8.3.6) does not satisfy that requirement.
- mpdf/mpdf[v8.0.8, …, v8.0.9] require php ^5.6 || ^7.0 -> your php version (8.3.6) does not satisfy that requirement.
- mpdf/mpdf[v8.0.10, …, v8.0.12] require php ^5.6 || ^7.0 || ~8.0.0 -> your php version (8.3.6) does not satisfy that requirement.
- mpdf/mpdf[v8.0.13, …, v8.1.2] require php ^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 -> your php version (8.3.6) does not satisfy that requirement.
- mpdf/mpdf[v8.1.3, …, v8.2.0] require php ^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 -> your php version (8.3.6) does not satisfy that requirement.
- mpdf/mpdf[v8.2.1, …, v8.2.5] require ext-gd * -> it is missing from your system. Install or enable PHP's gd extension.
- Root composer.json requires hi-folks/ibis-next * -> satisfiable by hi-folks/ibis-next[v1.0.0, …, v1.2.0, v2.0.0, …, v2.0.6].

</p>

o enable extensions, verify that they are enabled in your .ini files:
- /etc/php/8.3/cli/php.ini
- /etc/php/8.3/cli/conf.d/10-opcache.ini
- /etc/php/8.3/cli/conf.d/10-pdo.ini
- /etc/php/8.3/cli/conf.d/20-calendar.ini
- /etc/php/8.3/cli/conf.d/20-ctype.ini
- /etc/php/8.3/cli/conf.d/20-curl.ini
- /etc/php/8.3/cli/conf.d/20-exif.ini
- /etc/php/8.3/cli/conf.d/20-ffi.ini
- /etc/php/8.3/cli/conf.d/20-fileinfo.ini
- /etc/php/8.3/cli/conf.d/20-ftp.ini
- /etc/php/8.3/cli/conf.d/20-gettext.ini
- /etc/php/8.3/cli/conf.d/20-iconv.ini
- /etc/php/8.3/cli/conf.d/20-intl.ini
- /etc/php/8.3/cli/conf.d/20-mbstring.ini
- /etc/php/8.3/cli/conf.d/20-phar.ini
- /etc/php/8.3/cli/conf.d/20-posix.ini
- /etc/php/8.3/cli/conf.d/20-readline.ini
- /etc/php/8.3/cli/conf.d/20-shmop.ini
- /etc/php/8.3/cli/conf.d/20-sockets.ini
- /etc/php/8.3/cli/conf.d/20-sysvmsg.ini
- /etc/php/8.3/cli/conf.d/20-sysvsem.ini
- /etc/php/8.3/cli/conf.d/20-sysvshm.ini
- /etc/php/8.3/cli/conf.d/20-tokenizer.ini
- /etc/php/8.3/cli/conf.d/20-zip.ini

</p>

En estos momentos la versión mpdf no es compatible con php 8.3, toca cambiar la versión en el composer:

composer require "mpdf/mpdf:^8.2.1"

</p>

despues de ejecutar ese require , regresa:

 Problem 1</p>
- mpdf/mpdf[v8.2.1, …, v8.2.5] require ext-gd * -> it is missing from your system. Install or enable PHP's gd extension.  
- Root composer.json requires mpdf/mpdf ^8.2.1 -> satisfiable by mpdf/mpdf[v8.2.1, …, v8.2.5].

que resolvemos instalando gd:

sudo apt-get install php-gd

</p>

Edita el archivo php.ini y asegúrate de que la línea extension=gd esté descomentada (sin punto y coma al principio).

y finalmente reiniciar apache2:

sudo systemctl restart apache2

</p>



bash: ./vendor/bin/ibis-next: No existe el archivo o el directorio

Ejecutar en el directorio:

composer require hi-folks/ibis-next

</p>

Categorías: Desarrollo
Etiquetas: