** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Firma electrónica de informes
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Firma electrónica de informes

 Responder Responder
Autor
Mensaje
jregistros Ver desplegable
Nuevo
Nuevo


Unido: 28/Noviembre/2019
Localización: españa
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jregistros Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Firma electrónica de informes
    Enviado: 28/Noviembre/2019 a las 15:10
Hola a tod@s. Necesito crear un informe a través de Access y remitirlo vía email. Previamente debe ser firmado con certificado electrónico reconocido.

Ahora lo estoy haciendo manualmente: el informe se convierte a pdf, lo firmo con el certificado de la FNMT y lo envío por email.

¿Alguna idea de cómo automatizar el proceso?

Un saludo.
Arriba
Maverick2019 Ver desplegable
Habitual
Habitual


Unido: 10/Junio/2019
Localización: Madrid
Estado: Sin conexión
Puntos: 145
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Maverick2019 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 03/Diciembre/2019 a las 10:27
Hola

Salu2,
Arriba
jregistros Ver desplegable
Nuevo
Nuevo


Unido: 28/Noviembre/2019
Localización: españa
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jregistros Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 04/Diciembre/2019 a las 00:11
Muchas gracias, utilizo la impresora de pdf creator para crear pdf's pero desconocía la sección pdf/signature. Lo investigaré. 
Saludos.
Arriba
Curcile Ver desplegable
Nuevo
Nuevo


Unido: 09/Diciembre/2019
Localización: España
Estado: Sin conexión
Puntos: 4
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Curcile Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Diciembre/2019 a las 21:13
Yo en vez del pdf creator, lo que hago es convertir con esta web www.convertidor.es  y me va perfecto
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Diciembre/2019 a las 23:34
Curcile,

¿Y en dónde te permite incluir la firma digital? .... no lo encuentro Geek
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
jregistros Ver desplegable
Nuevo
Nuevo


Unido: 28/Noviembre/2019
Localización: españa
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jregistros Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 10/Diciembre/2019 a las 17:17
Publicado originalmente por Mihura Mihura escribió:

Curcile,

¿Y en dónde te permite incluir la firma digital? .... no lo encuentro Geek

En la última versión de pdf creator free 3.5.1:
Perfiles-> seguridad -> activas firma y eliges el archivo con el certificado digital.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 10/Diciembre/2019 a las 18:48
jregistros,

No era a ti la pregunta, sino a Curcile que pone el link de una web y no se ver en ésta dónde está lo de la firma digital.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Maverick2019 Ver desplegable
Habitual
Habitual


Unido: 10/Junio/2019
Localización: Madrid
Estado: Sin conexión
Puntos: 145
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Maverick2019 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 11/Diciembre/2019 a las 16:12
jregistros, si tienes algún resultado (positivo o negativo) indícanoslo en éste hilo, para tener documentado el tema para futuros usuarios 
Arriba
Istb Ver desplegable
Nuevo
Nuevo


Unido: 13/Abril/2021
Localización: Madrid
Estado: Sin conexión
Puntos: 2
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Istb Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Abril/2021 a las 09:57
Publicado originalmente por Mihura Mihura escribió:

Curcile,

¿Y en dónde te permite incluir la firma digital? .... no lo encuentro Geek


Hola Mihura,

Si quieres utilizar en tu empresa la firma electrónica, te recomiendo la aplicación de Firmafy. La he estado probando y está muy bien de precio en comparación a otras, y la recomiendo para firmar rápido cualquier documento.

