Универсальный «просмотрщик документов / изображений» для Delphi? - PullRequest
4 голосов
/ 03 января 2011

Я хочу просматривать (только) файлы изображений и некоторые распространенные документы (PDF, RTF, TEXT и т. Д.) В моей программе Delphi, я нашел два способа сделать это,

  1. через AtViewer , но размер файла слишком велик.
  2. Через встроенный Internet Explorer, установленный непосредственно на компьютере конечного пользователя.

Мне интересно,есть альтернативы?Спасибо.

Ответы [ 4 ]

4 голосов
/ 05 января 2011

Здесь есть два способа:

  1. Использовать любое программное обеспечение, предоставляемое Windows
  2. Придерживайтесь нативных компонентов Delphi

Мне лично нравитсячтобы сохранить мой источник "все Delphi".Когда дело доходит до показа изображений, Delphi обладает многими сторонними библиотеками, которые предоставляют вам поддержку почти всех мыслимых форматов изображений.

Images

ImageEN - хороший пакет(коммерческий), и вам также может понравиться бесплатная библиотека изображений Vapyre (название немного ... хорошо, но это отличный продукт).GraphicsEX - это быстрое расширение Delphi, которое многие разработчики используют для быстрого добавления поддержки наиболее распространенных форматов.У вас также есть FreeImage, представляющий собой коллекцию DLL-файлов, но с классами-обертками Delphi, чтобы их было легко использовать.Загляните в раздел графики на Delphi Pages компании Torry (Google google), и вы найдете надежную поддержку.

PDF

Для предварительного просмотра / чтения PDF я бы взялпосмотрите на линейку продуктов Gnostice.Они предоставляют собственные компоненты Delphi для создания и просмотра PDF-файлов (http://www.gnostice.com/). В качестве альтернативы (для PDF). Я бы, вероятно, выбрал компоненты ActiveX, которые поставляются с Adobe PDF Reader. Но тогда вам нужно будет проверить, что эти объекты зарегистрированы и доступны для них).ваше приложение при запуске.

Так что для вашего "универсального зрителя" я бы

  1. создал бы базовую форму просмотра (для предоставления кнопок, строки состояния и т. д.)
  2. Добавьте виртуальный метод для открытия файла
  3. . От него зависит 3 формы, каждая из которых имеет дело с различным типом носителя. Таким образом, вы получаете TfrmPDF, TfrmImage и TfrmHTML. В каждой переопределяете метод open (). Таким образом, вашОсновное приложение не должно беспокоиться о деталях каждого формата.

HTML

Для просмотра HTML вам повезло, так как у Delphi есть собственный нативный вебРендерер. Он был написан Стивом Болдуином и называется THTMLViewer. Он был выпущен как open source, и вы найдете его в проектах Google.

4 голосов
/ 04 января 2011

Windows (начиная с XP, если я правильно помню) использует интерфейс IExtractImage для создания миниатюры для любого файла в представлении миниатюр, если в нем указан объект для его типа файла.

Эти объекты доступныпо коду, и вы можете использовать их для создания миниатюр для любого файла, который также получит миниатюру в проводнике Windows.(Я даже думаю, что миниатюры будут доставляться из кэша миниатюр (Thumbs.db), если они доступны в том размере, который вы запрашиваете.)

Здесь есть еще: http://yoy.be/item.asp?i1490 или здесь: http://msdn.microsoft.com/en-us/library/bb775073(v=vs.85).aspx

2 голосов
/ 04 января 2011

Я бы посоветовал вам написать свой собственный просмотрщик TForm, который просматривает файл для просмотра и выполняет с ним одну из трех (или четырех, или пяти) операций:

  1. Если это PDF или HTML, загрузите его с помощью встроенного веб-браузера IE (TEmbeddedWB от www.bsalsa.com лучше, чем включенная оболочка VCL IE TwebBrowser).

  2. Если это изображение, загрузите его в элемент управления просмотра изображений, который имеет поддержку изменения размера / масштабирования / прокрутки.

  3. Если это текстовый файл или файл RTF, загрузите его в RichEdit.

  4. Если это тип OLE, вы можете просмотреть его в представлении контейнера OLE.

0 голосов
/ 03 января 2011

Встроенный просмотрщик будет отображать любые документы - однако, если это что-то, требующее внешнего просмотра, то это будет показано за пределами IE - TIFF для каждого из них (по умолчанию) отображаются в просмотрщике изображений.

...