addSignature method

Adds a signature to the document using the given request.

Implementation

Future<PdfSignatureRequest> addSignature(PdfSignatureRequest request) async {
  _ensureNotDisposed();
  _validatePage(request.pageNumber);

  final page = pages[request.pageNumber - 1];
  final bounds = request.bounds.toPdfRect(page);

  final field = PdfSignatureField.bounds(
    pageNumber: request.pageNumber,
    fieldName: request.fieldName,
    bounds: bounds,
    drawAppearance: _resolveAppearanceDrawer(
      request: request,
      page: page,
    ),
  );

  final signature = PdfSignatureConfig(
    name: request.name,
    reason: request.reason,
    location: request.location,
    contactInfo: request.contactInfo,
    signingTime: request.signingTime,
  );
  if (request.docMdpPermissionP != null) {
    signature.docMdpPermissionP = request.docMdpPermissionP;
  }

  final service = PdfSignatureService();
  _bytes = await service.signBytes(
    inputBytes: _bytes,
    externalSigner: request.signer.externalSigner,
    field: field,
    signature: signature,
    appearance: request.appearance,
    timestampProvider: request.timestampProvider,
    contentsReserveSize: request.contentsReserveSize,
    byteRangeDigits: request.byteRangeDigits,
  );

  _document = PdfDocument.parseFromBytes(_bytes);
  return request;
}