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 ! :shock:

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.