GroupDocs.Signature provides PreviewOptions class to specify different options to manage document pages preview generation process. The feature also supports archives previewing.
Here are the steps to generate document preview with GroupDocs.Signature:
Create new instance of Signature class and pass source document path as a constructor parameter.
delegate for each page stream creation (see event handler CreatePageStream);
image preview format - PNG / JPG / BMP,
page numbers to process;
custom size of preview images (if needed).
Note
Stream that were created by CreatePageStreamdelegate will be disposed automatically once after generation of preview image. If you need to implement custom image preview stream disposing you have to pass additional argument ReleaseStream to clean up resources.
defrelease_page_stream(page_data,page_stream):page_stream.close()image_name=f"image-{page_data.page_number}.jpg"image_file_path=os.path.join("GeneratePreviewFolder",image_name)print(f"Image file {image_file_path} is ready for preview")
Generate document preview from stream with custom stream releasing delegate
importosimportgroupdocs.signatureassignaturedefget_preview():withopen("sample.pdf","rb")asstream:withsignature.Signature(stream)assign:# create preview options objectpreview_option=signature.PreviewOptions(create_page_stream,release_page_stream)preview_option.preview_format=signature.PreviewOptions.PreviewFormats.JPEG# generate previewsign.generate_preview(preview_option)defcreate_page_stream(page_data):image_name=f"image-{page_data.page_number}.jpg"image_file_path=os.path.join("GeneratePreviewFolder",image_name)folder=os.path.dirname(image_file_path)ifnotos.path.exists(folder):os.makedirs(folder)returnopen(image_file_path,"wb")defrelease_page_stream(page_data,page_stream):page_stream.close()image_name=f"image-{page_data.page_number}.jpg"image_file_path=os.path.join("GeneratePreviewFolder",image_name)print(f"Image file {image_file_path} is ready for preview")
Creating a document preview with custom Resolution
importosimportgroupdocs.signatureassignature# The path to the documentsfile_path="sample.pdf"withsignature.Signature(file_path)assign:resolution=96# create preview options object# You can reuse create_page_stream and release_page_stream methods from the previous examplepreview_option=signature.PreviewOptions(create_page_stream,release_page_stream,resolution)preview_option.preview_format=signature.PreviewOptions.PreviewFormats.JPEG# generate previewsign.generate_preview(preview_option)
More resources
GitHub Examples
You may easily run the code above and see the feature in action in our GitHub examples: