Para continuar mejorando nuestro ejemplo de escaneo en PowerBuilder, hoy me apetece compartir con vosotros mi última actualización al proyecto para aceptar el escaneo multipágina.
Anteriormente, nuestro ejemplo estaba limitado a escanear una sola página, pero con esta nueva actualización, ahora podemos escanear múltiples páginas tanto en formato PDF como en OCR.
Escaneo en PDF Multipágina
La funcionalidad de escaneo en PDF se ha expandido significativamente. Ahora, puedes optar por escanear cada página en un archivo PDF individual o agrupar todas las páginas escaneadas en un solo archivo PDF multipágina. Esta flexibilidad permite manejar mejor los documentos escaneados y facilita su organización y uso posterior.
Para lograr esto, utilizamos los nuevos objetos nativos de PowerBuilder: PDFBuilder, PDFPage, y PDFImage. Estos objetos nos permiten crear y manipular documentos PDF de manera más eficiente y efectiva.
Proceso de Creación de PDF Multipágina
El proceso de creación de un PDF multipágina a partir de imágenes escaneadas es bastante directo. Aquí tienes un resumen de los pasos involucrados:
- Escaneo de Imágenes: Se escanean las páginas en formato PNG (librería ScannerWia.dll).
- Creación del Documento PDF: Se crea un nuevo objeto PDFDocument.
- Añadir Imágenes al PDF: Por cada imagen escaneada, se crea un objeto PDFImage y se añade a un PDFPage. Luego, se añade cada página al documento PDF.
- Guardar el Documento PDF: Una vez que todas las páginas han sido añadidas, se guarda el documento PDF.
OCR
Para la funcionalidad OCR, cada página escaneada se convierte en un archivo de texto separado. Esto se logra utilizando el método ConvertImageToTxt que mencioné en el artículo anterior. Cada imagen es procesada para extraer el texto, y se guarda un archivo .txt por cada página escaneada.
Ejemplo de Código
Para simplificar el ejemplo, he creado un objeto llamado n_cst_pdfservice donde he creado las funciones que uso para generar un PDF con los nuevos objetos Nativos.
Este objeto tiene 4 funciones:
string of_cambiar_extension (string as_source, string as_newformat)
string of_imagetopdf (string as_image)
string of_imagearraytopdf (string as_image[])
of_pdfimage (pdfdocument a_pdf_doc, string as_image)
Aquí tienes un ejemplo del código que utilizamos para convertir imágenes recibidas en un PDF:
Recursos y Enlaces
Como siempre, os dejo los enlaces a los proyectos actualizados en GitHub:
- Proyecto PowerBuilder 11.5 Build 2506
- Proyecto PowerBuilder 12.6 build 3506
- Proyecto Visual Studio 2022 NetCore 3.1 COM/ActiveX
Los proyectos PowerBuilder 2019 y 2021 usan la librería NetCore 3.1 importada. Para la conversión de Imágenes a PDF, usa la librería iTextSharp y para la visualización tanto de imágenes como de PDF se usa el control WebBrowser.
Como actualización para todos los proyectos de eversiones anteriores que usan iTextSharp he conseguido hacer el proceso de creación y fusión de PDF por memoria sin grabar en disco cada vez los archivos, con lo que se agiliza bastante el proceso.
Espero que estas actualizaciones os sean útiles y que sigáis disfrutando de estas mejoras en vuestros proyectos de PowerBuilder. No dudéis en dejar vuestros comentarios y sugerencias.
Artículos relacionados:
Comentarios
Publicar un comentario