New to Telerik UI for WPF? Download free 30-day trial

Loading a multipage Tiff file in a RadPdfViewer


Product Version 2019.2.618
Product RadPDFViewer for WPF


How to show a multipage Tiff file in the RadPdfViewer.


This functionality can be achieved by splitting the multipage TIFF file into single page ones. Then to insert them into a RadFixedDocument as a RadFixedPages content.

Example 1: Loading the TIFF file

private void LoadTiff(object sender, RoutedEventArgs e) 
    RadFixedDocument radFixedDocument = new RadFixedDocument(); 
    Stream[] tiffStreams = this.SplitTiff("SampleData/test.tiff"); 
    foreach (Stream tiffStream in tiffStreams) 
        RadFixedPage documentPage = new RadFixedPage(); 
        ImageSource imageSource = new ImageSource(tiffStream); 
    using (Stream documentStream = new MemoryStream()) 
        PdfFormatProvider pdfFormatProvider = new PdfFormatProvider(); 
        pdfFormatProvider.Export(radFixedDocument, documentStream); 
        RadFixedDocument document = new PdfFormatProvider(documentStream).Import(); 
        this.pdfViewer.Document = document; 

Example 2: Splitting the TIFF file

private Stream[] SplitTiff(string inputFilePath) 
    //Get the frame dimension list from the image of the file and 
    System.Drawing.Image tiffImage = System.Drawing.Image.FromFile(inputFilePath); 
    //get the globally unique identifier (GUID) 
    Guid objGuid = tiffImage.FrameDimensionsList[0]; 
    //create the frame dimension 
    FrameDimension dimension = new FrameDimension(objGuid); 
    //Gets the total number of frames in the .tiff file 
    int noOfPages = tiffImage.GetFrameCount(dimension); 
    ImageCodecInfo encodeInfo = null; 
    ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders(); 
    for (int j = 0; j < imageEncoders.Length; j++) 
        if (imageEncoders[j].MimeType == "image/tiff") 
            encodeInfo = imageEncoders[j]; 
    Stream[] tiffStreams = new Stream[noOfPages]; 
    foreach (Guid guid in tiffImage.FrameDimensionsList) 
        for (int index = 0; index < noOfPages; index++) 
            FrameDimension currentFrame = new FrameDimension(guid); 
            tiffImage.SelectActiveFrame(currentFrame, index); 
            Stream tiffStream = new MemoryStream(); 
            tiffImage.Save(tiffStream, ImageFormat.Tiff); 
            tiffStreams[index] = tiffStream; 
    return tiffStreams; 


There is a request to create a new TIFF Viewer Control. Make sure to cast your vote for it as this directly affects its priority: New Control: TIFF Viewer.

In this article