Licensing and evaluation
To explore the system effectively, you may want immediate access to the API. GroupDocs.Annotation simplifies this by offering various purchase plans, along with an evaluation mode and a 30-day Temporary License for evaluation.
To learn more about licensing options, purchasing, and evaluation policies, refer to the Purchase Policies and FAQ section.
Purchased License
After purchasing GroupDocs.Annotation for Python via .NET, you will receive a license file that unlocks the full functionality of the API. A few rules apply:
- Apply the license only once per process, in your start-up code.
- Apply it before constructing any
Annotatoror other GroupDocs.Annotation object. - A license can be applied from a file path, from a binary stream (handy when the license is an embedded resource), or as a Metered License that bills by usage.
Use the set_license method to license the component. Calling it more than once is harmless — it simply wastes a little processor time.
Set a license from a file
The example below applies a license from a file path. It reads the path from the GROUPDOCS_LIC_PATH environment variable and falls back to a local GroupDocs.Annotation.lic file:
import os
from groupdocs.annotation import License
def set_license_from_file():
# Resolve the license path from the environment, with a local fallback
license_path = os.environ.get("GROUPDOCS_LIC_PATH", "./GroupDocs.Annotation.lic")
# Apply the license before using any annotation features
if os.path.exists(license_path):
License().set_license(license_path=license_path)
print("License set successfully.")
else:
print("License file not found. Running in evaluation mode.")
if __name__ == "__main__":
set_license_from_file()
Set a license from a stream
You can also apply a license from any readable binary stream — useful when the license ships as an embedded resource:
import os
from groupdocs.annotation import License
def set_license_from_stream():
# Resolve the license path from the environment, with a local fallback
license_path = os.environ.get("GROUPDOCS_LIC_PATH", "./GroupDocs.Annotation.lic")
# Apply the license from an open binary stream
if os.path.exists(license_path):
with open(license_path, "rb") as license_stream:
License().set_license(license_stream=license_stream)
print("License set successfully from stream.")
else:
print("License file not found. Running in evaluation mode.")
if __name__ == "__main__":
set_license_from_stream()
Set a metered license
A Metered License lets you pay for what you use. Set the public and private keys with set_metered_key before using the API, then query consumption at any time:
import os
from groupdocs.annotation import Metered
def set_metered_license():
# Read the metered public and private keys from the environment
public_key = os.environ.get("GROUPDOCS_METERED_PUBLIC_KEY", "")
private_key = os.environ.get("GROUPDOCS_METERED_PRIVATE_KEY", "")
# Apply the metered keys before using any annotation features
if public_key and private_key:
metered = Metered()
metered.set_metered_key(public_key=public_key, private_key=private_key)
print("Metered license set successfully.")
# Query the current metered consumption
print(f"Consumption quantity: {Metered.get_consumption_quantity()}")
print(f"Consumption credit: {Metered.get_consumption_credit()}")
else:
print("Metered keys not provided. Running in evaluation mode.")
if __name__ == "__main__":
set_metered_license()
Changing the license file name
You are not required to keep the license file name as GroupDocs.Annotation.lic. You can rename it to any preferred name and use that name when applying the license in your application.
“Cannot find license filename” exception
When you download the license from the GroupDocs website it is saved as GroupDocs.Annotation.lic. However, some web browsers may automatically append .xml, resulting in GroupDocs.Annotation.lic.xml.
If your Windows settings are configured to hide file extensions (the default), the file may still appear as GroupDocs.Annotation.lic in File Explorer even though the actual name is GroupDocs.Annotation.lic.xml. This discrepancy can cause set_license to throw an exception. To fix it, manually rename the file to remove the .xml extension, or disable “Hide extensions for known file types” in Windows.
How to evaluate GroupDocs.Annotation
You can evaluate GroupDocs.Annotation for Python via .NET without purchasing a license. The evaluation version is identical to the purchased one; it becomes fully licensed once you set a license.
Evaluation mode
Without a license, GroupDocs.Annotation runs in evaluation mode:
- The API is fully functional — you can open documents, add, get, update, and remove annotations, and save the result. Every operation completes successfully and no exception is thrown.
- There is no limit on the number of documents you can open in a process and no cap on the number of annotations you can add. You can run as many
Annotatoroperations as you like, one after another, in the same process. - An evaluation watermark is added to the output document, so the saved file is slightly larger than a licensed one.
To remove the evaluation watermark, apply a purchased or temporary license as shown above.
Temporary License
To produce output without the evaluation watermark while you assess the full features of GroupDocs.Annotation, you can request a 30-day “Temporary License”.