VintaSoft Imaging .NET SDK v8.7
Vintasoft.Imaging.Pdf.Tree Namespace / PdfPage Class / Render Method / Render(RectangleF,Single,EventHandler<ProgressEventArgs>,EventHandler<IntermediateImageRequestEventArgs>) Method
Rectangle of source image.
Scale factor.
An image rendering progress delegate.
Delegate for requesting intermediate image. Can be set to null (Nothing in Visual Basic)
Example



In This Topic
    Render(RectangleF,Single,EventHandler<ProgressEventArgs>,EventHandler<IntermediateImageRequestEventArgs>) Method
    In This Topic
    Renders specified rectangle of PDF page with specified scale.
    Syntax

    Parameters

    rect
    Rectangle of source image.
    scale
    Scale factor.
    renderingProgress
    An image rendering progress delegate.
    intermediateImageRequest
    Delegate for requesting intermediate image. Can be set to null (Nothing in Visual Basic)
    Example
    This example shows how to render a PDF page progressively.
    ''' <summary>
    ''' The timer for getting intermediate images.
    ''' </summary>
    Public _timer As New System.Diagnostics.Stopwatch()
                
    ''' <summary>
    ''' The index of intermediate image.
    ''' </summary>
    Public _intermediateImageIndex As Integer = 0
                
    ''' <summary>
    ''' Time interval, in milliseconds, for getting intermediate image during rendering.
    ''' </summary>
    Public INTERMEDIATE_RENDER_IMAGE_INTERVAL As Integer = 300
                
                
                
    ''' <summary>
    ''' Gets the image of PDF page.
    ''' </summary>
    ''' <param name="page">The page of PDF document.</param>
    Public Function RenderPdfPageProgressively(page As Vintasoft.Imaging.Pdf.Tree.PdfPage) As Vintasoft.Imaging.VintasoftImage
    	_intermediateImageIndex = 0
    	' start timer
    	_timer.Start()
                
    	' render PDF page progressively
    	Dim image As Vintasoft.Imaging.VintasoftImage = page.Render(page.CropBox, 1F, Nothing, New System.EventHandler(Of Vintasoft.Imaging.ImageRendering.IntermediateImageRequestEventArgs)(AddressOf IntermediateImageRequest))
                
    	' stop timer
    	_timer.[Stop]()
                
    	' return the result image
    	Return image
    End Function
                
    ''' <summary>
    ''' Handler of event that occurs when intermediate image is ready and can be obtained.
    ''' </summary>
    Public Sub IntermediateImageRequest(sender As Object, e As Vintasoft.Imaging.ImageRendering.IntermediateImageRequestEventArgs)
    	' if intermediate image must be saved
    	If _timer.ElapsedMilliseconds >= INTERMEDIATE_RENDER_IMAGE_INTERVAL Then
    		' reset timer
    		_timer.Reset()
    		' set the delegate which invoked for obtaining the intermediate image
    		e.IntermediateImageCompleted = New Vintasoft.Imaging.ImageRendering.IntermediateImageCompletedDelegate(AddressOf IntermediateImageReady)
    		' start timer
    		_timer.Start()
    	End If
    End Sub
                
    ''' <summary>
    ''' Delegate that allows to obtain intermediate image.
    ''' </summary>
    Public Sub IntermediateImageReady(e As Vintasoft.Imaging.ImageRendering.IntermediateImageReadyEventArgs)
    	' increment counter of intermediate images
    	_intermediateImageIndex += 1
                
    	' clone the rendered image
    	Using image As Vintasoft.Imaging.VintasoftImage = DirectCast(e.Image.Clone(), Vintasoft.Imaging.VintasoftImage)
    		Dim filename As String = String.Format("IntermediateImage_{0}.bmp", _intermediateImageIndex.ToString("00"))
    		' save the intermediate image to a file
    		image.Save(filename)
    	End Using
    End Sub
    /// <summary>
    /// The timer for getting intermediate images.
    /// </summary>
    public System.Diagnostics.Stopwatch _timer = new System.Diagnostics.Stopwatch();
                
    /// <summary>
    /// The index of intermediate image.
    /// </summary>
    public int _intermediateImageIndex = 0;
                
    /// <summary>
    /// Time interval, in milliseconds, for getting intermediate image during rendering.
    /// </summary>
    public int INTERMEDIATE_RENDER_IMAGE_INTERVAL = 300;
                
                
                
    /// <summary>
    /// Gets the image of PDF page.
    /// </summary>
    /// <param name="page">The page of PDF document.</param>
    public Vintasoft.Imaging.VintasoftImage RenderPdfPageProgressively(
        Vintasoft.Imaging.Pdf.Tree.PdfPage page)
    {
        _intermediateImageIndex = 0;
        // start timer
        _timer.Start();
                
        // render PDF page progressively
        Vintasoft.Imaging.VintasoftImage image = page.Render(page.CropBox, 1.0f, null,
            new System.EventHandler<Vintasoft.Imaging.ImageRendering.IntermediateImageRequestEventArgs>(IntermediateImageRequest));
                
        // stop timer
        _timer.Stop();
                
        // return the result image
        return image;
    }
                
    /// <summary>
    /// Handler of event that occurs when intermediate image is ready and can be obtained.
    /// </summary>
    public void IntermediateImageRequest(object sender, Vintasoft.Imaging.ImageRendering.IntermediateImageRequestEventArgs e)
    {
        // if intermediate image must be saved
        if (_timer.ElapsedMilliseconds >= INTERMEDIATE_RENDER_IMAGE_INTERVAL)
        {
            // reset timer
            _timer.Reset();
            // set the delegate which invoked for obtaining the intermediate image
            e.IntermediateImageCompleted = 
                new Vintasoft.Imaging.ImageRendering.IntermediateImageCompletedDelegate(IntermediateImageReady);
            // start timer
            _timer.Start();
        }
    }
                
    /// <summary>
    /// Delegate that allows to obtain intermediate image.
    /// </summary>
    public void IntermediateImageReady(Vintasoft.Imaging.ImageRendering.IntermediateImageReadyEventArgs e)
    {
        // increment counter of intermediate images
        _intermediateImageIndex++;
                
        // clone the rendered image
        using (Vintasoft.Imaging.VintasoftImage image = 
            (Vintasoft.Imaging.VintasoftImage)e.Image.Clone())
        {
            string filename = string.Format("IntermediateImage_{0}.bmp", _intermediateImageIndex.ToString("00"));
            // save the intermediate image to a file
            image.Save(filename);
        }
    }
    Requirements

    Target Platforms: Windows 10, Windows 8, Windows 7, Windows Vista, Windows XP, Windows Server 2012, Windows Server 2008, Windows Server 2003

    See Also