Основные компоненты
- TPdf — основной компонент для работы с PDF-документами: открытие, навигация, извлечение текста и редактирование PDF-документов
- TPdfView — визуальный компонент для отображения страниц PDF и взаимодействия с ними
- TPdfThumbnailView — прокручиваемая боковая панель миниатюр для навигации по страницам
Операции с документами
- Загрузка документов — загрузка PDF-файлов с диска, из потоков памяти, байтовых массивов или адаптеров TStream по требованию через
LoadCustomDocument. PDFium читает блоки по запросу, поэтому многогигабайтные документы и удалённые / БД-источники не требуют предварительной копии в памяти.- Защита паролем — открытие защищённых паролем PDF-документов и предоставление действующих
UserPermissionsдля аутентифицированного сеанса- Создание документов — построение новых PDF-документов с нуля при помощи
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImageиCreatePath- Сохранение документов — сохранение изменённых документов с различными опциями (инкрементально, удаление защиты) и явными целевыми версиями PDF от PDF 1.0 до PDF 1.7
- Выходной формат PDF/A-1b —
SaveAsPdfA/SaveAsPdfAToStreamпостобрабатывают базовое сохранение инкрементальным обновлением, которое внедряет поток метаданных XMP, ICC OutputIntent sRGB и обновлённый catalog документа, делая результат соответствующим PDF/A-1b. Пользовательские ICC-профили поддерживаются черезTPdfASaveOptions.IccProfileData.- Валидация PDF/A —
ValidatePdfAи свойство только для чтенияPdfAConformanceсканируют открытый документ на наличие маркеров XMPpdfaid, OutputIntent со встроенным ICC, наличие шифрования и сообщают уровень соответствия (pac1a,pac1b,pac2b,pac3b,pacNoneилиpacUnknown) плюс список записейTPdfAValidationIssue, описывающих каждую обнаруженную проблему- Валидатор соответствия версии PDF — когда SaveAs нацелен на PDF 1.0 — PDF 1.7, писатель отклоняет любые записи словарей, фильтры, подтипы аннотаций, типы действий, шрифты, цветовые пространства или параметры шифрования, появившиеся после выбранной целевой версии (например JBIG2Decode, MarkInfo, OutputIntents, AES / AES-256, аннотации Polygon / Caret / Watermark / Redact, действия JavaScript / Trans / SetState)
- Сжатие потоков — автоматическое сжатие FlateDecode гарантирует, что все потоки PDF оптимально сжимаются при сохранении; установите
Compressed := False, чтобы отключить сжатие для отладочных конвейеров- Объединение документов — импорт страниц из других PDF-документов
- Импорт подмножества страниц —
ImportPagesByIndexкопирует явный массив нулевых индексов из исходного документа, при этом InsertAt = 0 вставляет перед страницей 1, а InsertAt = PageCount добавляет в конец. Передайте пустой массив индексов, чтобы импортировать все страницы источника.- Композиция N-up —
ImportNPagesToOneвозвращает совершенно новыйTPdf, страницы которого являются композициями NumX×NumY из страниц исходного документа, размер задаётся в пользовательских единицах PDF (1 единица = 1/72 дюйма)- Изменение порядка страниц —
MovePagesизменяет порядок страниц на месте, используя массив нулевых индексов и индекс назначения для первой перемещаемой страницы- Повторное использование страниц через Form XObject —
CreateXObjectFromPageсоздаёт переиспользуемый дескрипторTPdfXObjectиз любой страницы другого документа;InsertFormObjectFromXObjectвставляет ОДНУ копию обёрнутой страницы в текущую страницу. Идеально для водяных знаков, шаблонных наложений и сценариев «штамп одной страницы на многие». Целевой объект страницы можно позиционировать, масштабировать и поворачивать черезFPDFPageObj_SetMatrixи помощникиTPdfMatrix.- Управление страницами — добавление, удаление и манипулирование отдельными страницами;
AddPage(0, ...)вставляет самую первую страницу и немедленно её активирует- Боксы страниц — чтение и запись MediaBox, CropBox, BleedBox, TrimBox и ArtBox на текущей странице
- Язык каталога — чтение и запись языка документа, хранящегося в записи /Lang каталога
- Идентификаторы файла в трейлере — чтение постоянных и изменяющихся записей /ID трейлера в виде бинарных байтов
- Действия JavaScript уровня документа — перечисление имён и сценариев действий из дерева имён JavaScript уровня документа
- Дерево структуры Tagged PDF — анализ элементов логической структуры, текста доступности, языка, идентификаторов маркированного содержимого и иерархии для страниц tagged PDF
- Настройки просмотрщика — чтение
PrintCopies,PrintPageRanges,PrintScalingиPrintPaperHandlingиз словаря настроек просмотрщика документа; сохранённые PDF по умолчанию используют действие открытия первой страницы Fit Height
Операции с текстом
- Извлечение текста — извлечение текста из страниц PDF с посимвольной точностью через свойства
Text,TextInRectangle, индексируемыеCharacter,CharacterRectangleиCharacterOrigin- Единицы чтения по предложениям - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits и BuildReadingUnits предоставляют записи TPdfReadingUnit размером с предложение для синхронного TTS-прослушивания
- Пословная подсветка чтения -
TPdf.PageWordBoxes,TPdfView.PageWordBoxes,BuildWordBoxes,WordBoxIndexAtCharIndex,TPdfView.SelectWordBox,TPdfView.SelectWordSpan,TPdfView.TrackReadingWordAt,TPdfView.SetReadingWord,TPdfView.ClearReadingWord,ReadingWordColor,ReadingWordFollowсопоставляют смещение символа страницы с содержащим его TPdfWordBox, выделяют слово и возвращают индекс слова; выделяют TPdfWordBox как текущее произносимое слово в TPdfView; очищают текущую пословную оверлейную подсветку курсора чтения в TPdfView; управляют цветом оверлея для текущего пословного курсора чтения; управляют тем, прокручивает ли TPdfView текущее произносимое слово в видимую область при отслеживании чтения- Оркестрация чтения вслух —
TPdfReadingSession,TPdfSpokenText,TPdfSpokenSpan,TPdfSpokenSpans,TPdfSpokenTexts,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageChar,EstimateSpokenWordIndex,FeedSpokenPosition,StateиTPdfReadingSessionStateкоординируют движки TTS хоста, произносимые фрагменты, обратные вызовы позиции слова, оценку темпа, паузу и возобновление, а также обновления курсора слова в TPdfView- Поиск текста — поиск текста с опциями учёта регистра, целого слова и последовательного поиска через
FindFirst,FindNext,FindPrevious- Наложение подсветки результатов поиска —
TPdfView.HighlightSearchTextсканирует текущую страницу просмотра и рисует реальное альфа-смешанное наложениеHighlightColorповерх каждого совпадения при каждой перерисовке, возвращая количество совпадений.ClearHighlightубирает наложение; переход на другую страницу автоматически очищает его, поскольку совпадения привязаны к странице.HighlightColorпо умолчанию равенclYellowи опубликован, чтобы приложения могли его темизировать.- Свойства символов — доступ к размеру шрифта, насыщенности, углу и позиционированию для отдельных символов через индексируемые свойства
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHyphenиCharacterMapError- Поддержка европейских символов —
AddTextавтоматически загружает и кэширует подходящий системный шрифт TrueType перед созданием текстового объекта, благодаря чему акцентированные символы чешского, французского, немецкого, испанского, португальского, польского и турецкого языков, которые встроенные стандартные шрифты PDFium не могут представить, теперь корректно отображаются без каких-либо изменений в коде- Добавление текста — добавление нового текста на страницы PDF с пользовательскими шрифтами, цветами, прозрачностью и поворотом
- Позиционирование текстового объекта — задание посимвольных позиций для существующих текстовых объектов через
SetTextPositionsиTPdfSingleArray- Информация о шрифтах — получение свойств шрифтов, включая имя семейства, статус встраивания, угол курсива, ascent / descent и сырые данные шрифта на уровне отдельного объекта страницы
Поддержка аннотаций
- Типы аннотаций — поддержка текстовых, ссылочных, выделения, подчёркивания, зачёркивания и многих других типов аннотаций
- Создание аннотаций — программное создание новых аннотаций
- Редактирование аннотаций — изменение свойств существующих аннотаций, включая цвет, прозрачность и содержимое
- Аннотации-ссылки — обработка внутренних и внешних ссылок с поддержкой действий
Поддержка форм
- Аксессоры для голосового заполнения форм - FocusedFormFieldValue, FocusedFormFieldName и FocusedFormFieldDetails в TPdf и TPdfView открывают значение, имя и TPdfFormFieldInfo текущего логического поля формы для клавиатурного или голосового заполнения
- Типы форм — поддержка форм AcroForm и XFA
- Заполнение форм — интерактивное заполнение форм с поддержкой JavaScript
- Выбор DLL V8 — установите
EnableV8Engineперед загрузкой, чтобы использоватьpdfium.v8.dllиз соответствующей папкиDLLs\Win32илиDLLs\Win64, и запрашивайте доступность помощников V8/XFA черезV8FeaturesAvailable,XfaBStrHelpersAvailableиGetRecommendedV8Flags- Доступ к полям — чтение и запись значений полей форм по индексу или позиции
- Информация о полях — доступ к типу поля, флагам, имени и другим свойствам
- Флаги полей — обновление флагов полей AcroForm по индексу или позиции через
SetFormFieldFlags/SetFormFieldFlagsAt, включая флаги только для чтения, обязательное, пароль и множественный выбор- Сплющивание форм —
GenerateFormAppearancesвосстанавливает поток внешнего вида /AP для каждого виджета формы на каждой странице, аFlattenPage/FlattenAllPagesзапекают аннотации и поля форм в статическое содержимое страницы (нередактируемое)- Выделение текста виджетов формы и отмена/возврат — на сфокусированном виджете AcroForm просмотрщик предоставляет
GetSelectedFormText(текущий выделенный текст),SelectAllFormText(выделить все символы) иFormUndo/FormRedo/FormCanUndo/FormCanRedo(управление историей редактирования PDFium на уровне виджета). Все шесть методов безопасно завершают работу, когда просмотрщик неактивен или ни один виджет не сфокусирован.
Операции с изображениями
- Извлечение изображений — извлечение растровых изображений со страниц PDF через индексируемое свойство
Bitmap; итерацияBitmapCountдля сохранения каждого изображения на диск- Вставка JPEG —
AddJpegImageпринимает TStream сырых байтов JPEG и встраивает изображение как XObject /DCTDecode без повторного кодирования- Поддержка Picture —
AddPictureпринимает объектTPictureс автоматическим преобразованием формата через зарегистрированные графические классы VCL/LCL- Прямая вставка изображений —
AddImage(FileName)распознаёт любой формат, зарегистрированный в графических модулях VCL или LCL (BMP, PNG через PngImage, JPG, ...), и использует тот же конвейер, что и AddPicture.AddImage(TBitmap)пропускает промежуточный TPicture, что упрощает работу для вызывающих, которые уже держат TBitmap из рендеринга или пакетной генерации.- ICC-профиль изображения — объекты страницы-изображения предоставляют свои встроенные данные ICC-профиля, когда они есть (привязка для
FPDFImageObj_GetIccProfileDataDecoded)- Генерация миниатюр — генерация растровых миниатюр страниц через свойство
Thumbnailили отрисовка любой страницы с нумерацией с единицы черезTPdf.RenderPageThumbnailбез измененияPageNumber
Вспомогательные модули
- Асинхронная инфраструктура —
FPdfAsyncпредоставляетIPdfCancellationToken/IPdfCancellationTokenSourceдля кооперативной семантики отмены из интерфейса, переиспользуемый singletonPdfNoCancellationTokenи лёгкий помощникTPdfFuture<T>, который запускает worker в фоновом потоке и отправляет конвертTPdfFutureResult<T>обратно в главный поток, различая случаи успеха, отмены и сбоя- Адаптер потока —
TPdfStreamAdapterсвязывает Pascal-овскийTStreamс обратными вызовамиFPDF_FILEACCESSPDFium, благодаря чемуLoadCustomDocumentчитает блоки по требованию вместо буферизации всего PDF в памяти- Композиция матриц —
FPdfMatrixоборачиваетFS_MATRIXиз PDFium объектно-ориентированным API дляTranslate,Scale,Rotate,HorizontalFlip,VerticalFlip,CentralFlip,SkewиMultiply.Multiplyделает снимок шести элементов матрицы перед вычислением новых значений строк, избегая характерной ловушки альтернативных Pascal-реализаций, при которой более ранние элементы перезаписываются в том же вызове и приводят к неверным композициям.- Отменяемый прогрессивный рендеринг —
TPdf.RenderPageProgressiveуправляет цикломFPDF_RenderPageBitmap_Start+RenderPage_ContinuePDFium и опрашиваетIPdfCancellationTokenмежду итерациями через обратный вызовIFSDK_PAUSE, благодаря чему длительные рендеры с высоким DPI могут прерываться в середине страницы вместо блокировки до завершения. ВозвращаетTPdfProgressiveStatus:prsDone,prsCancelledилиprsFailed.- Путь рендеринга без копирования —
RenderPage/RenderTile/RenderPageProgressiveпишут вывод PDFium напрямую в буфер DIB назначенияTBitmapвместо промежуточного внутреннего буфера, экономя одну копию памяти размером ширина × высота × 4 байта на каждый рендер — заметнее всего при высоких DPI (панели миниатюр, экспорт качества печати, пакетный экспорт). Резервный путь по строкам сохраняется, когда буфер DIB назначения нельзя безопасно обернуть.- Преобразования bitmap для слабого зрения —
InvertPdfBitmap,GrayscalePdfBitmapиDuotonePdfBitmapпреобразуют пиксели отрендеренного 32-битногоTBitmapна месте для инверсии, оттенков серого или двухцветного режима слабого зрения- Живой режим слабого зрения —
TPdfView.OptionsподдерживаетreInvertиreNightDuotone, аNightDuotoneInkиNightDuotonePaperуправляют палитрой ночного режима перед рисованием оверлеев
Операции рисования
- Рисование путей — создание путей с линиями, кривыми Безье и замкнутыми фигурами
- Удаление объектов — удаление объектов страницы и регенерация содержимого страницы из TPdf или TPdfView
- Заливка и обводка — настройка режима заливки, цветов, прозрачности и свойств обводки
- Режимы смешивания — поддержка различных режимов смешивания PDF
- Стили линий — настройка торцов линий, соединений линий и ширины обводки
Цифровые подписи
- Обнаружение подписей — обнаружение и перечисление цифровых подписей в PDF-документах
- Информация о подписи — доступ к содержимому подписи, диапазону байтов, sub-filter, причине и времени
- Разрешения MDP — запрос разрешений обнаружения и предотвращения изменений документа
Поддержка вложений
- Доступ к вложениям — чтение, создание, изменение и удаление встроенных файловых вложений
- Имена вложений — доступ к именам файлов вложений
- Типы вложений — чтение значений MIME subtype встроенных файлов при их наличии
- Закладки — навигация по закладкам документа с иерархической поддержкой через массив
Bookmarks,BookmarkChildren,HasBookmarkChildrenи помощники обходаBookmarkFrom- Именованные адреса назначения — доступ к именованным адресам назначения по индексу или имени через
Destination,DestinationByNameиDestinationCount- Метки страниц — получение меток страниц для каждой страницы через
PageLabel; полезно, когда документы используют римские цифры для предисловия- Веб-ссылки — обнаружение и навигация по веб-ссылкам на страницах через
WebLink,WebLinkCountиTPdfView.WebLinkAtPos- Аннотации-ссылки — доступ к аннотациям-ссылкам с информацией о действии и адресе назначения через
LinkAnnotation,LinkAnnotationCountиTPdfView.LinkAnnotationAtPos- Безопасная обработка кликов по ссылкам — TPdfView вызывает события
OnAnnotationLinkClick/OnWebLinkClickперед автоматическими обработчиками goto / URI, при этом действия запуска по умолчанию отключены. Обнаружение клика по ссылке выполняется только тогда, когда жест является кликом, а не перетаскиванием, с использованием свежего якоря MouseDown, чтобы жесты панорамирования продолжали проходить по существующему пути прокрутки без изменений.
Рендеринг
- Высококачественный рендеринг — рендеринг страниц в контекст устройства, растровое изображение или плитку через
RenderPage/RenderTileс прямой записью в буфер DIB назначения без копирования- Отменяемый прогрессивный рендеринг —
RenderPageProgressiveуправляет прогрессивным циклом PDFium и опрашиваетIPdfCancellationTokenмежду итерациями, возвращаяprsDone,prsCancelledилиprsFailed. При отмене растровое изображение содержит частичную работу, выполненную к этому моменту.- Опции рендеринга — оптимизация LCD-текста (
reLcd), аннотации (reAnnotations), оттенки серого и флаги режима печати- Хуки Skia — низкоуровневые привязки
FPDF_RenderPageSkiaиFPDF_FFLDrawSkiaдоступны, когда вызывающий предоставляет внешний SkCanvas (зависит от экспортов поставляемой DLL)- Выбор режима печати — установите режимы печати PDFium EMF, только текст, PostScript, прямая передача, маска изображения и Type 42 через
SetPdfPrintModeсTPdfPrintMode- Асинхронное наложение — TPdfView может отображать опциональное наложение загрузки, пока workers, принадлежащие приложению, рендерят с отдельными экземплярами TPdf
- Поворот страницы — поддержка поворота на 0, 90, 180 и 270 градусов (
ro0,ro90,ro180,ro270)- Обнаружение прозрачности — свойство
Transparentсообщает, имеет ли какой-либо объект на текущей странице прозрачность, включая режимы смешивания и частичную альфа-прозрачность
Просмотр (TPdfView)
- Режимы отображения —
dmSingleContinuous,dmTwoPageContinuousиdmTwoPageContinuousWithCover(страница обложки стоит отдельно, затем продолжаются двухстраничные развороты). Помощник уровня модуляComputeSpreadPagesпредоставляет математику разворотов без создания экземпляра просмотрщика.- Режим вписывания —
FitModeопределяет, как страница располагается в области просмотра:pfmNone(ручное масштабирование),pfmActualSize(100%),pfmFitPage(вся страница помещается в область просмотра) иpfmFitWidth(ширина страницы соответствует ширине области просмотра). Активный режим вписывания автоматически переприменяется при изменении размера и смене текущей страницы; прямая установка Zoom отменяет активный режим вписывания (FitMode возвращается кpfmNone), что соответствует стандартному соглашению просмотрщиков PDF.- Управление масштабированием — переменное масштабирование с постраничными помощниками
PageZoom,PageWidthZoom,PageHeightZoomиActualSizeZoom- Цвет страницы —
PageColorотделяет фон отрисованной PDF-страницы отColorокружающего элемента управления. По умолчаниюclWhite, поэтому PDF-страницы теперь отображаются как белая бумага независимо от темы приложения-хоста. Просмотрщики в тёмной теме могут оставлять область прокрутки тёмной, оставляя саму PDF-страницу белой (или любого цвета на выбор приложения).- Интерактивное выделение текста — выделение текста на страницах PDF перетаскиванием конечным пользователем с автоматическим переключением между выделением и панорамированием по хит-тесту: клик по символу начинает перетаскивание выделения, клик по пробелу — панорамирование. Двойной клик выделяет слово, тройной клик — строку,
Ctrl+Aвыделяет страницу (обе страницы в режиме разворота),Ctrl+Cкопирует какCF_UNICODETEXT,Shift+стрелкирасширяют выделение, наведение на текст переключает курсор наcrIBeam, а перетаскивание к краю просмотрщика автоматически прокручивает страницу. Новые опубликованныеSelectionColorиOnSelectionChange; новые публичныеHasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboard. Режимы разворота выделяют через обе видимые страницы с соединением CR/LF. Всплывающее меню «Копировать» по правому клику автоматически прикрепляется, когда хост не назначил собственныйPopupMenu. Управляется флагомAllowUserTextSelectionиз v1.17.0 для киосочных хостов.- Сопоставление координат — преобразование между координатами устройства просмотрщика и координатами страницы PDF при помощи
DeviceToPage/PageToDevice, включая перегрузки, принимающиеTRectи возвращающиеTPdfRectangle- Выделение текста и хит-тестинг — определение символов под точками просмотрщика через
CharacterIndexAtPosи рисование подсветок выделения текста черезPaintSelection- Мышь и клавиатура — полная поддержка устройств ввода с прокруткой перетаскиванием мышью, сочетаниями PgUp / PgDn / Ctrl+Home / Ctrl+End и навигацией по страницам колесом вверх/вниз. Ctrl+колесо зарезервировано для масштабирования приложения и пропускается обработчиком навигации.
- Ограничение пользовательского ввода —
AllowUserPageChangeуправляет сочетаниями клавиш для смены страниц,ChangePageOnMouseScrolling— переходами страниц колесом, аAllowUserTextSelection— вводом мыши / клавиатуры для выделения текста. Все три по умолчанию равны True; установите их в False, чтобы заблокировать киоски, панели предпросмотра или встраивания только для чтения без наследования.- Наложение асинхронного рендеринга —
AsyncRendering,LoadingTextиLoadingColorрисуют небольшой индикатор «Loading...» поверх отрисованной страницы, чтобы приложения, использующие собственный worker для длительных рендеров, разделяли единое визуальное оформление. Значения по умолчанию сохраняют существующее поведение.TPdfтеперь сериализует вызовы рендеринга и выгрузки страниц для каждого экземпляра; приложения по-прежнему владеют диспетчеризацией workers и должны избегать мутации документа во время выполняющегося рендеринга.- Безопасная обработка кликов по ссылкам —
LinkOptions— это опубликованное множество, которое управляет автоматическим поведением для четырёх типов действий PDF-ссылок:loAutoGoto(переход по странице),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute) иloAutoEmbeddedGoto(зарезервировано). По умолчанию включены толькоloAutoGotoиloAutoOpenURI;loAutoLaunchиloAutoEmbeddedGotoостаются выключенными, чтобы случайный клик не мог запустить произвольную программу.OnAnnotationLinkClickиOnWebLinkClickсрабатывают до любого автоматического действия и позволяют приложению пометить событие как Handled или перенаправить его.- Взаимодействие с формами — интерактивное редактирование форм внутри просмотрщика плюс помощники выделения / Undo / Redo из v1.23.0
- Визуальная стилизация —
PageShadowSize,PageShadowColorиPageBorderColorрисуют необязательную отбрасываемую тень под прямоугольником страницы и однопиксельную рамку вокруг;SmoothScrollтеперь анимирует команды линейной/постраничной прокрутки в сегментах по таймеру, при этом отслеживание ползунка остаётся мгновенным- Навигация по миниатюрам —
TPdfThumbnailView(модульFPdfThumbnail) рендерит одну миниатюру страницы в строку в прокручиваемой боковой панели с подсветкой при наведении и выделением плюс навигацией кликом. Разработан для размещения рядом с TPdfView. Свойства:CurrentPageIndex,ThumbnailWidth,ThumbnailHeight,TextColor,HoverColor,SelectionColor,BorderColor; событие:OnPageClick.
Сжатие
- Автоматическое сжатие — когда свойство
Compressedравно True (по умолчанию), все потоки PDF гарантированно сжимаются FlateDecode при сохранении- Постобработка — движок сжатия сканирует сохранённые данные PDF и сжимает все несжатые потоки с использованием максимального сжатия zlib
- Перестроение перекрёстных ссылок — автоматически перестраивает таблицу xref, когда сжатие потока изменяет смещения байтов
- Нулевая нагрузка — если все потоки уже сжаты, данные проходят без изменений
Безопасность
- Поддержка пароля — открытие защищённых паролем PDF-документов
- Разрешения — чтение разрешений документа и пользователя; демонстрация
SecurityAuditобъединяет разрешения, вложения, JavaScript документа, ссылки URI / Launch, подписи, XFA и доступность V8 в поверхность рисков только для чтения с действиями сохранения отчёта TXT / JSON и копирования TXT- Удаление защиты — сохранение документов с удалённой защитой (при наличии полномочий)
Печать
- Режимы печати — выбор между режимами EMF, только текст, PostScript Level 2 / 3, PostScript pass-through, маска изображения EMF и Type 42 через глобальную функцию
SetPdfPrintMode- Настройки просмотрщика — раскрытие намерений автора документа через
PrintCopies,PrintPageRanges(диапазоны страниц от единицы),PrintScalingиPrintPaperHandling;SetPdfPrintPaperHandlingDevModeотображает подсказку дуплекса в WindowsDEVMODE.dmDuplex- Печать N-up — демонстрации
PrintPreferencesдля Delphi, C++Builder и Lazarus показывают композицию листов N-up (1 / 2 / 4 / 9 страниц на лист) с фильтрацией нечётных/чётных страниц, рендерингом в оттенках серого, опциональными однопиксельными рамками ячеек, настройками печати автора PDF и отображением намерения дуплекса черезSetPdfPrintPaperHandlingDevMode
Поставляемые демонстрации
Деревья
Demo\Delphi,Demo\CBuilderиDemo\Lazarusпоставляются с готовыми к запуску образцами проектов, использующими актуальный API во всех трёх семействах IDE. Основное:
- PDFViewer / MultiPageViewer / SplitView — сквозное использование TPdfView: загрузка, навигация, масштабирование, поворот, двухстраничный разворот, раскладки с учётом обложки и параллельное сравнение PDF в Delphi / C++Builder / Lazarus с синхронизированными командами; демонстрации просмотрщиков также служат практическими тестами скорости для многогигабайтных PDF, где документы по 2+ ГБ могут достичь пригодного первого просмотра практически мгновенно, а рендеринг страниц остаётся отзывчивым
- ViewerInteractionLab — образцы взаимодействия TPdfView для Delphi, C++Builder и Lazarus, посвящённые режимам отображения, режимам вписывания, цветам страниц, повороту, подсветке поиска, выделению текста, предпросмотру выделенного текста, действиям буфера обмена и обратной связи координат DeviceToPage
- SearchAndSelect — образцы рабочих процессов для Delphi, Lazarus и C++Builder, посвящённые перечислению результатов поиска по всем страницам, навигации к предыдущему/следующему совпадению, переходу к результату по двойному клику,
HighlightSearchText, поиску с учётом регистра/целого слова,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelectionи режимам разворота- PreflightReport — рабочие демонстрации для Delphi, Lazarus и C++Builder плюс консольный спутник Delphi вокруг переиспользуемого
FPdfPreflightReport, собирающий результаты валидации PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R и PDF/VT в строки сводки статуса, приоритета, категории проблем, счётчиков категорий проблем и следующих действий, рекомендации по проблемам, предпросмотр текста / Markdown / JSON / CSV, отчёты TXT / HTML / Markdown / JSON / CSV, скриптовую генерацию отчётов, пакетную обработку списков и каталогов с маршрутизацией каталога отчётов, агрегатные сводки TXT / JSON / HTML, манифесты строк CSV, опциональное встраивание прикреплённых отчётов и коды выхода для CI-гейтов- ContentExtractionLab — унифицированный рабочий процесс инвентаризации содержимого для Delphi, Lazarus и C++Builder для метаданных документа, текста страниц, объектов страниц, изображений, вложений, ссылок, аннотаций, закладок и метрик шрифтов / символов с экспортом TXT / JSON, выбором всех / ни одной категории, сохранением исходного PDF и действиями копирования отчёта
- WatermarkStamp — переиспользуемый рабочий процесс Form XObject для Delphi, Lazarus и C++Builder для центрированных водяных знаков, угловых штампов и меток номеров страниц по многостраничному целевому PDF
- CreatePDF — построение многостраничного PDF с нуля с текстом, изображениями, путями, таблицами и композицией водяных знаков; включает опцию «Европейский текст» для записи акцентированного чешского / французского / немецкого / испанского / португальского / польского / турецкого текста с целью проверки выбора шрифта и обработки Unicode
- ExtractText / ExtractImages / ContentExtractionLab — сохранение извлечённого текста (включая постраничный вывод с разделением) или встроенных изображений на диск; либо генерация многокатегорийного отчёта инвентаризации содержимого за один проход
- FormFill — чтение метаданных полей AcroForm, запись значений, регенерация внешнего вида /AP и сохранение либо редактируемого, либо сплющенного результата
- FontProperties — изучение индексированных метаданных символов / шрифтов через TPdf и TPdfView в Delphi, C++Builder и Lazarus
- MergePDF / SplitPDF — объединение нескольких исходных PDF (с выбором диапазона страниц на файл, опциональным путём вывода, журналом выполнения, кнопкой отмены и итоговой сводкой объединения) или разделение одного PDF на постраничные выходные файлы
- PDFtoJpg / BatchExport — одиночное или пакетное многофайловое преобразование PDF в JPG для Delphi, C++Builder и Lazarus с общим прогрессом на файл, текущим прогрессом на страницу, входами DPI / качества / пароля и кооперативно отменяемой пакетной обработкой на основе
IPdfCancellationToken- StandardsLab — рабочие образцы для Delphi, C++Builder и Lazarus для валидации PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R и PDF/VT, отчётности о проблемах и стандартно-ориентированных сохранений
- PrintPDF / PrintPreferences — стандартная печать PDF для Delphi, C++Builder и Lazarus с предпросмотром, диапазонами страниц, копиями, разбором, прогрессом и отменой (PrintPDF), плюс композиция листов N-up для Delphi, C++Builder и Lazarus с фильтрацией нечётных/чётных и настройками печати автора PDF (PrintPreferences)
- SecurityAudit — образцы поверхности рисков только для чтения для Delphi, C++Builder и Lazarus для разрешений, вложений, действий JavaScript, ссылок URI / Launch, веб-ссылок, подписей, состояния XFA, доступности помощников V8 / XFA и отчётов аудита TXT / JSON
- Attachment — создание PDF, добавление / перечисление / извлечение / удаление / сохранение встроенных файловых вложений с отображением MIME subtype
- ImageToPDF — пакетное преобразование изображений в один PDF для Delphi, C++Builder и Lazarus, одно изображение на страницу, с предпросмотром и прогрессом на изображение
Регрессионные наборы для Delphi, C++Builder и Lazarus охватывают 147 (Pas) / 123 (C++) случаев, использующих одни и те же фикстурные PDF, благодаря чему поведение остаётся побайтово согласованным во всех трёх семействах IDE.
Поддержка платформ
- Delphi — Delphi XE5 (RAD Studio XE5) — Delphi 13.1 Florence (RAD Studio 13.1)
- C++Builder — C++Builder XE5 (RAD Studio XE5) — C++Builder 13.1 Florence
- Lazarus — поддержка Free Pascal / Lazarus
- Win32 / Win64 — как 32-разрядные, так и 64-разрядные платформы Windows