PowerBuilder Pdf Uitilities (Split & Merge)

 




Para finalizar el mes de Enero, hoy os traigo un pequeño ejemplo que sirve para unir dos PDF en un único PDF o para Dividirlo en un PDF por página.

Es muy posible que en futuras versiones de PowerBuilder integren esta funcionalidad como nativa, pero de momento hay que recurrir a aplicaciones de terceros.

(Actualización 14-11-2022: Con PowerBuilder 2022 Build 1878 tenemos disponible el Objeto PDFDocument en su versión Beta. He integrado en el Ejemplo el objeto n_cst_Pdfdocument para probar su rendimiento)

En esta ocasión he creado una librería NetCore a la que he llamado SplitMergePdf para poder utilizar posteriormente en PowerBuilder un par de métodos de una conocida librería Open Source, llamada iTextSharp, que sirve para crear y manipular archivos PDF.



 

Para usar mi librería en PowerBuilder he usado, como en Posts anteriores, la opción .NET DLL Importer para crear automáticamente el objeto nvo_splitmerge y he creado mi objeto no visual n_cst_pdfservice para utilizarla.

Básicamente para empezar a usar la librería solo debemos conocer estos dos métodos públicos:

public function boolean of_unir (string as_ruta1, string as_ruta2)

public function integer of_dividir (string as_ruta)

Como podréis ver, usarlo es bien sencillo, si abrimos un PDF podremos hacer Split y si abrimos 2 PDF podremos hacer el Join.

Cabe mencionar que en este ejemplo he usado un OLE Control para usar Adobe PDF Reader como visor de los PDF, con lo que se hace necesario tenerlo instalado. En el caso raro de no tenerlo, podéis descargarlo aquí. (14-02-2022: He cambiado el control OLE de Adobe Acrobat por el  nuevo WebBrowser Control para visualizar los PDF's.)

También he usado la librería FileService del Post del 20 de enero para manejar los nombres de archivo.

Como contenido adicional, he encontrado una alternativa en la página de TopwizSoftware que usa GhostScript desde PowerBuilder. 

En este ejemplo Roland Smith se centra en implementar la capacidad de imprimir dos DataWindow en un único PDF, pero añadiendo unos pocos cambios a su objeto n_cst_ghostscript he conseguido que sirva para unir y dividir PDF.

Lo interesante de esta alternativa es que se puede utilizar con mas facilidad versiones anteriores de PowerBuilder, por contra es algo mas lenta.

He integrado las dos opciones en mi objeto n_cst_pdfservice para que se puedan probar....

He creado un video demo en Youtube: 


06-12-2022: Proyecto descrito en artículo archivado. Nueva versión en repositorio con librería en .Net6 y PowerBuilder 2022 build 1892.

Os dejo el enlace de proyecto actual en GitHub:

    
Y proyecto en Visual Studio 2022:






Comentarios

Publicar un comentario