Espero poder ayudarte con esto, por aquí te dejo el enlace a la página:[URL=http://firmafy.com/]
Arriba
acilu55 Ver desplegable
Asiduo
Asiduo


Unido: 27/Septiembre/2011
Estado: Sin conexión
Puntos: 214
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita acilu55 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Abril/2021 a las 12:52
el programa Autofirma es gratuito y con el puedes firmar un documento desde access, e incluso hacer o no visible la firma digital con multiples variables.
puedes hacerlo mediante una llamada a un .bat desde la consola o abrirlo con Shell., seleccionar el certificado si tienes varios (FMNT, DNI etc) en fin bastante completo y facil de usar

ruta = "AutoFirmaCommandLine.exe sign -certgui -i " & Me.Lista23.ItemData(n) & " -o " & Left(Me.Lista23.ItemData(n), Len(Me.Lista23.ItemData(n)) - 4) & "-firmado.pdf" & " -format auto -store auto -password ******* -alias CertFirmaDigital"

Shell ruta

'en la lista23 está el fichero que quiero firmar
si son varios hago un bucle, pero en este caso tengo que colocar la posición de la firma uno por no si esta es diferente.
Gracias a todos de antemano
Arriba
acilu55 Ver desplegable
Asiduo
Asiduo


Unido: 27/Septiembre/2011
Estado: Sin conexión
Puntos: 214
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita acilu55 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Abril/2021 a las 12:57
el parametro -certgui te permite colocar la firma donde quieras y hacerla visible, incluso poner una firma reducida en todas las paginas, si usas -cert la firma será invisible. Dado que es una firma digital, la validez en ambos casos es la misma, dependerá de tu certificado únicamnte.
Gracias a todos de antemano
Arriba
acilu55 Ver desplegable
Asiduo
Asiduo


Unido: 27/Septiembre/2011
Estado: Sin conexión
Puntos: 214
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita acilu55 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Abril/2021 a las 20:08
mas sencillo todavia

shell AutoFirmaCommandLine.exe sign -certgui -i c:\su\fichero.pdf -o c:\su\ficherofirmado.pdf 
Gracias a todos de antemano
Arriba
robertocm Ver desplegable
Nuevo
Nuevo


Unido: 04/Diciembre/2021
Localización: Undisclosed
Estado: Sin conexión
Puntos: 2
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita robertocm Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 04/Diciembre/2021 a las 15:37
Buenos días,

Creo que la función Shell no se adapta bien para esperar a que AutoFirma finalice (pensando en abrir el pdf tras la firma y/o firmar varios archivos en una carpeta).

Estoy haciendo unas pruebas con AutoFirma desde Excel VBA (de Access ni idea...)

#If VBA7 Then
    'http://www.jkp-ads.com/articles/apideclarations.asp
    Public Declare PtrSafe Function PlayWavSound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
    Public Declare Function PlayWavSound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal LpszSoundName As String, ByVal uFlags As Long) As Long
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
Sub test()
Dim sFolder As String, SoundName As String
sFolder = CreateObject("WScript.Shell").specialfolders("Desktop")

'===== AutoFirma =====
Dim sFileAutoFirma As String
Dim sInputFile As String
Dim sOutputFile As String
Dim sFileCert As String
Dim sPwdCert As String
Dim sNIF As String
Dim sConfig As String
Dim iPositionOnPageUpperRightX As Integer
Dim iPositionOnPageUpperRightY As Integer
Dim iPositionOnPageLowerLeftX As Integer
Dim iPositionOnPageLowerLeftY As Integer
Dim sFontColor As String
Dim iFontSize As Integer
Dim iFontFamily As Integer
Dim iFontStyle As Integer
Dim iSignaturePage As Integer
Dim slayer2Text As String

sFileAutoFirma = "C:\Archivos de programa\AutoFirma\AutoFirma\AutoFirma.exe"
    'sFileAutoFirma = "C:\Program Files\AutoFirma\AutoFirma\AutoFirma.exe"
    'sFileAutoFirma = "C:\Program Files\AutoFirma\AutoFirma\AutoFirmaCommandLine.exe"
sInputFile = sFolder & "\test.pdf"
sOutputFile = Replace(sInputFile, ".pdf", "_signed.pdf")
sFileCert = sFolder & "\Ciudadano_autenticación_activo.pfx"
sPwdCert = "369258"
sNIF = "99999018D"
iPositionOnPageUpperRightX = 540
iPositionOnPageUpperRightY = 174
iPositionOnPageLowerLeftX = 350
iPositionOnPageLowerLeftY = 92
sFontColor = "black"
iFontSize = 8
iFontFamily = 1
iFontStyle = "0"
iSignaturePage = -1
'Sólo para versión 1.6 o superior
'slayer2Text = "\nlayer2Text=Firma $$ORGANIZATION$$ $$SIGNDATE=dd/MM/yyyy$$ (cert FNMT)"

