图章签名允许电子签名 PDF 文档,就像我们在纸质文档上使用橡皮签名图章一样。我们可以在云上以编程方式使用自定义图章签名对 PDF 文档进行签名。在本文中,我们将学习如何使用 Node.js 中的 REST API 使用图章签名对 PDF 文档进行签名。
本文应涵盖以下主题:
PDF 签名 REST API 和 Node.js SDK
为了签署 PDF 文档,我们将使用 GroupDocs.Signature Cloud 的 Node.js SDK API。它使我们能够创建、验证和搜索各种类型的签名,例如图像、条形码、二维码、基于文本的签名、数字签名和图章签名。请在控制台中使用以下命令安装它:
npm install groupdocs-signature-cloud
在执行上述步骤之前,请从仪表板获取您的客户端 ID 和密码。获得 ID 和密码后,添加如下所示的代码:
// 此代码示例演示如何在代码中添加您的客户端 ID 和密码。
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";
在 Node.js 中使用 REST API 签署 PDF 文档
我们可以按照下面给出的简单步骤在云上签署 PDF 文档:
- 上传文件到云端
- 使用图章签名签署 PDF 文档
- 下载签名文件
上传文件
首先,我们将使用下面给出的代码示例将 PDF 文档上传到云端:
// 此代码示例演示如何将 PDF 文件上传到云端。
// 从本地/光盘打开 IOStream 中的文件。
var resourcesFolder = 'C:\\Files\\Signature\\sample.pdf';
fs.readFile(resourcesFolder, (err, fileStream) => {
// 构造FileApi
var fileApi = groupdocs_signature_cloud.FileApi.fromConfig(config);
// 上传文件
var request = new groupdocs_signature_cloud.UploadFileRequest("sample.pdf", fileStream, myStorage);
fileApi.uploadFile(request);
});
因此,上传的 PDF 文件将在云端仪表板的 文件部分 中可用。
使用 Node.js 签署带有图章签名的 PDF 文档
我们可以按照以下给出的步骤以编程方式对带有图章签名的 PDF 文件进行签名:
- 创建 SignApi 的实例。
- 提供上传的 PDF 文件路径。
- 初始化 SignDigitalOptions 对象并设置各种属性。
- 使用 StampLine 对象定义图章文本。
- 将输入文件、SignDigitalOptions 和 SaveOptions 分配给 SignSettings 对象。
- 最后,使用 SignApi.createSignatures() 方法对 PDF 进行签名。
以下代码示例展示了如何使用 Node.js 中的 REST API 使用图章签名对 PDF 文档进行签名。
// 此代码示例演示如何使用图章签名对 PDF 文档进行签名。
// 创建 API 实例
let signApi = groupdocs_signature_cloud.SignApi.fromKeys(clientId, clientSecret);
// 输入文件路径
let fileInfo = new groupdocs_signature_cloud.FileInfo();
fileInfo.filePath = "sample.pdf";
// 定义签名戳选项
let opts = new groupdocs_signature_cloud.SignStampOptions();
opts.signatureType = groupdocs_signature_cloud.OptionsBase.SignatureTypeEnum.Stamp;
// 在页面上设置图章位置和大小
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;
// 添加填充
opts.margin = new groupdocs_signature_cloud.Padding();
opts.margin.all = 5;
opts.marginMeasureType = groupdocs_signature_cloud.SignTextOptions.MarginMeasureTypeEnum.Pixels;
// 设置图章外观
opts.background颜色 = new groupdocs_signature_cloud.颜色();
opts.background颜色.web = "DarkOrange";
opts.background颜色CropType = groupdocs_signature_cloud.SignStampOptions.Background颜色CropTypeEnum.OuterArea;
opts.backgroundImageCropType = groupdocs_signature_cloud.SignStampOptions.BackgroundImageCropTypeEnum.InnerArea;
// 定义第一个大纲文本外观
let outline1 = new groupdocs_signature_cloud.StampLine();
outline1.text = " * Electronically Signed by GroupDocs.Signature * ";
// 字体
outline1.font = new groupdocs_signature_cloud.Signature字体();
outline1.font.fontFamily = "Arial";
outline1.font.fontSize = 11;
outline1.font.bold = true;
outline1.textBottomIntent = 6;
// 颜色
outline1.text颜色 = new groupdocs_signature_cloud.颜色();
outline1.text颜色.web = "WhiteSmoke";
outline1.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.FullTextRepeat;
// 背景颜色
outline1.background颜色 = new groupdocs_signature_cloud.颜色();
outline1.background颜色.web = "DarkSlateBlue";
outline1.height = 22;
outline1.visible = true;
// 定义第二个大纲文本外观
let outline2 = new groupdocs_signature_cloud.StampLine();
outline2.height = 2;
outline2.background颜色 = new groupdocs_signature_cloud.颜色();
outline2.background颜色.web = "White";
outline2.visible = true;
// 定义第三大纲文本外观
let outline3 = new groupdocs_signature_cloud.StampLine();
outline3.text = " * GroupDocs.Signature * ";
// 字体
outline3.font = new groupdocs_signature_cloud.Signature字体();
outline3.font.fontFamily = "Arial";
outline3.font.fontSize = 16;
outline3.textBottomIntent = 8;
outline3.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.FullTextRepeat;
// 颜色
outline3.text颜色 = new groupdocs_signature_cloud.颜色();
outline3.text颜色.web = "DarkSlateBlue";
// 背景颜色
outline3.background颜色 = new groupdocs_signature_cloud.颜色();
outline3.background颜色.web = "White";
outline3.height = 30;
// 内边框
outline3.innerBorder = new groupdocs_signature_cloud.BorderLine();
outline3.innerBorder.color = new groupdocs_signature_cloud.颜色();
outline3.innerBorder.color.web = "DarkSlateBlue";
outline3.innerBorder.style = groupdocs_signature_cloud.BorderLine.StyleEnum.Dot;
outline3.innerBorder.weight = 1.2;
// 外边框
outline3.outerBorder = new groupdocs_signature_cloud.BorderLine();
outline3.outerBorder.color = new groupdocs_signature_cloud.颜色();
outline3.outerBorder.color.web = "DarkSlateBlue";
outline3.outerBorder.weight = 1.4;
outline3.visible = true;
opts.outerLines = [outline1, outline2, outline3];
// 定义第一个内联文本
let innerline = new groupdocs_signature_cloud.StampLine();
innerline.text = "GroupDocs";
innerline.font = new groupdocs_signature_cloud.Signature字体();
innerline.font.fontFamily = "Times New Roman";
innerline.font.fontSize = 20;
innerline.font.bold = true;
innerline.text颜色 = new groupdocs_signature_cloud.颜色();
innerline.text颜色.web = "MediumVioletRed";
innerline.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.None;
innerline.height = 40;
innerline.visible = true;
// 定义第二个内联文本
let innerline2 = new groupdocs_signature_cloud.StampLine();
innerline2.text = "Signature";
innerline2.font = new groupdocs_signature_cloud.Signature字体();
innerline2.font.fontSize = 20;
innerline2.font.bold = true;
innerline2.text颜色 = new groupdocs_signature_cloud.颜色();
innerline2.text颜色.web = "MediumVioletRed";
innerline2.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.None;
innerline2.height = 40;
innerline2.visible = true;
// 定义第三个内联文本
let innerline3 = new groupdocs_signature_cloud.StampLine();
innerline3.text = "Cloud";
innerline3.font = new groupdocs_signature_cloud.Signature字体();
innerline3.font.fontSize = 20;
innerline3.font.bold = true;
innerline3.text颜色 = new groupdocs_signature_cloud.颜色();
innerline3.text颜色.web = "MediumVioletRed";
innerline3.textRepeatType = groupdocs_signature_cloud.StampLine.TextRepeatTypeEnum.None;
innerline3.height = 40;
innerline3.visible = true;
opts.innerLines = [innerline, innerline2, innerline3];
// 页面没有显示邮票的地方
opts.page = 1;
// 定义签名设置
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";
// 创建签名请求
let request = new groupdocs_signature_cloud.CreateSignaturesRequest(settings);
// 创建签名
let response = await signApi.createSignatures(request);
console.log("Output file link: " + response.downloadUrl);
下载签名文件
上面的代码示例将签名的 PDF 文件保存在云端。可以使用以下代码示例下载它:
// 此代码示例演示如何从云端下载已签名的 PDF。
// 构造FileApi
var fileApi = groupdocs_signature_cloud.FileApi.fromConfig(config);
// 下载文件
let request = new groupdocs_signature_cloud.DownloadFileRequest("signedStamp_One_page.pdf", myStorage);
let response = await fileApi.downloadFile(request);
// 移动到工作文件夹
fs.writeFile("C:\\Files\\Signature\\signedStamp_One_page.pdf", response, "binary", function (err) { });
在线试用
请试用以下使用上述API开发的免费在线文档签名工具。 https://products.groupdocs.app/signature/
结论
在本文中,我们了解到:
- 如何使用图章签名签署 PDF 文档;
- 上传PDF文件到云端;
- 如何从云端下载签名的 PDF 文件。
此外,您可以使用 文档 了解有关 GroupDocs.Signature Cloud API 的更多信息。我们还提供了一个 API 参考 部分,让您可以直接通过浏览器可视化我们的 API 并与之交互。如有任何歧义,请随时在论坛上与我们联系。