CompresorPDF/.src/FMain.class

151 lines
4.5 KiB
Plaintext
Raw Normal View History

2023-06-02 16:50:05 +02:00
' Gambas class file
Public Sub BotonSALIR_Click()
Me.Close
End
Public Sub botonSeleccionarPDF_Click()
botonSeleccionarPDF.Tag = "" ' Mi zona temporal...
frmSeleccionarPDF.Load
frmSeleccionarPDF.ShowModal
End
Public Function AnimacionEscalado()
Dim i As Integer
Dim anchoMin As Integer
Dim altoMin As Integer
altoMin = BotonCOMPRIMIR.Height + BotonCOMPRIMIR.Y + 12
anchoMin = BotonCOMPRIMIR.Width + BotonCOMPRIMIR.X + 10
' Valor "encogido"
Dim anchoEncogido As Integer
Dim altoEncogido As Integer
altoEncogido = botonSeleccionarPDF.Height + botonSeleccionarPDF.Y + 10
anchoEncogido = botonSeleccionarPDF.Width + botonSeleccionarPDF.X + 10
Me.Width = anchoEncogido
Me.Height = altoEncogido
Me.Refresh
Wait 0.2
Me.Refresh
' Valor "estirado"
For i = altoEncogido To altoMin Step 30
If i >= altoMin Then Break
Me.Height = i
Me.Refresh
Wait 0.1
Me.Refresh
Next
' Forzamos al final al alto y ancho minimo
Me.Width = anchoMin
Me.Height = altoMin
Me.Refresh
Me.Resizable = False
End
Public Function ChequearHerramientas()
' Usamos como herramienta externa Ghostscript (GS)
' Si no está hay que avisar para que la instale
Dim estaOK As String
' GHOSTSCRIPT
Shell "gs --version 1>/dev/null 2>/dev/null;echo -n $?" To estaOK
' 0 => Esta instalado
If estaOK <> "0"
Message.Title = ("Chequeo de Herramientas")
Message.Error("No se ha localizado la herramienta Ghostscript (gs)" & gb.CrLf & "Debe instalarla para poder usar este programa")
BotonCOMPRIMIR.Enabled = False
Else
BotonCOMPRIMIR.Enabled = True
Endif
' GRAPHICS MAGICK
Shell "gm version 1>/dev/null 2>/dev/null;echo -n $?" To estaOK
If estaOK <> "0"
Message.Title = ("Chequeo de Herramientas")
Message.Error("No se ha localizado la herramienta Graphics Magick (gm)" & gb.CrLf & "Debe instalarla para la compresión máxima")
RPdfMaxima.Enabled = False
Else
RPdfMaxima.Enabled = True
Endif
End
Public Sub form_Show()
AnimacionEscalado()
ChequearHerramientas()
End
Public Sub BotonCOMPRIMIR_Click()
If botonSeleccionarPDF.Tag = ""
'No hay fichero seleccionado
Message.Title = ("Error - Fichero PDF")
Message.Error("Debe de seleccionar un fichero PDF")
Return
Else
'Tenemos fichero
Dim FichSalida As String
Dim trozo As String[]
trozo = Split(botonSeleccionarPDF.Tag, "/")
Dim i As Integer
For i = 0 To trozo.Max - 1
FichSalida &= trozo[i] & "/"
Next
FichSalida &= ("PDF_Comprimido-") & trozo[trozo.Max]
If Exist(FichSalida)
' Si existe borramos el anterior
Kill FichSalida
Endif
Procesando.Visible = True
Procesando.Show
Procesando.Start
Procesando.Refresh
Wait 0.1
Procesando.Refresh
'' LANZAMOS EL COMANDO DE COMPRIMIR PDF SEGUN EL RadioButton seleccionado
Dim Comando As String
Comando = GeneraCMD(botonSeleccionarPDF.Tag, FichSalida)
'Message("Voy a ejecutar:" & gb.CrLf & Comando)
Shell Comando Wait ' Esperamos a que termine
' Al terminar ocultamos siempre el "Spinner"
Procesando.Stop
Procesando.Visible = False
Procesando.Hide
Message.Title = ("Compresión Finalizada")
Message("Se ha comprimido el fichero PDF indicado" & gb.CrLf & "lo puede encontrar en:" & gb.CrLf & FichSalida)
Endif
End
Public Function GeneraCMD(FichEntrada As String, FichSalida As String) As String
Dim ComandoSalida As String
Dim pdfTipo As String
If RPdfMaxima.Value
' Usamos GM
ComandoSalida = "gm convert -density 150 -resize 800 "
ComandoSalida &= Shell$(FichEntrada) & " " & Shell$(FichSalida)
Else
' Usamos GS
If RPdfEbook.Value Then pdfTipo = "/ebook"
If RPdfImprimir.Value Then pdfTipo = "/printer"
If RPdfPantalla.Value Then pdfTipo = "/screen"
If RPdfDefecto.Value Then pdfTipo = "/default"
ComandoSalida = "gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=" & pdfTipo & " -dNOPAUSE -dQUIET -dBATCH -sOutputFile="
'ComandoSalida = "gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile="
ComandoSalida &= Shell$(FichSalida) & " " & Shell$(FichEntrada)
Endif
If RPdfImagenes.Value
' Para los PDFs que son imagenes usamos graphics magic en vez de ghostscript
'gm convert -density 150 -resize 800 $ORIGEN $DESTINO
ComandoSalida = "gm convert -density 150 -resize 800 " & Shell$(FichEntrada) & " " & Shell$(FichSalida)
Endif
'Devolvemos lo que hay que lanzar
Return ComandoSalida
End
Public Sub Form_Open()
LabelVERSION.Text = ("Versión: ") & Application.Version
System.Shell = "/bin/bash"
End