Как преобразовать PDF-документ в миниатюру заданных размеров на C# и .NET


Иногда необходимо преобразовать страницу из PDF-документа в изображение (png, jpg, bmp, на самом деле не имеет значения, показывать ли это в браузере). Допустим, мы создаем веб-сайт электронной библиотеки. В этой электронной библиотеке хранится множество электронных книг в формате PDF. И наша задача - показать титульные страницы этих книг в формате PDF посетителям нашей электронной библиотеки.


Преобразуйте PDF-документ в уменьшенное изображение с заданными размерами на C# и .NET

На самом деле многие браузеры могут отображать PDF-документ с помощью плагина Acrobat Reader, но это не будет работать быстро, если вы хотите показать, скажем, титульные страницы из 50 PDF-файлов. Гораздо более быстрое решение - преобразовать титульную страницу из каждого PDF-документа в изображение и показать его браузеру.

Давайте преобразуем титульную страницу из PDF в уменьшенное изображение в формате PNG размером 100 x 100 пикселей с помощью C#:

  1. Скачать бесплатную пробную версию “SautinSoft.PdfFocus.dll” здесь: SautinSoft.PdfFocus
  2. Создайте новый проект в Visual Studio и добавьте ссылку на “SautinSoft.PdfFocus.dll”.
  3. Это пример кода на C#:

These are code samples in C#:


             string pathToPdf = @"c:\Book.pdf";
    string pathToStoreImages = @"c:\Images\";

    SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
    f.OpenPdf(pathToPdf);

    if (f.PageCount > 0)
    {
        System.Drawing.Image img = null;
        f.ImageOptions.Dpi = 72;
        float thumbnailWidthPx = 100;
        float thumbnailHeightPx = 100;
        int page = 1; //cover page

        //1. Convert PDF into same size image
        img = f.ToDrawingImage(page);
        //Save original image
        img.Save(pathToStoreImages + "Page" + page.ToString() + ".png", System.Drawing.Imaging.ImageFormat.Png);

        //2. Make thumnail and save it as png
        Bitmap bmpThumnail = new Bitmap((int)thumbnailWidthPx, (int)thumbnailHeightPx);
        Graphics e = Graphics.FromImage(bmpThumnail);
        float koeffW = (float)img.Width / thumbnailWidthPx;
        float koeffH = (float)img.Height / thumbnailHeightPx;
        float maxKoeff = (koeffW > koeffH) ? koeffW : koeffH;
        Rectangle rectSource = new Rectangle(0, 0, img.Width, img.Height);

        int x = 0;
        int y = 0;

        if (koeffW > koeffH)
            y = ((int)thumbnailHeightPx - (int)(img.Height / maxKoeff)) / 2;
        else
            x = ((int)thumbnailWidthPx - (int)(img.Width / maxKoeff)) / 2;

        Rectangle rectDest = new Rectangle(x, y, (int)(img.Width / maxKoeff), (int)(img.Height / maxKoeff));
        e.DrawImage(img, rectDest, rectSource, GraphicsUnit.Pixel);
        bmpThumnail.Save(pathToStoreImages + "Thumbnail" + page.ToString() + ".png", System.Drawing.Imaging.ImageFormat.Png);
    }
                    

Резюме: В этом коде используется библиотека SautinSoft – SautinSoft.PdfFocus, которая может конвертировать любые типы PDF-документов в Word, RTF, текстовые документы и изображения (PNG, JPG, многостраничный TIFF и так далее).


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.