sConfig = "signaturePositionOnPageLowerLeftX=" & iPositionOnPageLowerLeftX & "\n" _
   & "signaturePositionOnPageLowerLeftY=" & iPositionOnPageLowerLeftY & "\n" _
   & "signaturePositionOnPageUpperRightX=" & iPositionOnPageUpperRightX & "\n" _
   & "signaturePositionOnPageUpperRightY=" & iPositionOnPageUpperRightY & "\n" _
   & "layer2FontColor=" & sFontColor & "\n" _
   & "layer2FontSize=" & iFontSize & "\n" _
   & "layer2FontFamily=" & iFontFamily & "\n" _
   & "layer2FontStyle=" & iFontStyle & "\n" _
   & "signaturePage=" & iSignaturePage _
   & slayer2Text

Dim s As String
s = AutoFirma(sFileAutoFirma, sInputFile, sOutputFile, sFileCert, sPwdCert, sNIF, sConfig)
Debug.Print s

SoundName = "C:\WINDOWS\Media\Chimes.wav" 'tada.wav, ir_begin.wav
PlayWavSound SoundName, 1

Call ShellExecute(0&, vbNullString, sOutputFile, vbNullString, vbNullString, vbNormalFocus)
End Sub
Function AutoFirma(sFileAutoFirma As String, _
                    sInputFile As String, _
                    sOutputFile As String, _
                    sFileCert As String, _
                    sPwdCert As String, _
                    sNIF As String, _
                    sConfig As String) As String
'https://github.com/ctt-gob-es/clienteafirma/issues/20
'AutoFirma: Firmar desde linea de comandos
'Author: Joaquín Ferrero, Mar 6 '21 (joaquinferrero)

Dim objShell As Object, objCmdExec As Object, sCmd As String
On Error Resume Next
Set objShell = CreateObject("WScript.Shell")
'Check if the Windows Script Host object was created.
If Err.Number <> 0 Then
    MsgBox "Couldn't create the WshShell object", vbCritical, "Error"
    GoTo CleanUp
End If
On Error GoTo ExceptionHandling

sCmd = Chr(34) & sFileAutoFirma & Chr(34) _
    & " sign -i " & Chr(34) & sInputFile & Chr(34) _
    & " -o " & Chr(34) & sOutputFile & Chr(34) _
    & " -format pades" _
    & " -store pkcs12:" & Chr(34) & sFileCert & Chr(34) _
    & " -password " & sPwdCert _
    & " -filter subject.contains:" & sNIF _
    & " -config " & Chr(34) & sConfig & Chr(34)

Set objCmdExec = objShell.exec(sCmd)
AutoFirma = objCmdExec.StdOut.ReadAll

CleanUp:
    On Error Resume Next
    Exit Function
ExceptionHandling:
    MsgBox "Error: " & Err.Description
    Resume CleanUp
    Resume 'for debugging
End Function
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 04/Diciembre/2021 a las 15:53
Utiliza el Shell de WScript, te permite ejecución síncrona / asíncrona ...

    ' firmamos el fichero
    Set WSHShell = CreateObject("WScript.Shell")
    ' este saca el cuadro para elegir el certificado
    WSHShell.Run("AutoFirmaCommandLine.exe sign -certgui -i """ & RutaFichero & """ -o """ & RutaFicheroFirmado & """ -format facturae", 7, True)

Edito: por cierto, la misma rutina que te funcione en VBA-Excel te funciona en VBA-Access.


Editado por Mihura - 04/Diciembre/2021 a las 15:54
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1258
Opciones de entrada Opciones de entrada   Gracias (1) Gracias(1)   Cita main Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 06/Diciembre/2021 a las 12:38
Hola
Aunque yo no lo he probado, pero si lo tenia por un cajón, lo he rescatado y lo pongo aqui por si fuera de interes apara mejorar esas rutinas.

1.- Con GUI, para que el usuario seleccione certificado, pero pasando los archivos para Facturae:
'AutoFirmaCommandLine.exe sign -gui -i "path\archivo.xml" -o "path\archivo.xml_signed.xsig" -format facturae -store auto

'SACADO CON KEYTOOL

2.- Sin GUI, pasando los datos del certificado:
'AutoFirmaCommandLine.exe sign -i "path\archivo.xml" -o "path\archivo.xml_signed.xsig" -format facturae -store auto -password XXXXXXXX -alias

3 Sin GUI, para firma de PDF, pasando los datos
'AutoFirmaCommandLine.exe sign -i "path\archivo.pdf" -o "path\archivo_signed.pdf" -format pades -store auto -password XXXXXXXX -alias

Saludos
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable