Nueva pregunta

Pregunta:

Fecha: 07-09-2023 05:54:53 (En Español)

Como verificar que un archivo pdf este firmando digitalmente[No resuelta]

Tengo la siguiente solicitud:
Cuando el cliente cargue el archivo pdf el sistema debe validar si el archivo esta o no firmado digitalmente, si no esta debo alertar al usuario para que cargue un archivo firmado.

Alguna idea de como hacerlo.
Etiquetas: PHP - Pregunta Votos: 0 - Respuestas: 2 - Vistas: 6 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 08-09-2023 09:23:21 No lo he podido probar aún pero aquí parece haber algo que puede ayudarte   Votos: 0 - Link respuesta
     
  • Fecha: 05-09-2024 06:47:55 Para validar si un archivo PDF está firmado digitalmente en PHP, puedes usar la biblioteca fpdi en combinación con tcpdf o setasign/fpdf-signer. Aquí te dejo una solución concisa para validar la firma digital en un archivo PDF

    
    <?php
    
    require_once 'vendor/autoload.php';
    
    use setasign\Fpdi\Fpdi;
    use setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException;
    use setasign\Fpdi\PdfParser\PdfParserException;
    use setasign\Fpdi\PdfReader\PdfReaderException;
    
    function isPdfSigned($filePath) {
        try {
            $pdf = new Fpdi();
            $pageCount = $pdf->setSourceFile($filePath);
            $signatureFound = false;
    
            // Recorre todas las páginas para buscar si el PDF contiene firmas
            for ($i = 1; $i <= $pageCount; $i++) {
                $tplIdx = $pdf->importPage($i);
                $pdf->AddPage();
                $pdf->useTemplate($tplIdx);
    
                $annotations = $pdf->getAnnotations();
                foreach ($annotations as $annotation) {
                    if (isset($annotation['Subtype']) && $annotation['Subtype'] === '/Widget' && 
                        isset($annotation['FT']) && $annotation['FT'] === '/Sig') {
                        $signatureFound = true;
                        break;
                    }
                }
            }
    
            return $signatureFound;
        } catch (CrossReferenceException | PdfParserException | PdfReaderException $e) {
            return false;
        }
    }
    
    $filePath = 'ruta/al/archivo.pdf';
    
    if (isPdfSigned($filePath)) {
        echo "El PDF está firmado digitalmente.";
    } else {
        echo "El PDF no está firmado digitalmente. Por favor, sube un archivo firmado.";
    }
    
    
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com