Escanear en PowerBuilder 2022R2 (WIA C#)

 


Para finalizar el año 2023, hoy os traigo un ejemplo para poder escanear imágenes o documentos Pdf desde una aplicación PowerBuilder 2022R2.

Este ejemplo es una recreación de la aplicación Windows Forms presentada en el siguiente articulo:

Creating a scanning application in Winforms with C#

Podéis descargar su proyecto en:

github.com/ourcodeworld/csharp-scanner-wia


La principal diferencia respecto al proyecto Windows Forms es que he añadido la posiblidad de escanear en PDF.

Para ello lo que hago es escanear en PNG y luego usando los nuevos objetos de PowerBuilder PDFdocument, PDFpage y PDFImage convertir la imagen PNG en PDF.

Para visualizar el resultado del escaneo, he usado el control WebBrowser, que nos permite cargar PDF e imágenes directamente.

La librería que he creado en .Net6 y he importado con el Net Dll Importer, simplemente tiene 2 métodos:

any of_ListScanners()

string of_Scan(string as_scanner,string as_format,string as_outputpath,string as_filename)

Cuando la aplicación se abre, se ejecuta la función of_ListScanners() para rellenar un ListBox con los escaneres disponibles y cuando se aprieta el botón Start scan, se ejecuta la función of_Scan().

Si la extensión del documento es un PDF, entonces uso una función global que he creado para convertir la imagen PNG en PDF:

string gf_imagetopdf (string as_image)

Con el Objeto PDFImage, se indica las propiedades de la imagen, con el Objeto PdfPage, se Inserta el objeto PdfImage y finalmente se Inserta el Objeto PdfPage al Objeto PDfDocument que nos permite guardar el PDF.

La función en resumen podría ser algo así:

 En fin no me enrollo mas y os dejo como siempre el enlace de proyecto actual en GitHub:


Y proyecto en Visual Studio 2022:

github.com/rasanfe/ScannerWia

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

Proyecto PowerBuilder 11.5 Build 2506

Proyecto PowerBuilder 12.6 build 3506

Proyecto Visual Studio 2022 NetCore 3.1 COM/ActiveX

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.


https://github.com/rasanfe/archivo/tree/main/Visual_Studio_2022_NetCore3.1/ScannerWia_NetCore3.1

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.

Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Hola, logre usarlo y funciona muy bien. Modifique el DLL para en caso de cancelar hacer un break porque daba problemas al regresar al PB y decidí utilizar este dialog object scanResult = dlg.ShowAcquireImage( . La conversión a PDF igual funciona muy bien. Gracias

    ResponderEliminar
    Respuestas
    1. Me alegro de que ya te funcione bien. Cuando tenga tiempo revisaré lo que me comentas. Un saludo.

      Eliminar

Publicar un comentario