151 lines
4.5 KiB
Plaintext
151 lines
4.5 KiB
Plaintext
|
' 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
|