Generate document pages preview

Overview

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.
  • Instantiate the PreviewOptions object with:
  • 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 CreatePageStream delegate 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.
  • Call GeneratePreview method of Signature class instance and pass PreviewOptions to it.

CreatePageStream delegate implementation

GroupDocs.Signature expects CreatePageStream delegate to obtain each page stream for image preview generation process

private static Stream CreatePageStream(PreviewPageData pageData)
{
    string imageName = "image-" + pageData.PageNumber + ".jpg";
    string imageFilePath = Path.Combine("GeneratePreviewFolder", imageName);
    string folder = Path.GetDirectoryName(imageFilePath);
    if(!Directory.Exists(folder))
    {
        Directory.CreateDirectory(folder);
    }
    return new System.IO.FileStream(imageFilePath, FileMode.Create);
}

ReleasePageStream delegate implementation

private static void ReleasePageStream(PreviewPageData pageData, Stream pageStream)
{
     pageStream.Dispose();
     string imageName = "image-" + pageData.PageNumber + ".jpg";
     string imageFilePath = Path.Combine("GeneratePreviewFolder", imageName);
     Console.WriteLine("Image file {0} is ready for preview", imageFilePath);
}

Generate document preview from file on local disk

public static void GetPreview()
{
    using (Signature signature = new Signature("sample.pdf"))
    {
        // create preview options object
        PreviewOptions previewOption = new PreviewOptions(GeneratePreview.CreatePageStream)
        {
            PreviewFormat = PreviewOptions.PreviewFormats.JPEG,
        };
        // generate preview
        signature.GeneratePreview(previewOption);
    }
}

private static Stream CreatePageStream(PreviewPageData pageData)
{
    string imageName = "image-" + pageData.PageNumber + ".jpg";
    string imageFilePath = Path.Combine("GeneratePreviewFolder", imageName);
    var folder = Path.GetDirectoryName(imageFilePath);
    if(!Directory.Exists(folder))
    {
        Directory.CreateDirectory(folder);
    }
    return new System.IO.FileStream(imageFilePath, FileMode.Create);
}

Generate document preview from stream with custom stream releasing delegate

public static void GetPreview()
{
  using (var stream = File.OpenRead("sample.pdf"))
  {
    using (Signature signature = new Signature("sample.pdf"))
    {
        // create preview options object
        PreviewOptions previewOption = new PreviewOptions(GeneratePreview.CreatePageStream)
        {
            PreviewFormat = PreviewOptions.PreviewFormats.JPEG,
        };
        // generate preview
        signature.GeneratePreview(previewOption);
    }
  }
}

private static Stream CreatePageStream(PreviewPageData pageData)
{
    string imageName = "image-" + pageData.PageNumber + ".jpg";
    string imageFilePath = Path.Combine("GeneratePreviewFolder", imageName);
    var folder = Path.GetDirectoryName(imageFilePath);
    if(!Directory.Exists(folder))
    {
        Directory.CreateDirectory(folder);
    }
    return new System.IO.FileStream(imageFilePath, FileMode.Create);
}

private static void ReleasePageStream(PreviewPageData pageData, Stream pageStream)
{        
    pageStream.Dispose();
    string imageName = "image-" + pageData.PageNumber + ".jpg";
    string imageFilePath = Path.Combine("GeneratePreviewFolder", imageName);
    Console.WriteLine("Image file {0} is ready for preview", imageFilePath);
}

Creating a document preview with custom Resolution

// The path to the documents
string filePath = "sample.pdf";
using (Signature signature = new Signature(filePath))
{
    int resolution = 96;
    // create preview options object
    // You can reuse CreatePageStream and ReleasePageStream methods from the previous example
    PreviewOptions previewOption = new PreviewOptions(CreatePageStream, ReleasePageStream, resolution)
    {
        PreviewFormat = PreviewOptions.PreviewFormats.JPEG
    };
    // generate preview
    signature.GeneratePreview(previewOption);
}

Advanced Usage Topics

To learn more about document eSign features, please refer to the advanced usage section.

More resources

GitHub Examples

You may easily run the code above and see the feature in action in our GitHub examples:

Free Online Apps

Along with the full-featured .NET library, we provide simple but powerful free online apps.

To sign PDF, Word, Excel, PowerPoint, and other documents you can use the online apps from the GroupDocs.Signature App Product Family.