Firme PDF con Stamp usando REST API en Node.js

La firma de sello permite firmar electrónicamente documentos PDF de la misma forma que usamos un sello de firma de goma en un documento en papel. Podemos firmar documentos PDF con una firma de sello personalizada mediante programación en la nube. En este artículo, aprenderemos cómo firmar documentos PDF con firmas de sello utilizando una API REST en Node.js.

En este artículo se tratarán los siguientes temas:

API REST de firma de PDF y SDK de Node.js

Para firmar documentos PDF, utilizaremos la API Node.js SDK de GroupDocs.Signature Cloud. Nos permite crear, verificar y buscar varios tipos de firmas, como imágenes, códigos de barras, códigos QR, firmas basadas en texto, digitales y de sellos. Instálalo usando el siguiente comando en la consola:

npm install groupdocs-signature-cloud

Por favor, obtenga su ID de cliente y secreto del tablero antes de seguir los pasos mencionados. Una vez que tenga su ID y secreto, agregue el código como se muestra a continuación:

// Este ejemplo de código demuestra cómo agregar su ID de cliente y secreto en el código.
global.clientId = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
global.clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";
global.myStorage = "";

const config = new groupdocs_signature_cloud.Configuration(clientId, clientSecret);
config.apiBaseUrl = "https://api.groupdocs.cloud";

Firme documentos PDF utilizando una API REST en Node.js

Podemos firmar documentos PDF en la nube siguiendo los sencillos pasos que se indican a continuación:

Sube el documento

En primer lugar, subiremos el documento PDF a la nube utilizando el ejemplo de código que se muestra a continuación:

// Este ejemplo de código demuestra cómo cargar un archivo PDF en la nube.
// Abra el archivo en IOStream desde local/disco.
var resourcesFolder = 'C:\\Files\\Signature\\sample.pdf';
fs.readFile(resourcesFolder, (err, fileStream) => {
  // Construir FileApi
  var fileApi = groupdocs_signature_cloud.FileApi.fromConfig(config);
  // Subir archivo
  var request = new groupdocs_signature_cloud.UploadFileRequest("sample.pdf", fileStream, myStorage);
  fileApi.uploadFile(request);
});

Como resultado, el archivo PDF cargado estará disponible en la sección de archivos del tablero en la nube.

Firme documentos PDF con firmas de sello usando Node.js

Podemos firmar archivos PDF con firmas de sellos mediante programación siguiendo los pasos que se detallan a continuación:

  • Cree una instancia de SignApi.
  • Proporcione la ruta del archivo PDF cargado.
  • Inicialice el objeto SignDigitalOptions y establezca varias propiedades.
  • Defina el texto del sello utilizando objetos StampLine.
  • Asigne el archivo de entrada, SignDigitalOptions y SaveOptions al objeto SignSettings.
  • Finalmente, firme el PDF usando el método SignApi.createSignatures().

El siguiente ejemplo de código muestra cómo firmar un documento PDF con firmas de sellos mediante una API REST en Node.js.

// Este ejemplo de código demuestra cómo firmar un documento PDF con firmas de sellos.
// Crear una instancia de la API
let signApi = groupdocs_signature_cloud.SignApi.fromKeys(clientId, clientSecret);

// Ruta del archivo de entrada
let fileInfo = new groupdocs_signature_cloud.FileInfo();
fileInfo.filePath = "sample.pdf";

// Definir opciones de sello de signo
let opts = new groupdocs_signature_cloud.SignStampOptions();
opts.signatureType = groupdocs_signature_cloud.OptionsBase.SignatureTypeEnum.Stamp;

// Establecer la posición y el tamaño del sello en una página
opts.left = 200;
opts.top = 400;
opts.width = 300;
opts.height = 300;
opts.locationMeasureType = groupdocs_signature_cloud.SignTextOptions.LocationMeasureTypeEnum.Pixels;
opts.sizeMeasureType = groupdocs_signature_cloud.SignTextOptions.SizeMeasureTypeEnum.Pixels;
opts.rotationAngle = 0;
opts.horizontalAlignment = groupdocs_signature_cloud.SignTextOptions.HorizontalAlignmentEnum.None;
opts.verticalAlignment = groupdocs_signature_cloud.SignTextOptions.VerticalAlignmentEnum.None;

// Añadir relleno
opts.margin = new groupdocs_signature_cloud.Padding();
opts.margin.all = 5;
opts.marginMeasureType = groupdocs_signature_cloud.SignTextOptions.MarginMeasureTypeEnum.Pixels;

// Establecer la apariencia del sello
opts.backgroundColor = new groupdocs_signature_cloud.Color();
opts.backgroundColor.web = "DarkOrange";
opts.backgroundColorCropType = groupdocs_signature_cloud.SignStampOptions.BackgroundColorCropTypeEnum.OuterArea;
opts.backgroundImageCropType = groupdocs_signature_cloud.SignStampOptions.BackgroundImageCropTypeEnum.InnerArea;

// Definir la apariencia del texto del primer contorno
let outline1 = new groupdocs_signature_cloud.StampLine();
outline1.text = " * Electronically Signed by GroupDocs.Signature * ";
// Fuente
outline1.font = new groupdocs_signature_cloud.SignatureFuente();
outline1.font.fontFamily = "Arial";
outline1.font.fontSize = 11;
outline1.font.bold = true;
outline1.textBottomIntent = 6;
// Color
outline1.textColor = new groupdocs_signature_cloud.Color();
outline1.textColor.web = "WhiteSmoke";
outline1.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.FullTextRepeat;
// Color de fondo
outline1.backgroundColor = new groupdocs_signature_cloud.Color();
outline1.backgroundColor.web = "DarkSlateBlue";
outline1.height = 22;
outline1.visible = true;

// Definir la apariencia del texto del segundo contorno
let outline2 = new groupdocs_signature_cloud.StampLine();
outline2.height = 2;
outline2.backgroundColor = new groupdocs_signature_cloud.Color();
outline2.backgroundColor.web = "White";
outline2.visible = true;

// Definir la apariencia del texto del tercer contorno
let outline3 = new groupdocs_signature_cloud.StampLine();
outline3.text = " * GroupDocs.Signature * ";
// Fuente
outline3.font = new groupdocs_signature_cloud.SignatureFuente();
outline3.font.fontFamily = "Arial";
outline3.font.fontSize = 16;
outline3.textBottomIntent = 8;
outline3.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.FullTextRepeat;
// Color
outline3.textColor = new groupdocs_signature_cloud.Color();
outline3.textColor.web = "DarkSlateBlue";
// Color de fondo
outline3.backgroundColor = new groupdocs_signature_cloud.Color();
outline3.backgroundColor.web = "White";
outline3.height = 30;
// Borde interior
outline3.innerBorder = new groupdocs_signature_cloud.BorderLine();
outline3.innerBorder.color = new groupdocs_signature_cloud.Color();
outline3.innerBorder.color.web = "DarkSlateBlue";
outline3.innerBorder.style = groupdocs_signature_cloud.BorderLine.StyleEnum.Dot;
outline3.innerBorder.weight = 1.2;
// Borde exterior
outline3.outerBorder = new groupdocs_signature_cloud.BorderLine();
outline3.outerBorder.color = new groupdocs_signature_cloud.Color();
outline3.outerBorder.color.web = "DarkSlateBlue";
outline3.outerBorder.weight = 1.4;
outline3.visible = true;

opts.outerLines = [outline1, outline2, outline3];

// Definir el primer texto en línea
let innerline = new groupdocs_signature_cloud.StampLine();
innerline.text = "GroupDocs";

innerline.font = new groupdocs_signature_cloud.SignatureFuente();
innerline.font.fontFamily = "Times New Roman";
innerline.font.fontSize = 20;
innerline.font.bold = true;
innerline.textColor = new groupdocs_signature_cloud.Color();
innerline.textColor.web = "MediumVioletRed";
innerline.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.None;
innerline.height = 40;
innerline.visible = true;

// Definir segundo texto en línea
let innerline2 = new groupdocs_signature_cloud.StampLine();
innerline2.text = "Signature";

innerline2.font = new groupdocs_signature_cloud.SignatureFuente();
innerline2.font.fontSize = 20;
innerline2.font.bold = true;
innerline2.textColor = new groupdocs_signature_cloud.Color();
innerline2.textColor.web = "MediumVioletRed";
innerline2.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.None;
innerline2.height = 40;
innerline2.visible = true;

// Definir el tercer texto en línea
let innerline3 = new groupdocs_signature_cloud.StampLine();
innerline3.text = "Cloud";

innerline3.font = new groupdocs_signature_cloud.SignatureFuente();
innerline3.font.fontSize = 20;
innerline3.font.bold = true;
innerline3.textColor = new groupdocs_signature_cloud.Color();
innerline3.textColor.web = "MediumVioletRed";
innerline3.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.None;
innerline3.height = 40;
innerline3.visible = true;

opts.innerLines = [innerline, innerline2, innerline3];

// Página sin donde mostrar el sello
opts.page = 1;

// Definir la configuración de la señal
let settings = new groupdocs_signature_cloud.SignSettings();
settings.fileInfo = fileInfo;
settings.options = [opts];
settings.saveOptions = new groupdocs_signature_cloud.SaveOptions();
settings.saveOptions.outputFilePath = "signedStamp_One_page.pdf";

// Crear solicitud de firma
let request = new groupdocs_signature_cloud.CreateSignaturesRequest(settings);
// Crear firmas
let response = await signApi.createSignatures(request);
console.log("Output file link: " + response.downloadUrl);
Firme documentos PDF con firmas de sellos usando Node.js.

Firme documentos PDF con firmas de sellos usando Node.js.

Descargar el archivo firmado

El ejemplo de código anterior guardará el archivo PDF firmado en la nube. Se puede descargar usando el siguiente ejemplo de código:

// Este ejemplo de código demuestra cómo descargar un PDF firmado desde la nube.
// Construir FileApi
var fileApi = groupdocs_signature_cloud.FileApi.fromConfig(config);

// Descargar archivo
let request = new groupdocs_signature_cloud.DownloadFileRequest("signedStamp_One_page.pdf", myStorage);
let response = await fileApi.downloadFile(request);

// Mover a la carpeta de trabajo
fs.writeFile("C:\\Files\\Signature\\signedStamp_One_page.pdf", response, "binary", function (err) { });

Prueba en línea

Pruebe la siguiente herramienta gratuita de firma de documentos en línea, que se desarrolla utilizando la API anterior. https://products.groupdocs.app/signature/

Conclusión

En este artículo hemos aprendido:

  • cómo firmar documentos PDF con firmas de sellos;
  • subir archivo PDF a la nube;
  • cómo descargar un archivo PDF firmado desde la nube.

Además, puede obtener más información sobre GroupDocs.Signature Cloud API utilizando la documentación. También proporcionamos una sección Referencia de API que le permite visualizar e interactuar con nuestras API directamente a través del navegador. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.

Ver también