Как преобразовать PDF-документ в миниатюру заданных размеров на C# и .NET
Иногда необходимо преобразовать страницу из PDF-документа в изображение (png, jpg, bmp, на самом деле не имеет значения, показывать ли это в браузере). Допустим, мы создаем веб-сайт электронной библиотеки. В этой электронной библиотеке хранится множество электронных книг в формате PDF. И наша задача - показать титульные страницы этих книг в формате PDF посетителям нашей электронной библиотеки.
Преобразуйте PDF-документ в уменьшенное изображение с заданными размерами на C# и .NET
На самом деле многие браузеры могут отображать PDF-документ с помощью плагина Acrobat Reader, но это не будет работать быстро, если вы хотите показать, скажем, титульные страницы из 50 PDF-файлов. Гораздо более быстрое решение - преобразовать титульную страницу из каждого PDF-документа в изображение и показать его браузеру.
Давайте преобразуем титульную страницу из PDF в уменьшенное изображение в формате PNG размером 100 x 100 пикселей с помощью C#:
- Скачать бесплатную пробную версию “SautinSoft.PdfFocus.dll” здесь: SautinSoft.PdfFocus
- Создайте новый проект в Visual Studio и добавьте ссылку на “SautinSoft.PdfFocus.dll”.
- Это пример кода на 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 или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже: