GhostScript

299 views
Skip to first unread message

Zarlu

unread,
Jun 30, 2018, 2:29:17 AM6/30/18
to Comunidad de Visual Foxpro en Español
Buenas noches/días foxeros!
 
Alguien sabe si se podrá ejecutar GhostScript sin hacer la instalación.
Es decir..solo copiando los archivos y creando o modificando en el registro de windows o estableciendo el path, o algo así...?
 
Quiero incluir GhostScript en una aplicación, pero evitando que el usuario tenga que instalar mi programa y el GhostScript
 
Gracias
zarlu
Chetumal, Quintana Roo, México

Victor Esp

unread,
Jun 30, 2018, 12:03:11 PM6/30/18
to Comunidad de Visual Foxpro en Español
Si se puede, es suficiente con incluir los DLLs y hacer los correspondientes DECLAREs de las funciones a utilizar.
Este link te va a ayudar:
https://www.levelextreme.com/ViewPageGenericLogin.aspx?LoadContainer=1&NoThread=658748

Victor Espinoza
Miami, FL

Message has been deleted
Message has been deleted

Zarlu

unread,
Jun 30, 2018, 4:58:45 PM6/30/18
to Comunidad de Visual Foxpro en Español

Buenas tardes Victor Esp!


Ya estoy checando el link.....ahora a tratar de adaptarlo.

Requiero convertir PDF a TIFF
Gacias por tu tiempo y atención

Zarlu

unread,
Jun 30, 2018, 10:05:16 PM6/30/18
to Comunidad de Visual Foxpro en Español
Buenas noches!
 
A ver si alguien me puede ayudar un poco más...
Estoy usando ImagemagickObject y éste llama a Ghostscript
 
Esto es lo que tengo y funciona, pero instalando ghostscript, lo cual no quiero hacer sino lograrlo através de las dll de ghostscript:

loMagickImage =

Createobject("ImageMagickObject.MagickImage")

lcSourceFile = "origenpdf.pdf"

lcThumbnailFile = "destino.tiff"

loMagickImage.Convert("-density", "250", lcSourceFile, "-alpha", "remove", "-fuzz", "1%", "-trim", "-alpha", "off", "-shave", "1x1", lcThumbnailFile)

 

(ya logré hacer que reconozca ghostscript sin instalarlo escribiendo en el registro de windows, pero reitero que sería mejor, para mi, hacerlo con ImagemagickObject y las dll de Ghostscript)

 

Adapte el código que me refirió Victor Esp, pero no me generá todas las páginas de pdf en el tiff, ni me respeta los parametros de conversión que tengo en loMagickImage.Convert

 

Esto es lo que hice con declarando las dll:

DECLARE Long gsapi_revision IN gsdll32.dll ;
Long pGSRevisionInfo, Long intLen

DECLARE Long gsapi_new_instance IN gsdll32.dll ;
Long @lngGSInstance, Long lngCallerHandle

DECLARE Long  gsapi_delete_instance In gsdll32.dll ;
Long lngGSInstance

DECLARE Long gsapi_init_with_args IN gsdll32.dll ;
Long lngGSInstance, Long lngArgumentCount, ;
Long lngArguments

DECLARE Long gsapi_exit IN gsdll32.dll ;
Long lngGSInstance

SET PROCEDURE TO c:\clsheap ADDITIVE

? ConvertFile("C:\a.pdf", "C:\b.tiff")


FUNCTION ConvertFile(tcFileIn, tcFileOut)
DIMENSION laArgs[13]
laArgs[1] = "ps2pdf" &&The First Parameter is Ignored
laArgs[2] = "-dNOPAUSE"
laArgs[3] = "-dBATCH"
laArgs[4] = "-dSAFER"
laArgs[5] = "-r250"
laArgs[6] = "-dMaxBitmap=500000000"
laArgs[7] = "-dAlignToPixels=0"
laArgs[8] = "-dGridFitTT=2"
laArgs[9] = "-sDEVICE=pngalpha"
laArgs[10] = "-sOutputFile=" + tcFileOut
laArgs[11] = "-c"
laArgs[12] = "-f"
laArgs[13] = tcFileIn
RETURN CallGS(@laArgs)

 

(hay más funciones involucradas, pero no las transcribo)

 

Éste último código es el que no me convierte todas las páginas del pdf a tiff, sólo una, y no

sé como pasarle el parámetro para remover el canal alpha de la imagen ("-alpha", "remove", )

 

Gracias al que pueda ayudarme

Zarlu

unread,
Jul 2, 2018, 6:33:48 PM7/2/18
to Comunidad de Visual Foxpro en Español
Buenas tardes!
 
Ya resolví lo que requería, lo comparto con ustedes, abajo transcribo el código.
 
Les hago las siguientes precisiones:
-Reconozco los créditos de quienes desarrollaron el código, yo sólo estoy adaptando.
-Mi procedimiento es convertir PDF-TIFF-TXT para leer el contenido.
-Me fue posible resolverlo usando la dll de Gosthscript "gsdll32.dll" y sin ser necesarío "imagemagickobject.dll"
-La dll se instala en system32 y se registra.
-el parametro con el que logre pasar a TIFF todas las páginas fue "sDEVICE=tiffscaled"
-Hay otras opciones del parámetro, la idea es usar el que resulte en mejor resolución y menos peso
-Después de TIFF hay que aplicar Tesseract para lograr el TXT
-El tesseract tarda dependiendo de la cantidad de hojas a convertir, En mi caso 59, entonces hay que ingeniarserlas para distraer
al usuario y que la aplicación no se "congele". (en estos días los segundos al monitor le parecen siglos)
-Se requiere igual el "clsheap.prg" que en algún lado de la red anda (no recuerdo donde)
-El resto del código lo encuentran en el link que refiere Victor Esp
 
Me quedan estas inquietudes:
-El código me da un error de "Desconocido TAARGS - Indefinido" al compilar el ejecutable, pero se ignora el error y funciona bien. Pendiente resolverlo.
-El tesseract lo estoy usando sin instalar, pero escribiendo en el registro de Windows al instalar mi alicación. Sería bueno saber si es posible otra forma  que resulte más practica al instalar la aplicación.
 
El código:
 
Function atiff(mFileIn, mFileOut)&&devuelve cero si es exitosa
SET PROCEDURE TO c:\clsheap ADDITIVE
*CLEAR DLLS
* GhostScript API

DECLARE Long gsapi_revision IN gsdll32.dll Long pGSRevisionInfo,  Long intLen
DECLARE Long gsapi_new_instance IN gsdll32.dll Long @lngGSInstance, Long lngCallerHandle
DECLARE Long gsapi_delete_instance In gsdll32.dll Long lngGSInstance
DECLARE Long gsapi_init_with_args IN gsdll32.dll Long lngGSInstance, Long lngArgumentCount, Long lngArguments
DECLARE Long gsapi_exit IN gsdll32.dll Long lngGSInstance
 
mRR=ConvertFile(mFileIn, mFileOut)
Return mRR
*-------------------------------------------------------
FUNCTION ConvertFile(tcFileIn, tcFileOut)
DIMENSION  laArgs[8]
laArgs[1] = ""    &&The First Parameter is Ignored

laArgs[2] = "-dNOPAUSE"
laArgs[3] = "-dBATCH"
laArgs[4] = "-dSAFER"
laArgs[5] = "-sDEVICE=tiffscaled"
laArgs[6] = "-sOutputFile=" + tcFileOut
laArgs[7] = "-f"
laArgs[8] = tcFileIn
RETURN CallGS(@laArgs)
Reply all
Reply to author
Forward
0 new messages