Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

312
Vistas
Usando pdfkit, ¿cómo agrego un diccionario de bloqueo a PDF?

Me tomó un tiempo darme cuenta, pero agregué con éxito un campo de firma a un PDF generado con pdfkit. Agrego el campo con la siguiente función:

 const formSig = ((pdfDoc, name, x, y, w, h, options = {}) => { const annotOptions = { ...options, FT: 'Sig', } pdfDoc.formAnnotation(name, null, x, y, w, h, annotOptions) });

Sin embargo, ahora quiero controlar qué campos se bloquean cuando alguien firma el documento para poder solicitar varias firmas. Sé qué pasos debo seguir, pero no estoy seguro de cómo hacerlo.

  1. Agregue un diccionario de bloqueo de campo de firma con Type establecido en SigFieldLock , Acción establecida en Include y Fields establecido en una matriz de cadenas de nombres de campo.
  2. Agregue una entrada de Lock al campo de firma que sea una referencia al diccionario de bloqueo.

Estoy luchando por averiguar qué método me permitirá agregar el diccionario, encontrar su referencia e incluir la referencia al agregar el campo de firma.

Actualizar

Creo que descubrí cómo crear el diccionario y obtener su referencia para agregar a las opciones de campo, pero el diccionario no se escribe en la secuencia.

¿Alguien conoce pdfkit lo suficientemente bien como para indicarme la dirección correcta?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Logré hacerlo funcionar. En pdfkit, puede crear básicamente cualquier objeto de diccionario utilizando el método ref() . La otra cosa que aprendí es que para crear la matriz de campos para el diccionario de bloqueo, necesitaba convertir cada cadena en una String para que pdfkit la codificara correctamente.

Use el siguiente código:

 const formSig = ((pdfDoc, name, x, y, w, h, fieldsToLock, options = {}) => { // Converts the array of strings to an array of Strings const lockArray = fieldsToLock.map((fieldName) => { return new String(fieldName); }) // Call the function to create the lock dictionary and capture its reference const lockRef = lockDict(pdfDoc, lockArray) // Build the annotation options including the field type, make the field require and a reference // to the lock dictionary in the Lock field const annotOptions = { ...options, FT: 'Sig', Ff: 2, Lock: lockRef, } // Add the field to the dictionary pdfDoc.formAnnotation(name, null, x, y, w, h, annotOptions) }); const lockDict = ((pdfDoc, locks) => { // Build the Lock dictionary object to be added to the PDF const dict = { Type: 'SigFieldLock', Action: 'Include', Fields: locks } // Create a dictionary object reference and capture the reference let dictRef = pdfDoc.ref(dict); // Write the reference to the PDF stream dictRef.end(); // Return the reference return fieldRef; });

Tendré que agregar algo de lógica y manejo de errores (en caso de que no haya campos para bloquear), pero funciona. Lo he probado con múltiples firmas que bloquean diferentes campos y múltiples firmas que bloquean los mismos campos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda