# exportPDF Funcionalidad para implementar la capacidad de exportar los datos de un recurso a formato PDF. Los modelos de recursos habilitados para la función son los siguientes: * Patrimonio material - Bienes inmuebles * Patrimonio material - Bienes muebles * Patrimonio inmaterial * Organización o persona # Para agregar la funcionalidad ExportPDF a un proyecto de Arches puede seguir el siguiente procedimiento. Procedimiento válido para un proyecto en modo desarrollo implementado con un enfoque tradicional sin contenedores. Para el caso de un enfoque utilizando contenedores o en modo Producción, el proceso varía levemente. ### 0. Instalar dependencias y librerias de python (servidor Ubuntu) Solo en caso de que su proyecto de arches resida en una implementación según la guía oficial de archesproject ```shell sudo apt install build-essential python3.12-dev python3.12-pip python3.12-setuptools python3.12-wheel python3.12-cffi sudo apt install build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info ``` y en el entorno de (arches) python: ```python pip install django-weasyprint pip install pypdf ``` ### 1. Clonar este repositorio en alguna carpeta de su servidor. ```shell # puede ser en el home del servidor git clone https://gitea.patrimonio.org.bo/sysadmin/sprpcb-exportpdf-func.git ``` ### 2. Copiar los archivos necesarios para crear una nueva plantilla de reporte que contendrá los botones necesarios: ```shell cp -r ../sprpcb-exportpdf-func/reportes ./mi_proyecto/reportes cp ../sprpcb-exportpdf-func/templates_views_report-templates/export-pdf-report.htm ./mi_proyecto/templates/views/report-templates/ cp ../sprpcb-exportpdf-func/media_js_reports/export-pdf-report.js ./mi_proyecto/media/js/reports/ ``` ### 3. Registrar la plantilla personalizada de proyecto que agrega los botones necesarios: ```python python manage.py report register -s mi_proyecto/reportes/export-pdf-report.json ``` ### 4. Agregar la vista personalizada creando (copiando) las carpetas indicadas y luego los contenidos respectivos: ```shell # en caso de que el repo clonado esté en el home y desde la 1er carpeta mi_proyecto cp -r ../sprpcb-exportpdf-func/pdf ./mi_proyecto/pdf ``` ### 5. Copiar las plantillas pdf correspondientes a los modelos de recursos: ```shell cp -r ../sprpcb-exportpdf-func/templates_reports ./mi_proyecto/templates/reports ``` ### 6. Agregar una fuente y una entrada de ruta en el archivo urls.py como valor de urlpatterns: ```shell from .pdf.views import export_resource_pdf #urlpatterns = [ # ... path('export/pdf/////', export_resource_pdf, name='export_resource_pdf'), # project-level urls #] ``` ### 7. A continuación, asegúrese de reconstruir la interfaz de su proyecto para habilitar los cambios: ``` npm run build_development ``` ### 8. Cuando haya terminado, debería ver los botones de exportar en la ventana de vista de reporte de su modelo de recursos: ![Alt Text](captura_exportPDF.jpg) ### 9. Forma de uso: El botón "Exportar a PDF", de manera predeterminada, crea el reporte PDF incluyendo casi todos los datos del recurso. Y de manera opcional se pueden incluir 3 características adicionales a través de los botones adyacentes que controlan los siguientes parámetros: * Incluir ubicación detallada: Se puede incluir datos de ubicación (geo-localización) que podrían estar contraindicados en algunos tipos de recursos. * Incluir imágenes adjuntas: Una galería de imágenes distribuida en mosaicos de 2x6 imágenes por hoja a manera de Anexo al informe (existen recursos que tienen más de 20 imágenes relacionadas) * Incluir documentos (pdf) adjuntos: se ajuntan los documentos relacionados en el mismo archivo pdf del informe