Миниатюры PDF в Delphi

Мне было интересно, есть ли в Delphi миниатюры PDF файлов. В основном я хочу сделать первую страницу PDF для небольшого растрового изображения (скажем, 100x100 или аналогичного).
Я вижу два варианта: 1 используйте компонент PDF, 2 как-то подключаюсь к тому, как explorer генерирует предварительные просмотры/миниатюры.

Ответ 1

Использование библиотеки, такой как QuickPDF или Gnostice, действительно самый простой вариант. Я уверен, что миниатюры PDF в проводнике фактически генерируются любым программным обеспечением PDF, таким как Adobe. Если вы не можете гарантировать, что на каждой рабочей станции установлен правильный PDF-ридер, идея использования миниатюр может быть недействительной.

Изменить: здесь полное приложение, использующее QuickPDF для рендеринга первой страницы данного файла PDF в файл BMP. В 10 DPI мой выходной BMP файл имеет разрешение 85 пикселей на 110 пикселей.

program PDFToBMP;
{$APPTYPE CONSOLE}
uses
  SysUtils, QuickPDF;
var
  Q : TQuickPDF;
begin
  Q := TQuickPDF.Create;
  try
    Q.LoadFromFile(ParamStr(1), '');
    Q.RenderPageToFile(10 {DPI}, 1 {PageNumber}, 0 {0=BMP}, ChangeFileExt(ParamStr(1),'.bmp'));
  finally
    Q.Free;
  end;
end.

Ответ 2

Вы можете найти список установленных обработчиков предварительного просмотра (в Vista и Windows 7) в разделе HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PreviewHandlers.

Если какой-либо обработчик PDF установлен (например, когда установлен Acrobat Reader), вы можете посмотреть COM-сервер, выполнив поиск найденного ранее GUID. Это в сочетании с интерфейсом IPreviewHandler может помочь вам в решении.

Ответ 3

Или, если у вас есть "время", вы можете попробовать GhostScript либо по командной строке, либо внедрить его. Майк У. дал вам хорошее и легкое решение. Я использую Gnostice, но есть много других решений PDF VCL.