Ir al contenido

Firma con posiciones personalizadas (CUSTOM)

Además de las posiciones automáticas (UPPER_RIGHT, UPPER_LEFT, LOWER_RIGHT, LOWER_LEFT), Verificamex permite que cada firmante coloque su firma en coordenadas exactas del PDF mediante el valor CUSTOM de sign_position. Esto es lo que usa nuestra propia app web en su editor visual de firma (“Firma Beta”), donde el usuario arrastra el recuadro de firma sobre el documento.


  1. Al crear el documento, define sign_position: "CUSTOM" a nivel del documento.

  2. Por cada firmante en el arreglo signatures, agrega el campo positions con la(s) coordenada(s) donde deseas que aparezca su firma.

  3. Sube el PDF normalmente en el paso de subir documento.


positions es un arreglo de objetos, uno por cada lugar del documento donde ese firmante estampará su firma.

CampoTipoRequeridoDefaultDescripción
pos_xfloatNo100Distancia desde el borde izquierdo de la página, en puntos PDF.
pos_yfloatNo100Distancia desde el borde superior de la página, en puntos PDF.
widthfloatNo140Ancho del recuadro de firma, en puntos PDF.
heightfloatNo80Alto del recuadro de firma, en puntos PDF.
pageintegerNo1Página donde se coloca la firma. Base 1 (la primera página es 1, no 0).
rotationintegerNo0Rotación del recuadro de firma en grados. Valores soportados: 0, 90, 180, 270.

  • Origen: esquina superior izquierda de la página (igual que un canvas o visor tipo PDF.js), no la esquina inferior izquierda que usa el estándar PDF internamente. La conversión la hace el backend por ti.
  • Unidades: puntos PDF (1 punto = 1/72 pulgada) — el mismo tamaño real de la página, no píxeles de pantalla ni porcentajes. Por ejemplo, una página carta mide aproximadamente 612 x 792 puntos.
  • El recuadro de firma se dibuja desde (pos_x, pos_y) extendiéndose width puntos a la derecha y height puntos hacia abajo.

Un mismo firmante puede estampar su firma en más de un lugar del documento (por ejemplo, en varias páginas de un contrato) enviando más de un objeto en positions:

"positions": "[{\"pos_x\":100,\"pos_y\":700,\"width\":140,\"height\":80,\"page\":1,\"rotation\":0},{\"pos_x\":100,\"pos_y\":700,\"width\":140,\"height\":80,\"page\":3,\"rotation\":0}]"

ValorDescripción
0Sin rotación (default).
90Rotación 90° en sentido horario.
180Firma invertida 180°.
270Rotación 90° en sentido antihorario.

CUSTOM no valida ni rechaza la petición si algo falta: si un firmante no incluye positions, o el JSON enviado no es válido, el sistema no genera un error — simplemente coloca esa firma con los valores default (pos_x=100, pos_y=100, width=140, height=80) en la última página del documento. Del mismo modo, no se valida que las coordenadas quepan dentro de la página.

Recomendación: valida en tu propia integración, antes de enviar la petición, que:

  • pos_x + width y pos_y + height no excedan el tamaño real de esa página.
  • page sea un número entre 1 y el total de páginas del PDF.

Esto evita firmas que terminan fuera del área visible o en una página inesperada.


{
"company_id": "ac110005-9ae6-1318-819a-fc564ae00125",
"tries": 3,
"remember_every": 3,
"remember_at": "16:54:00",
"sign_mode": "PDF_SIGNATURE",
"sign_position": "CUSTOM",
"mode_logo": "FULL_BRANDING",
"notification_mode": "ENABLED",
"sign_ordered": "INACTIVE",
"config": {
"identity_providers": ["LOCAL", "VERIFICAMEX"],
"allow_type_signatures": ["VERIFICAMEX", "EFIRMA"]
},
"signatures": [
{
"name": "Juan Perez",
"email": "juanperez@gmail.com",
"positions": "[{\"pos_x\":120,\"pos_y\":650,\"width\":180,\"height\":70,\"page\":1,\"rotation\":0}]"
}
],
"spectators": [],
"webhook": "https://webhook.site/my-webhook"
}

Con el uuid de la respuesta, continúa con Subir un documento para cargar el PDF y activar el proceso de firma.


Actualizar posiciones de firmantes existentes

Sección titulada «Actualizar posiciones de firmantes existentes»

El campo positions también está disponible al actualizar firmantes de un documento ya creado (PATCH /v1/documents/{uuid}), con el mismo formato de string JSON descrito arriba.