Necesito preproducir un millón o dos archivos PDF desde una plantilla simple (algunas páginas y tablas) con fuentes incrustadas. Por lo general, me mantendría en un nivel bajo en un caso como este, y redactaría todo con una biblioteca como ReportLab, pero me incorporé tarde en el proyecto.¿Forma confiable y rápida de convertir un trillón de archivos ODT en PDF?
Actualmente, tengo un template.odt y uso marcadores en los archivos content.xml para completar los datos de un DB. Puedo crear sin problemas los archivos ODT, siempre se ven bien.
Para la conversión de ODT a PDF, estoy usando openoffice en modo servidor (y PyODConverter con canalización con nombre), pero no es muy confiable: en un lote de documentos, finalmente hay un punto después del cual todos los procesados los archivos se convierten en basura (las fuentes y letras incorrectas se extienden por toda la página).
El problema no es predeciblemente reproducible (no depende de los datos), ocurre en OOo 2.3 y 3.2, en Ubuntu, XP, Server 2003 y Windows 7. Mi detector Heisenbug está en marcha.
Intenté reducir el tamaño de los lotes y reiniciar OOo después de cada uno; aún así, un pequeño porcentaje de los documentos están en mal estado.
Por supuesto que escribiré sobre esto en las listas de correo de Ooo, pero mientras tanto, tengo una entrega y ya he perdido demasiado tiempo.
¿A dónde voy?
Evita por completo el formato ODT e id a otro sistema de plantillas.
- Sugerencias? Cualquier cosa que tarde unos segundos en ejecutarse es demasiado lenta. OOo toma alrededor de un segundo y se resume en 15 días de tiempo de procesamiento. Tuve que escribir un programa para agrupar los trabajos en varios clientes.
Guarde el formato pero busque otra herramienta/programa para la conversión.
- ¿Cuál? Hay muchas aplicaciones en el shareware o repositorios comerciales para Windows, pero probar cada una es una tarea desalentadora. Algunos son demasiado lentos, algunos no se pueden ejecutar por lotes sin comprarlos primero, algunos no pueden funcionar desde la línea de comandos, etc.
- Las herramientas de código abierto tienden a no reinventar la rueda ya menudo dependen de openoffice.
Convertir a un formato .DOC intermedio podría ayudar a evitar el error OOo, pero duplicaría el tiempo de procesamiento y complicaría una tarea que ya es demasiado peluda.
Intente generar los archivos PDF dos veces y compararlos, descartando todo el lote si hay algún problema.
- Aunque los documentos se ven iguales, no conozco ninguna forma de comparar el contenido binario.
Reinicia OOo después de procesar cada documento.
- que tomaría mucho más tiempo para producirlos
- bajaría el porcentaje de los archivos equivocados, y que sea muy difícil su identificación.
Vaya a ReportLab y recree las páginas mediante programación. Este es el enfoque que voy a intentar en unos minutos.
Aprende a formatear correctamente las listas con viñetas
muchas gracias.
Editar: parece que no puedo usar ReportLab en absoluto, no me deja incrustar la fuente. Mi fuente viene en versiones TrueType y OpenType.
El TrueType uno dice "TTFError: La fuente no permite subconjuntos/incrustación (0100)".
La versión de OpenType dice "No se admiten los [...] contornos de PostScript TTFError".
Muy muy divertido.
¿Hay alguna manera de detectar de manera confiable la corrupción en los archivos PDF resultantes? ¿Algún tipo de firma que todos contienen? Podría ser la solución más fácil a corto plazo para reiniciar OOo y volver a generar el documento actual cuando se produce un archivo PDF dañado. –
No pude encontrar la manera. El tamaño del archivo es similar, a veces las letras se extienden por la página, a veces se usan las fuentes incorrectas y, a veces, la fuente es la correcta pero se muestra en negrita. –