GroupDocs.Signature for Python via .NET provides functionality to manipulate barcode signatures’ location and size.
Please note that the update method modifies the same document that was passed to the constructor of the Signature class, so the example below copies the signed document first and updates the copy.
Here are the steps to update a Barcode signature in a document with GroupDocs.Signature:
Create a new instance of the Signature class and pass the source document path as a constructor parameter
Call the search method; the signatures property of the returned SearchResult holds the found barcode signatures
Select from the list the BarcodeSignature object(s) that should be updated and change their position or size
Call the Signature object’s update method and pass one or several signatures to it; for a single signature it returns True when the signature was updated
This example shows how to update a Barcode signature that was found using the search method:
importshutilfromgroupdocs.signatureimportSignaturefromgroupdocs.signature.optionsimportBarcodeSearchOptionsdefupdate_barcode_signature():# update() saves the changes into the opened document, so work on a copyshutil.copy("signed.docx","updated_barcode_signature.docx")withSignature("updated_barcode_signature.docx")assignature:options=BarcodeSearchOptions()# Return only signatures added by GroupDocs.Signature, not barcodes that are part of the documentoptions.skip_external=Truesignatures=signature.search([options]).signaturesprint(f"Found {len(signatures)} barcode signature(s)")ifnotsignatures:returnbarcode_signature=signatures[0]# Change the positionbarcode_signature.left=60barcode_signature.top=700# Change the size. Not all document formats support resizing a signaturebarcode_signature.width=320barcode_signature.height=80ifsignature.update(barcode_signature):print(f"Barcode '{barcode_signature.text}' ({barcode_signature.encode_type.type_name}) "f"moved to ({barcode_signature.left}, {barcode_signature.top}) "f"and resized to {barcode_signature.width}x{barcode_signature.height}")else:print(f"Barcode '{barcode_signature.text}' was not updated")if__name__=="__main__":update_barcode_signature()
signed.docx is the sample file used in this example. Click here to download it.