В этом руководстве мы рассмотрим, как создать профессиональное приложение для просмотра PDF-файлов с использованием PDFium VCL, мощного компонента Delphi, который использует движок рендеринга PDFium от Google. Эта демонстрация демонстрирует основные функции просмотра, которые являются основой любого приложения для работы с PDF. PDFium VCL, мощный компонент Delphi, который использует движок рендеринга PDFium от Google. Эта демонстрация демонстрирует основные функции просмотра, которые являются основой любого приложения для работы с PDF.
Обзор
Демонстрация PDF-просмотрщика демонстрирует основные функции, необходимые для просмотра PDF-документов в приложении Delphi. Он предоставляет полное, готовое к использованию решение для просмотра PDF с функциями, сопоставимыми с коммерческими PDF-ридерами.
Основные функции
- Загрузка документов – Открытие PDF-файлов с поддержкой защиты паролем
- Навигация по страницам. – Кнопки для перехода к первой, предыдущей, следующей и последней странице с использованием сочетаний клавиш.
- Элементы управления масштабированием. – Несколько уровней масштабирования, включая "по размеру страницы" и "по ширине".
- Поворот страниц – Поворот страниц на 90° влево или вправо.
- Выбор текста. – Выбор и копирование текста из PDF-документов.
- Закладки. – Навигация с использованием оглавления документа.
- Поиск текста. – Поиск текста в документе
- Печать – Печать документов с выбором диапазона страниц
- Сохранить как – Экспорт документа в новый PDF-файл
Требования к библиотеке PDFium DLL
Перед запуском любого приложения PDFium VCL необходимо установить файлы PDFium DLL. Эти файлы находятся в директории: DLLs папка пакета PDFium VCL:
pdfium32.dll– 32-битная версия (~5 МБ)pdfium64.dll– 64-битная версия (~6 МБ)pdfium32v8.dll32-разрядная версия с JavaScript-движком V8 (около 23 МБ).pdfium64v8.dll64-разрядная версия с JavaScript-движком V8 (около 27 МБ).
Установка: Запуск PDFiumVCL\DLLs\CopyDlls.bat Запустите как администратор. Этот скрипт автоматически копирует соответствующие DLL-файлы в системные каталоги Windows:
|
1 2 3 4 5 6 |
@echo off REM On 64-bit Windows: REM - 32-bit DLLs → %SystemRoot%\SysWOW64\ REM - 64-bit DLLs → %SystemRoot%\System32\ REM On 32-bit Windows: REM - 32-bit DLLs → %SystemRoot%\System32\ |
Обратите внимание: Используйте стандартные DLL-файлы (pdfium32.dll/pdfium64.dll) для большинства приложений. Версии V8 необходимы только в том случае, если ваши PDF-файлы содержат JavaScript, требующий выполнения.
Основные компоненты
В демонстрации используются два основных компонента PDFium VCL:
|
1 2 |
Pdf: TPdf; // Non-visual component for PDF operations PdfView: TPdfView; // Visual component for rendering PDF pages |
Компонент TPdf.
The TPdf Этот компонент обрабатывает все операции с документами PDF, включая загрузку, сохранение и доступ к свойствам документа, таким как метаданные, закладки и информация о страницах.
Компонент TPdfView.
The TPdfView Этот компонент является визуальным элементом управления с возможностью прокрутки, который отображает страницы PDF с плавной прокруткой, поддержкой масштабирования и обработкой взаимодействия с пользователем.
Загрузка документа PDF.
Открытие файла PDF - это просто:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
procedure TFormMain.SpeedButtonOpenPdfClick(Sender: TObject); var Password: string; begin if OpenDialog.Execute then begin Pdf.FileName := OpenDialog.FileName; Pdf.Password := ''; Pdf.PageNumber := 0; try PdfView.Active := True; except on Error: EPdfError do if Error.Message = 'Password required or incorrect password' then begin if InputQuery('Enter Password', 'Password: ', Password) then begin Pdf.Password := Password; PdfView.Active := True; end else raise; end else raise; end; if PdfView.PageCount > 0 then PdfView.PageNumber := 1; end; end; |
Навигация по страницам.
Реализация навигации по страницам проста с помощью. PageNumber Непрерывная прокрутка
|
1 2 3 4 5 6 7 8 9 10 11 |
// Navigate to first page PdfView.PageNumber := 1; // Navigate to last page PdfView.PageNumber := PdfView.PageCount; // Previous page PdfView.PageNumber := PdfView.PageNumber - 1; // Next page PdfView.PageNumber := PdfView.PageNumber + 1; |
Элемент управления масштабированием.
The TPdfView Этот компонент предлагает гибкие опции масштабирования:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Set specific zoom levels PdfView.Zoom := 1.0; // 100% PdfView.Zoom := 0.5; // 50% PdfView.Zoom := 2.0; // 200% // Fit to page width PdfView.Zoom := PdfView.PageWidthZoom[PdfView.PageNumber]; // Fit entire page in view PdfView.Zoom := PdfView.PageZoom[PdfView.PageNumber]; // Actual size (based on DPI) PdfView.Zoom := PdfView.ActualSizeZoom[PdfView.PageNumber]; |
Поворот страниц
Поворачивайте страницы с помощью Rotation Непрерывная прокрутка
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Rotate right (clockwise) case PdfView.Rotation of ro0: PdfView.Rotation := ro90; ro90: PdfView.Rotation := ro180; ro180: PdfView.Rotation := ro270; ro270: PdfView.Rotation := ro0; end; // Rotate left (counter-clockwise) case PdfView.Rotation of ro0: PdfView.Rotation := ro270; ro90: PdfView.Rotation := ro0; ro180: PdfView.Rotation := ro90; ro270: PdfView.Rotation := ro180; end; |
Отображение информации о документе
Получите доступ к метаданным документа через TPdf компонент:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
procedure TFormMain.SpeedButtonShowInfoClick(Sender: TObject); begin ShowMessage( 'Author: ' + Pdf.Author + #13#10 + 'Creator: ' + Pdf.Creator + #13#10 + 'Keywords: ' + Pdf.Keywords + #13#10 + 'Producer: ' + Pdf.Producer + #13#10 + 'Subject: ' + Pdf.Subject + #13#10 + 'Title: ' + Pdf.Title + #13#10 + 'Creation date: ' + Pdf.CreationDate + #13#10 + 'Modified date: ' + Pdf.ModifiedDate ); end; |
Работа с закладками
В демонстрации TreeView заполняется закладками документа для удобной навигации:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure TFormMain.AddBookmarks(Node: TTreeNode; Bookmarks: TBookmarks); var ChildNode: TTreeNode; I: Integer; begin for I := 0 to Length(Bookmarks) - 1 do begin ChildNode := TreeViewBookmarks.Items.AddChildObject( Node, Bookmarks[I].Title, Bookmarks[I].Handle ); ChildNode.HasChildren := Pdf.HasBookmarkChildren[Bookmarks[I]]; if ChildNode.HasChildren then AddBookmarks(ChildNode, Pdf.BookmarkChildren[Bookmarks[I]]); end; end; |
Параметры рендеринга
Настройте отрисовку с помощью различных опций:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Available render options type TRenderOption = ( reAnnotations, // Render annotations reLcd, // LCD optimized rendering reNoNativeText, // Don't use native text output reGrayscale, // Render in grayscale reLimitCache, // Limit image cache size reHalftone, // Use halftone for image stretching rePrinting, // Optimize for printing reNoSmoothText, // Disable text anti-aliasing reNoSmoothImage, // Disable image anti-aliasing reNoSmoothPath // Disable path anti-aliasing ); // Apply options to the view PdfView.Options := [reAnnotations, reLcd]; |
Заключение.
Демонстрация PDF Viewer предоставляет надежную основу для создания функций просмотра PDF в ваших приложениях Delphi. С PDFium VCL вы получаете доступ к тому же движку отрисовки PDF, который используется в Google Chrome, что обеспечивает высококачественное и точное отображение PDF.
Компонент автоматически обрабатывает сложные функции PDF, такие как аннотации, поля форм и встроенные шрифты, позволяя вам сосредоточиться на создании уникальных функций вашего приложения, а не на низкоуровневом анализе PDF.
Загрузите PDFium VCL с сайта loslab.com, чтобы начать разработку PDF в Delphi.