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