Page 1 of 1
Problema con img2pdf
Posted: Tue Mar 24, 2026 11:49 pm
by Armando
Hola Foreros:
He venido usando img2pdf sin problemas, solo en un cliente img2pdf (con licencia) me crea el pdf de tamaño de un byte y
al intentar abrirlo me dice que el pdf tiene errores.
La vista previa se ve bien.
Alguien que haya superado este tipo de error, cómo lo resolvió?, puede ser la resolución de la laptop?
Saludos
Re: Problema con img2pdf
Posted: Wed Mar 25, 2026 5:47 am
by Antonio Linares
Re: Problema con img2pdf
Posted: Wed Mar 25, 2026 5:16 pm
by Armando
Maestro Antonio:
Gracias, voy a probar.
Saludos
Re: Problema con img2pdf
Posted: Wed Mar 25, 2026 5:55 pm
by karinha
Armando, haces asi?
Code: Select all | Expand
FUNCTION Img2Pdf( aFiles )
LOCAL ImageFileName := " ", ix, iErr := 0, ErrorText := " "
LOCAL cString
LOCAL cDestino := CurDrive() + ":\" + GetCurDir() + "PDF" + StrTran( Time(), ":", "" ) + ".pdf"
LOCAL cFile := ""
LOCAL x := 0
LOCAL cTexto := ""
LOCAL cLicCod := Space( 35 ) // Requerer o código de licença de uso da Image2Pdf
cLicCod := GetPvProfString( "IMPRESSAO", "Image2PdfCode", Space( 35 ), ".\SISCOM.INI" )
IF Empty( cLicCod )
IF MsgGet( "Código de licença de Image2Pdf.dll", "Código de licença de Image2Pdf.dll", @cLicCod )
WritePProString( "IMPRESSAO", "Image2PdfCode", AllTrim( cLicCod ), ".\SISCOM.INI" )
ENDIF
ENDIF
IF Empty( cLicCod )
cLicCod := "VERSAO_TRIAL"
ENDIF
cFile := cGetFile( "Arquivo PDF (*.pdf) | *.pdf |", "Salvar como...", NIL, NIL, .T., .T. )
IF Empty( cFile )
RETURN NIL
ENDIF
cFile := Lower( StrTran( Upper( cFile + ".PDF" ), ".PDF.PDF", ".pdf" ) )
IF Len( aFiles ) > 0
// Lembrando q. a dll tem q. estar no raiz do seu sistema
hLib := LoadLib32( ".\dll32\Image2PDF StdCall.DLL" )
iErr := I2PDF_License( AllTrim( cLicCod ) )
// ensure that any EMF files are converted at highest quality
iErr := I2PDF_MetaToNativePDF()
iErr := I2PDF_UseEMFDeviceSize()
iErr := I2PDF_SetDPI( 300 ) // Set PDF DPI to the same as the image
// Build the pages using the array of image files
FOR ix := 1 TO Len( aFiles )
ImageFileName := aFiles[ ix ]
IF ( iErr := I2PDF_AddImage( ImageFileName ) ) # 0
EXIT
ENDIF
NEXT
// Create the PDF.
iErr := I2PDF_MakePDF( RTrim( cFile ), 0, ErrorText, 40 )
FreeLib32( hLib )
ENDIF
ShellExecute( oMainWnd:hWnd, "Open", cFile,,, 0 )
RETURN NIL
// DLL API proptotypes (declarações)
DLL32 STATIC FUNCTION I2PDF_License( cLicCode AS LPSTR ) AS LONG;
PASCAL FROM "I2PDF_License" LIB hLib
DLL32 STATIC FUNCTION I2PDF_MetaToNativePDF() AS LONG;
PASCAL FROM "I2PDF_MetaToNativePDF" LIB hLib
DLL32 STATIC FUNCTION I2PDF_UseEMFDeviceSize() AS LONG;
PASCAL FROM "I2PDF_UseEMFDeviceSize" LIB hLib
DLL32 STATIC FUNCTION I2PDF_AddImage( cImage AS LPSTR ) AS LONG;
PASCAL FROM "I2PDF_AddImage" LIB hLib
DLL32 STATIC FUNCTION I2PDF_SetDPI( nDpi AS LONG ) AS LONG;
PASCAL FROM "I2PDF_SetDPI" LIB hLib
DLL32 STATIC FUNCTION I2PDF_MakePDF( cOutFile AS LPSTR, nOptions AS LONG, cErrTxt AS LPSTR, nMaxESize AS LONG ) AS LONG;
PASCAL FROM "I2PDF_MakePDF" LIB hLib
Regards, saludos.
Re: Problema con img2pdf
Posted: Wed Mar 25, 2026 6:36 pm
by Armando
Estimado Karinha:
Lo hago así:
Code: Select all | Expand
ACTION SavePdf(oDevice:cDocument) <= es la vista previa que crea el RPreview
STATIC FUNCTION SavePdf(pdfFileName)
LOCAL nVez := 0
LOCAL oDevice := DEVICE
LOCAL aFiles := oDevice:aMeta
LOCAL cPdfFile := ""
pdfFileName := ALLTRIM(pdfFileName)
pdfFileName := ALLTRIM(SUBSTR(pdfFileName,AT(":",pdfFileName) + 1))
cPdfFile := TRUENAME(ALLTRIM(oApp:cPathPdfs) + "\" + ALLTRIM(pdfFileName) + ".Pdf")
FOR nVez := 1 TO LEN(aFiles)
IF nVez == 1
/*
-r = Pone la resolución en el archivo PDF generado
-1 = Usa la resolución del archivo original
-o = Va seguido del nombre del archivo PDF que será generado
*/
WaitRun("img2pdf.exe -$ 5544KWET56 -r -1 -o " +;
'"' + ALLTRIM(cPdfFile) + '"' + SPACE(01) +;
'"' + ALLTRIM(aFiles[nVez]) + '"',0) // El cero es para evitar la ventana del DOS
ELSE
/*
-p = Agrega a un archivo PDF existente
1 = significa que lo agrega al final del archivo existente
-r = Pone la resolución en el archivo PDF generado
-1 = Usa la resolución del archivo original
-o = Va seguido del nombre del archivo PDF que será generado
*/
WaitRun("img2pdf.exe -$ 5544KWET56 -p 1 -r -1 -o " +;
'"' + ALLTRIM(cPdfFile) + '"' + SPACE(01) +;
'"' + ALLTRIM(aFiles[nVez]) + '"',0) // El cero es para evitar la ventana del DOS
ENDIF
NEXT
MsgInfo("Se creó el archivo: " + cPdfFile,oApp:cAplicacion)
RETURN(.T.)
En varias PC funciona de 100, solo en una
Saludos
Re: Problema con img2pdf
Posted: Wed Mar 25, 2026 6:57 pm
by karinha
Prueba con esta verssión,
https://sourceforge.net/projects/image2pdf/
Regards, saludos.
Re: Problema con img2pdf
Posted: Wed Mar 25, 2026 7:28 pm
by Armando
Amigos del foro:
Pues no doy pie con bola:
Ya hice lo recomendado en el post del Maestro Linares, cambie la ruta donde crear el PDF, revosé permisos
de la carpeta, etc. etc. y nada.
Ya intente con la nueva versión recomendada por Karinha, con esta nueva versión me llevo a instalar Java y nada
ahora no crea el PDF ni con 1 byte.
Desde la vista previa seleccioné la impresora MICROSOFT PRINT TO PDF y no funciona, sin embargo
desde Word o Excel si funciona esa impresora.
Me estoy volviendo loco ! 
Saludos
Re: Problema con img2pdf
Posted: Wed Mar 25, 2026 7:38 pm
by karinha
Mira se ayuda,
https://pypi.org/project/img2pdf/
Regards, saludos.