Escaneo Multipágina en PowerBuilder 2022 R3 (WIA C#)


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:

  1. Escaneo de Imágenes: Se escanean las páginas en formato PNG (librería ScannerWia.dll).
  2. Creación del Documento PDF: Se crea un nuevo objeto PDFDocument.
  3. 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.
  4. 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:

Para los que necesiten versiones anteriores como la descrita en este artículo:

Los Proyectos PowerBuilder 11.5 y 12.6 usan las libreáis COM, en 32bits. para la conversión de Imágenes a PDF Usan ItextSharp , y el Control Microsoft Ole WebBrowser para visualizar el resultado. 
Para visualizar imágenes se convierten a un PDF temporal que se carga en el WebBrowser.

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