스탬프 서명을 사용하면 종이 문서에 고무 서명 스탬프를 사용하는 것과 같은 방식으로 PDF 문서에 전자 서명할 수 있습니다. 클라우드에서 프로그래밍 방식으로 맞춤형 스탬프 서명으로 PDF 문서에 서명할 수 있습니다. 이 기사에서는 Node.js에서 REST API를 사용하여 스탬프 서명으로 PDF 문서에 서명하는 방법을 배웁니다.
이 문서에서는 다음 항목을 다룹니다.
PDF 서명 REST API 및 Node.js SDK
PDF 문서에 서명하기 위해 GroupDocs.Signature Cloud의 Node.js SDK API를 사용합니다. 이미지, 바코드, QR코드, 텍스트 기반, 디지털, 스탬프 서명 등 다양한 형태의 서명을 생성, 검증, 조회할 수 있습니다. 콘솔에서 다음 명령을 사용하여 설치하십시오.
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;
// 3차 아웃라인 텍스트 모양 정의
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 참조 섹션을 제공합니다. 모호한 점이 있으면 언제든지 포럼에 문의해 주십시오.