VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
Vintasoft.Imaging Namespace / DocumentConverter Class
    Класс DocumentConverter
    В этом разделе
    Определяет конвертер документов, который обеспечивает оптимальный многопоточный алгоритм для преобразования коллекции изображений в BMP, GIF, JBIG2, JPEG, JPEG2000, PBM, PCX, PDF, PNG, SVG, TIFF, BigTIFF,Формат TGA или WEBP.
    Объектная модель
    ImageCollection IActionProgressController DocumentConverter
    Синтаксис
    'Declaration
    
    Public Class DocumentConverter
    
    
    public class DocumentConverter
    
    
    public __gc class DocumentConverter
    
    
    public ref class DocumentConverter
    
    
    Ремарки

    Используйте событие ImageDecodingStarting для установки параметров рендеринга или декодирования входного изображения.
    Используйте событие ImageEncodingStarting для обработки вывода изображение перед кодированием или установите настройки кодировки выходного изображения.

    Пример

    Вот C#/VB.NET код, который демонстрирует, как преобразовать изображение документа:

    
    ''' <summary>
    ''' Converts a file from one format to another format.
    ''' </summary>
    ''' <param name="inFilename">The input filename.</param>
    ''' <param name="outFilename">The output filename.</param>
    Public Shared Sub Convert(inFilename As String, outFilename As String)
        ' create the document converter
        Using converter As New Vintasoft.Imaging.DocumentConverter()
            ' handle the ImageDecodingStarting event to set decoding setting of an input image
            AddHandler converter.ImageDecodingStarting, AddressOf Converter_ImageDecodingStarting
    
            ' handle the ImageEncodingStarting event to set encoding setting of an output image
            AddHandler converter.ImageEncodingStarting, AddressOf Converter_ImageEncodingStarting
    
            ' handle the conversion progress event
            AddHandler converter.ConversionProgress, AddressOf Converter_ConversionProgress
    
            ' allow multithreading
            converter.MaxThreads = System.Environment.ProcessorCount
    
            ' add input images to the document converter
            converter.Images.Add(inFilename)
    
            ' execute conversion
            converter.Convert(outFilename)
    
            ' clear resources
            converter.Images.ClearAndDisposeItems()
        End Using
    
        System.Console.WriteLine("Conversion is finished.")
    End Sub
    
    ''' <summary>
    ''' Handles the ConversionProgress event of the DocumentConverter.
    ''' </summary>
    ''' <param name="sender">The source of the event.</param>
    ''' <param name="e">The <see cref="Vintasoft.Imaging.ProgressEventArgs"/> instance containing the event data.</param>
    Private Shared Sub Converter_ConversionProgress(sender As Object, e As Vintasoft.Imaging.ProgressEventArgs)
        System.Console.WriteLine(String.Format("Conversion {0}%...", e.Progress))
    End Sub
    
    ''' <summary>
    ''' Handles the ImageDecodingStarting event of the DocumentConverter.
    ''' </summary>
    ''' <param name="sender">The source of the event.</param>
    ''' <param name="e">The <see cref="Vintasoft.Imaging.ImageDecodingStartingEventArgs"/> instance containing the event data.</param>
    Private Shared Sub Converter_ImageDecodingStarting(sender As Object, e As Vintasoft.Imaging.ImageDecodingStartingEventArgs)
        ' if input file is PDF document
        If e.Image.SourceInfo.DecoderName = "Pdf" Then
            ' set the rendring resolution to 150 DPI for input PDF documents
            e.RenderingSettings = New Vintasoft.Imaging.Codecs.Decoders.RenderingSettings(New Vintasoft.Imaging.Resolution(150))
        End If
    End Sub
    
    ''' <summary>
    ''' Handles the ImageEncodingStarting event of the DocumentConverter.
    ''' </summary>
    ''' <param name="sender">The source of the event.</param>
    ''' <param name="e">The <see cref="Vintasoft.Imaging.ImageEncodingStartingEventArgs"/> instance containing the event data.</param>
    Private Shared Sub Converter_ImageEncodingStarting(sender As Object, e As Vintasoft.Imaging.ImageEncodingStartingEventArgs)
        ' if output file is TIFF file
        If TypeOf e.Encoder Is Vintasoft.Imaging.Codecs.Encoders.TiffEncoder Then
            Dim tiffEncoder As Vintasoft.Imaging.Codecs.Encoders.TiffEncoder = DirectCast(e.Encoder, Vintasoft.Imaging.Codecs.Encoders.TiffEncoder)
            ' if image is black-white image
            If e.Image.BitsPerPixel = 1 Then
                ' use CCITT Group Fax 4 compression
                tiffEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.CcittGroup4
            ' if image is grayscale- or RGB-image
            ElseIf e.Image.BitsPerPixel = 8 OrElse e.Image.BitsPerPixel = 24 Then
                ' use JPEG compression
                tiffEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.Jpeg
                tiffEncoder.Settings.JpegEncoderSettings.Quality = 70
            Else
                ' use ZIP compression
                tiffEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.Zip
            End If
        ' if output file is PDF encoder
        ElseIf TypeOf e.Encoder Is Vintasoft.Imaging.Codecs.Encoders.PdfEncoder Then
            Dim pdfEncoder As Vintasoft.Imaging.Codecs.Encoders.PdfEncoder = DirectCast(e.Encoder, Vintasoft.Imaging.Codecs.Encoders.PdfEncoder)
            ' if image is black-white image
            If e.Image.BitsPerPixel = 1 Then
                ' use CCITT Group Fax 4 compression
                pdfEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.Encoders.PdfImageCompression.CcittFax
            ' if image is grayscale- or RGB-image
            ElseIf e.Image.BitsPerPixel = 8 OrElse e.Image.BitsPerPixel = 24 Then
                ' use JPEG compression
                pdfEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.Encoders.PdfImageCompression.Jpeg
                pdfEncoder.Settings.JpegSettings.Quality = 70
            Else
                ' use ZIP compression
                pdfEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.Encoders.PdfImageCompression.Zip
            End If
        End If
    End Sub
    
    
    
    /// <summary>
    /// Converts a file from one format to another format.
    /// </summary>
    /// <param name="inFilename">The input filename.</param>
    /// <param name="outFilename">The output filename.</param>
    public static void Convert(string inFilename, string outFilename)
    {
        // create the document converter
        using (Vintasoft.Imaging.DocumentConverter converter = new Vintasoft.Imaging.DocumentConverter())
        {
            // handle the ImageDecodingStarting event to set decoding setting of an input image
            converter.ImageDecodingStarting += Converter_ImageDecodingStarting;
    
            // handle the ImageEncodingStarting event to set encoding setting of an output image
            converter.ImageEncodingStarting += Converter_ImageEncodingStarting;
    
            // handle the conversion progress event
            converter.ConversionProgress += Converter_ConversionProgress;
    
            // allow multithreading
            converter.MaxThreads = System.Environment.ProcessorCount;
    
            // add input images to the document converter
            converter.Images.Add(inFilename);
    
            // execute conversion
            converter.Convert(outFilename);
    
            // clear resources
            converter.Images.ClearAndDisposeItems();
        }
    
        System.Console.WriteLine("Conversion is finished.");
    }
    
    /// <summary>
    /// Handles the ConversionProgress event of the DocumentConverter.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="Vintasoft.Imaging.ProgressEventArgs"/> instance containing the event data.</param>
    private static void Converter_ConversionProgress(object sender, Vintasoft.Imaging.ProgressEventArgs e)
    {
        System.Console.WriteLine(string.Format("Conversion {0}%...", e.Progress));
    }
    
    /// <summary>
    /// Handles the ImageDecodingStarting event of the DocumentConverter.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="Vintasoft.Imaging.ImageDecodingStartingEventArgs"/> instance containing the event data.</param>
    private static void Converter_ImageDecodingStarting(object sender, Vintasoft.Imaging.ImageDecodingStartingEventArgs e)
    {
        // if input file is PDF document
        if (e.Image.SourceInfo.DecoderName == "Pdf")
            // set the rendring resolution to 150 DPI for input PDF documents
            e.RenderingSettings = new Vintasoft.Imaging.Codecs.Decoders.RenderingSettings(new Vintasoft.Imaging.Resolution(150));
    }
    
    /// <summary>
    /// Handles the ImageEncodingStarting event of the DocumentConverter.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="Vintasoft.Imaging.ImageEncodingStartingEventArgs"/> instance containing the event data.</param>
    private static void Converter_ImageEncodingStarting(object sender, Vintasoft.Imaging.ImageEncodingStartingEventArgs e)
    {
        // if output file is TIFF file
        if (e.Encoder is Vintasoft.Imaging.Codecs.Encoders.TiffEncoder)
        {
            Vintasoft.Imaging.Codecs.Encoders.TiffEncoder tiffEncoder = 
                (Vintasoft.Imaging.Codecs.Encoders.TiffEncoder)e.Encoder;
            // if image is black-white image
            if (e.Image.BitsPerPixel == 1)
            {
                // use CCITT Group Fax 4 compression
                tiffEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.CcittGroup4;
            }
            // if image is grayscale- or RGB-image
            else if (e.Image.BitsPerPixel == 8 || e.Image.BitsPerPixel == 24)
            {
                // use JPEG compression
                tiffEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.Jpeg;
                tiffEncoder.Settings.JpegEncoderSettings.Quality = 70;
            }
            else
            {
                // use ZIP compression
                tiffEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.Zip;
            }
        }
        // if output file is PDF encoder
        else if (e.Encoder is Vintasoft.Imaging.Codecs.Encoders.PdfEncoder)
        {
            Vintasoft.Imaging.Codecs.Encoders.PdfEncoder pdfEncoder = 
                (Vintasoft.Imaging.Codecs.Encoders.PdfEncoder)e.Encoder;
            // if image is black-white image
            if (e.Image.BitsPerPixel == 1)
            {
                // use CCITT Group Fax 4 compression
                pdfEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.Encoders.PdfImageCompression.CcittFax;
            }
            // if image is grayscale- or RGB-image
            else if (e.Image.BitsPerPixel == 8 || e.Image.BitsPerPixel == 24)
            {
                // use JPEG compression
                pdfEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.Encoders.PdfImageCompression.Jpeg;
                pdfEncoder.Settings.JpegSettings.Quality = 70;
            }
            else
            {
                // use ZIP compression
                pdfEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.Encoders.PdfImageCompression.Zip;
            }
        }
    }
    
    

    Иерархия наследования

    System.Object
       Vintasoft.Imaging.DocumentConverter

    Требования

    Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    Смотрите также