Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

308
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!