es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir la cadena .pdf devuelta por Snappy PDF Generator a un archivo .pdf en el servidor con protección de contraseña.

Nuestro servicio ágil de pdf en nuestra aplicación Symfony 3.4 devuelve un pdf como una cadena de la siguiente manera:

“`%PDF-1.4
%âã
1 0 obj
<<
/Title ()
/Creator (??wkhtmltopdf 0.12.5)
/Producer (??Qt 5.11.3)
/CreationDate (D:20211221165455Z)

<blockquote>
>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
“`

Dado que snappy pdf/wkhtmlpdf no ofrece protección con contraseña, estoy intentando escribir esta cadena en un pdf en el servidor de Linux y luego protegerlo con contraseña usando qpdf y devolverlo como una cadena para continuar con el procesamiento adicional.

¿Cómo puedo hacer esto en Symfony 3.4 / PHP?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para escribir la cadena en un archivo pdf en el servidor Linux y protegerlo con contraseña usando qpdf, puedes seguir los siguientes pasos:

    1. Instala qpdf en el servidor Linux si aún no está instalado. Puedes hacer esto utilizando el administrador de paquetes de tu distribución Linux.
    2. En tu aplicación Symfony 3.4, puedes utilizar el siguiente código para escribir la cadena pdf en un archivo en el servidor:

      $pdfString = "<tu cadena="" pdf="">"; // reemplaza con tu cadena pdf
      $filePath = "/ruta/al/archivo.pdf"; // reemplaza con la ruta donde quieres guardar el archivo pdf
      
      file_put_contents($filePath, $pdfString);
      

    3. Una vez que se guarde el archivo pdf, puedes usar qpdf para protegerlo con contraseña. Puedes utilizar el siguiente código para esto:
      $password = "<tu contraseña="" pdf="">"; // reemplaza con la contraseña que deseas establecer para el pdf
      $inputFilePath = "/ruta/al/archivo.pdf"; // reemplaza con la ruta del archivo pdf que acabas de guardar
      $outputFilePath = "/ruta/al/archivo/protegido.pdf"; // reemplaza con la ruta donde quieres guardar el archivo pdf protegido con contraseña
      
      exec("qpdf --encrypt '{$password}' '{$password}' 256 -- '$inputFilePath' '$outputFilePath'");
      

      Esto creará un archivo pdf protegido con contraseña en la ruta de salida especificada. Ten en cuenta que qpdf debe estar en la ruta del sistema para que este comando funcione.

    4. Finalmente, puedes leer el archivo pdf protegido con contraseña como una cadena y continuar con el procesamiento adicional utilizando el siguiente código:

      $protectedPdfString = file_get_contents($outputFilePath);
      

      Esto leerá el archivo pdf protegido con contraseña de vuelta en una variable de cadena que puedes utilizar para el procesamiento adicional.

Comments are closed.