Основные компоненты
- TPdf — основной компонент для работы с PDF-документами: открытие, навигация, извлечение текста и редактирование PDF-документов
- TPdfView — визуальный компонент для отображения страниц PDF и взаимодействия с ними
- TPdfReadingSession — компонент оркестрации чтения вслух для движков TTS хоста и пословного отслеживания в TPdfView
- TPdfThumbnailView — прокручиваемая боковая панель миниатюр для навигации по страницам
- Native LCL Platforms — Linux Qt6 и macOS Cocoa используют нативный PDFium, корректные привязки LP64, платформенные сервисы шрифтов и файлов и реальные раскладки каналов битмапов; о квалифицированных конфигурациях Free Pascal/LCL и границах возможностей см нативную настройку
Операции с документами
- Загрузка документов — загрузка PDF-файлов с диска, из потоков памяти, полных байтовых массивов, нулевых окон байтовых массивов
Index/Countили адаптеров TStream по требованию черезLoadCustomDocument. Совместимый, строгий и восстановительный режимы добавляют ограниченную диагностику классического, гибридного и xref-потокового разбора, не подменяя семантический парсер PDFium- Проверенный восстановленный вывод —
SaveAsRepairedсоздаёт полную копию с одной редакцией и независимо строгозагружает её xref и структуру страниц перед возвратом байтов или атомарной заменой файла- Типизированный граф объектов —
ExportObjectGraphвыдаёт ограниченный типизированный JSON для прямых значений и значений из объектных потоков, аSaveAsObjectGraphPatchedприменяет проверенные изменения словарей верхнего уровня как поэтапную инкрементальную редакцию и строгозагружает результат перед выдачей- Защита паролем — открытие защищённых паролем 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, чтобы отключить сжатие для отладочных конвейеров- Масштабируемое пакетное слияние —
MergeFilesимпортирует файловые источники с диапазонами страниц и паролями на каждый источник, держит открытым не более одного исходного документа и предоставляет политики прогресса, отмены, остановки или пропуска, отката, форм, закладок, ресурсов и настроек просмотрщика- Импорт подмножества страниц —
ImportPagesByIndexкопирует явный массив нулевых индексов из исходного документа, при этом InsertAt = 0 вставляет перед страницей 1, а InsertAt = PageCount добавляет в конец. Передайте пустой массив индексов, чтобы импортировать все страницы источника.- Композиция N-up —
ImportNPagesToOneвозвращает совершенно новыйTPdf, страницы которого являются композициями NumX×NumY из страниц исходного документа, размер задаётся в пользовательских единицах PDF (1 единица = 1/72 дюйма)- Изменение порядка страниц —
MovePagesизменяет порядок страниц на месте, используя массив нулевых индексов и индекс назначения для первой перемещаемой страницы- Валидация плана страниц —
ValidatePagePlanпредварительно просматривает отображения удаления, перемещения, вставки, разделения и слияния, инвентаризирует эффекты для навигации, меток, форм, дерева структуры, импортированных возможностей и подписей и отклоняет планы, которые оставили бы висячие цели или изменяли подписанное содержимое без явного разрешения- Двухпроходная генерация компоновки —
GenerateLayoutизмеряет и разбивает на страницы свёрнутый текст, линейки, изображения, XObject страниц, колонтитулы перед атомарной генерацией нативных объектов страницы, а стабильные заполнители{page}и{pages}сохраняют измерённое число страниц- Постраничная компоновка с хранением на диске —
GeneratePagedLayoutзаписывает команды в выбранное вызывающим кодом позиционируемое хранилище, восстанавливает каждую страницу из компактных несмежных сегментов, ограничивает удерживаемые массивы страниц кэшем LRU и последовательно добавляет страницы PDFium- Табличная компоновка через границы страниц —
TPdfLayoutTableоднократно вычисляет фиксированные, дробные и определяемые содержимым колонки, повторяет смежные строки заголовков, разбивает подходящие строки тела, сохраняет группы с объединением строк нетронутыми и генерирует подписи, рамки ячеек, ссылки и одну непрерывную семантическую иерархию Table / TR / TH / TD через страницы- Кэшированные узлы компоновки — планы компоновки кэшируются по полным идентичностям ограничений, содержимого, шрифтов, стилей, источника и измерителя, а
TPdfLayoutCachedNodeлениво строит повторяющиеся шаблоны и генерирует каждое размещение из одного переиспользуемого нативного Form XObject- Автоматическая компоновка Tagged PDF —
GenerateTaggedLayoutгенерирует нативные MCID, артефакты, дерево структуры Document, отображения ParentTree и IDTree, заголовки, списки, иллюстрации с альтернативным текстом, заголовки таблиц и аннотации Link с владением OBJR из того же измеренного плана компоновки; ограничения элементов удерживают блоки и заголовки вместе, соблюдают минимумы «вдова» / «сирота» и форсируют физические разрывы страниц- Редактирование маркированного содержимого —
PageObjectMarks,AddPageObjectMark,SetPageObjectMarkParam,RemovePageObjectMarkParamиRemovePageObjectMarkанализируют и изменяют списки свойств BDC через стабильные нативные метки- Текст с двунаправленным письмом и сложными письменностями —
AddShapedTextпреобразует направленные проходы, контекстные формы, лигатуры, продвижения и смещения в позиционированные глифы CID Type 2, а сгенерированные отображения ToUnicode иActualTextсохраняют логическую семантику Unicode- Создание шрифтов CID Type 2 —
AddCidType2Textвнедряет предоставленные вызывающим кодом данные TrueType с явными отображениями CID-to-GID и ToUnicode, безопасным опциональным сабсеттингом, управляемым откатом на полный шрифт и проверками целостности извлечения- Единый байтовый бюджет кэша —
TPdf.CacheBudgetBytesкоординирует разобранные сцены страниц, миниатюры, данные структуры, снимки текста и снимки объектов страницы через один измеримый глобальный LRU, аTPdfTileCacheи кэш системных шрифтов могут подключаться к выбранной вызывающим кодом управляющей схеме- Системный шрифтовой провайдер хоста —
ConfigureSystemFontProviderнаправляет нативные запросы отсутствующих шрифтов через провайдер приложения с валидацией байтов, ограниченным кэшированием LRU, опциональным нативным откатом, извлечением таблиц и статистикой жизненного цикла- Повторное использование страниц через 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- Модель структурированного текста —
GetStructuredTextстроит ограниченную иерархию страница / блок / строка / стилизованный диапазон из нативной геометрии символов, метаданных шрифтов, идентичности текстовых объектов, семантики Tagged PDF и порядка отката по физической раскладке- Обнаружение и извлечение таблиц —
ExtractTablesиExtractDocumentTablesсочетают нативные слова-рамки с преобразованными линовками путей для обнаружения таблиц с рамками или выровненных по пробелам, сохраняют объединённые диапазоны, оценивают достоверность, отмечают продолжения на страницах и выдают CSV или JSON- Семантический reflow и адаптивный HTML —
BuildReflowDocumentобъединяет семантику Tagged PDF, вывод физической раскладки и извлечение таблиц в ограниченное переиспользуемое дерево узлов, безопасный HTML-вывод которого сохраняет заголовки, абзацы, списки, иллюстрации, секции страниц и диапазоны таблиц- Слой поиска OCR —
ApplyOcrSearchLayerпередаёт ограниченные нисходящие BGRA-рендеры страниц провайдеру приложения, отображает четырёхугольники достоверности через нативную геометрию страницы и добавляет невидимый текст для поиска без перекодирования изображений скана- Единицы чтения по предложениям - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits и BuildReadingUnits предоставляют записи TPdfReadingUnit размером с предложение для синхронного TTS-прослушивания
- Визуальное выделение строк —
TPdfView.SelectLineAtвыделяет визуальную текстовую строку, содержащую страницу с нумерацией с единицы и нулевой индекс символа, через ту же модель границ строк, что используется при выделении тройным кликом иShift+HomeилиShift+End- Пословная подсветка чтения -
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,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageCharиEstimateSpokenWordIndexкоординируют движки TTS хоста, произносимые фрагменты, обратные вызовы позиции слова, оценку темпа, обработку паузы/возобновления и обновления курсора слова в TPdfView- Поиск текста — поиск текста с опциями учёта регистра, целого слова и последовательного поиска через
FindFirst,FindNextиFindPreviousлибо потоковый обход совпадений вперёд и назад по всему документу сTPdf.CreateDocumentSearch, прямоугольниками результатов в пространстве страницы, кооперативной отменой и постоянным объёмом памяти на дескрипторы страниц- Наложение подсветки результатов поиска —
TPdfView.HighlightSearchTextзаменяет наложение совпадений текущей страницы, аAddSearchTextHighlightдобавляет уникальные диапазоны для дополнительных запросов, чтобы несколько запросов оставались видимыми одновременно.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запекают аннотации и поля форм в статическое содержимое страницы (нередактируемое)- Выделение текста, буфер обмена и Undo / Redo виджетов формы — на сфокусированном виджете AcroForm просмотрщик предоставляет
GetSelectedFormText,CopySelectedFormTextToClipboard,CutSelectedFormTextToClipboard,PasteFormTextFromClipboard,SelectAllFormTextиFormUndo/FormRedo/FormCanUndo/FormCanRedo. Редактор обрабатываетCtrl+A,Ctrl+C,Ctrl+Insert,Ctrl+X,Shift+Delete,Ctrl+VиShift+Insert; вырезание и вставка отклоняются для полей только для чтения или сеансов без разрешения заполнения или изменения форм- Транзакции редактирования документа и отмена/возврат —
BeginEditTransaction,CommitEditTransactionиRollbackEditTransactionгруппируют произвольные правки страниц, объектов, аннотаций, вложений и метаданных, аUndoEdit,RedoEditи переносимые журналы правок используют ограниченные двунаправленные дельты с проверкой SHA-256- Восстановление после сбоев и автосохранение по фиксации — пакеты восстановления с контрольными суммами связывают отпечатки источника и восстановленного документа с ограниченным журналом правок, а атомарное автосохранение обновляет явный файл-спутник после фиксации, отмены или возврата, не перезаписывая исходный PDF
Операции с изображениями
- Извлечение изображений — извлечение растровых изображений со страниц 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, с LRU с учётом редакций, ограниченным по числу записей и байтам пикселей- Кэш разобранных сцен страниц —
TPdf.RenderPageByIndex,RenderPageThumbnailиExtractThumbnailпереиспользуют ограниченно кэшируемые в LRU сцены страниц PDFium, а правки страниц, изменения дерева страниц, состояние форм и разбор документа аннулируют устаревшие записи
Вспомогательные модули
- Асинхронная инфраструктура —
FPdfAsyncсочетает структурированную кооперативную отмену со съёмными обратными вызовами и источниками предельных сроков, настраиваемой диспетчеризацией результатовTPdfFuture<T>и переиспользуемымTPdfAsyncExecutorс фиксированными исполнителями, четырьмя приоритетными очередями FIFO, обратным давлением ограниченных очередей, дескрипторами на задачу, диагностикой времени выполнения, агрегированной статистикой и корректной остановкой- Адаптер потока —
TPdfStreamAdapterсвязывает Pascal-овскийTStreamс обратными вызовамиFPDF_FILEACCESSPDFium, благодаря чемуLoadCustomDocumentчитает блоки по требованию вместо буферизации всего PDF в памяти- Сеансы прогрессивной загрузки —
TPdfProgressiveDocumentподдерживает нативного провайдера доступности PDFium, передаёт подсказки документа, форм и страниц вTPdfRangeRequestScheduler, объединяет отсутствующие диапазоны, вытесняет фоновые передачи ради критичных для страницы байтов, ограничивает размеры запросов и число повторов, отменяет избыточные транспорты и открывает линеаризованную страницу до прибытия полного PDF- Ограниченная инспекция потоков —
TPdfStreamInspectorинвентаризирует физические объекты-потоки, предоставляет безопасные окна сырых данных и упорядоченное декодирование общих фильтров, сообщает пути нативного доступа к изображениям и вложениям и контролирует бюджеты источника, вывода, словарей, количества и коэффициента расширения- Нормализация потоков содержимого —
TPdf.SaveAsNormalizedContentтокенизирует логическое содержимое страницы, удаляет комментарии, проверяет баланс состояния и контейнеров, сохраняет неподдерживаемые операторы и данные встроенных изображений и объединяет безопасные массивы/Contents- Вывод Fast Web View —
TPdf.SaveAsLinearizedзаписывает объекты первой страницы раньше последующих страниц, генерирует две секции перекрёстных ссылок и строит таблицы подсказок смещений страниц и общих объектов, чтобы клиент HTTP Range мог открыть запрошенную страницу без загрузки полного файла- Вывод объектных потоков —
TPdf.SaveAsObjectStreamупаковывает подходящие значения в ограниченные группы ObjStm PDF 1.5+, держит критичные для открытия объекты прямыми и записывает адаптивные записи xref типа 2 для уменьшения файлов без потери произвольного доступа- Инкрементальное сохранение изменённых объектов —
TPdf.BeginIncrementalSaveиCommitIncrementalSaveсравнивают стабильные семантические снимки, сохраняют каждый предыдущий зашифрованный или незашифрованный байт, наследуют параметры безопасности R5, R6 или R7, дописывают только изменённые объекты, строго переоткрывают каждый результат и для файловых фиксаций используют надёжный боковой файл с атомарной заменой- Управление Optional Content —
TPdf.InspectOptionalContentинвентаризирует слои, конфигурации, метаданные использования, радиогруппы, порядок, блокировки, политики OCMD и выражения видимости, аSaveAsOptionalContentConfiguredзаписывает детерминированные состояния слоёв, которые PDFium применяет через свой нативный контекст рендеринга- Ограниченное рабочее хранилище —
TPdfRandomAccessStoreдержит небольшие данные в памяти, однократно сбрасывает их в приватный временный файл с удалением при закрытии по выбранному вызывающим кодом порогу и выполняет позиционированные чтения без изменения общего курсора;TPdf.SaveMemoryLimitприменяет ту же политику к постобработке базового сохранения, а обновления каталога для open-action по умолчанию и меток страниц используют окна фиксированного размера и разреженный ленивый индекс объектов- Нативный запрос версии —
TPdf.PdfVersionповторно использует состояние парсераFPDF_GetFileVersionдля семантики заголовка и каталога, с одной восьмибайтовой проверкой заголовка для отклонения некорректных понижений версии каталога- Набор инструментов матричной геометрии —
FPdfMatrixоборачиваетFS_MATRIXиз PDFium, предоставляя пост- и предкомпозицию, преобразования с учётом опорной точки, вписывание прямоугольников stretch / contain / cover, диагностику обратимости с учётом масштаба, разложение, немутирующие помощники обращения, отображение векторов и четырёхугольников, пакетные вычисления точек или прямоугольников с одним выделением памяти, варианты на месте и границы преобразования за один проход- Отменяемый прогрессивный рендеринг —
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 — запрос разрешений обнаружения и предотвращения изменений документа
- Анализ редакций после подписи —
AnalyzeSignatureRevisionsклассифицирует инкрементальные изменения исходных байтов относительно DocMDP и FieldMDP, выявляет обновления материалов проверки и сообщает теневые определения или неразрешённые сжатые объекты без пересохранения документа- Профили эллиптических кривых PDF 2.0 — валидация PAdES распознаёт подписи NIST, Brainpool, Ed25519 и Ed448, проверяет соответствие кривой и хеш-функции и параметры AlgorithmIdentifier и сообщает о неподдерживаемой нативной криптографии отдельно от недопустимых комбинаций
Поддержка вложений
- Доступ к вложениям — чтение, создание, изменение и удаление встроенных файловых вложений
- Ограниченное пакетное извлечение —
ReadAttachmentMetadataоднократно инвентаризирует вложения, аExtractAttachmentsToStreamsзаписывает за раз одну декодированную полезную нагрузку под контролем лимитов на файл, суммарного лимита, размера фрагментов и отмены- Имена вложений — доступ к именам файлов вложений
- Типы вложений — чтение значений 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. При отмене растровое изображение содержит частичную работу, выполненную к этому моменту.- Параллельный рендеринг страниц —
RenderPagesParallelоднократно фиксирует текущий документ, даёт каждому исполнителю независимо загруженный модуль PDFium и документ, сохраняет порядок запросов и ограничивает удерживаемую память вывода на страницу и суммарно- Защитное удаление содержимого —
SaveAsRedactedприменяет прямоугольники/Redactк изолированному снимку, консервативно удаляет пересекающиеся объекты страницы верхнего уровня и перекрывающиеся аннотации, закрашивает непрозрачные замены, удаляет встроенные вложения и записывает санитизированный результат с одной редакцией, не изменяя загруженный документ- Опции рендеринга — оптимизация 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(ширина страницы соответствует ширине области просмотра) иpfmFitHeight(высота страницы соответствует высоте области просмотра). Активный режим вписывания автоматически переприменяется при изменении размера и смене текущей страницы; прямая установка 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- Ограниченный инструментарий DER —
FPdfAsn1кодирует низкие и высокие номера тегов, типизированные значения, отсортированные коллекции SET OF и канонические формы времени или строк; его окна чтения без копирования, типизированные декодеры и ограниченный по ресурсам валидатор поддерживают рабочие процессы CMS, PAdES, сертификатов и меток времени- Долгосрочная проверка для конкретной подписи —
TPadesDssOptions.Vrisзаписывает хешированные по ключу косвенные словари VRI, а общие потоки сертификатов, OCSP и CRL дедуплицируются по хешу содержимого; подписание PAdES B-LT или B-LTA автоматически создаёт VRI новой подписи- Удалённое и прерываемое подписание —
PreparePadesRemoteSignatureсохраняет SHA-256-дайджест документа, точный ByteRange, координаты заполнителей и отпечаток подготовленного PDF для подписания через HSM или облако, аCompletePadesRemoteSignatureотклоняет изменённые, повторно используемые, с превышением размера или несовпадающие по дайджесту сеансы перед записью вывода- Анализ политики редакций подписи —
AnalyzeSignatureRevisionsвосстанавливает цепочки классических, гибридных и xref-потоковых редакций, применяет DocMDP и FieldMDP на каждую подпись и завершается ошибкой при некорректных, теневых, сжатых или выходящих за бюджет изменениях- Профили подписи, устойчивые к неоднозначности — валидация PAdES считает обязательные ключи только на верхнем уровне словаря подписи, отклоняет дубликаты и несогласованные профили Sig или DocTimeStamp и требует, чтобы ByteRange исключал ровно прямой шестнадцатеричный токен Contents
- Экспорт доказательств для нескольких подписей —
BuildPadesEvidenceReportсопоставляет факты PDFium, политику CMS, статус доверия и меток времени, хеши пути сертификатов, покрытие DSS/VRI и решения по редакциям с ограниченным выводом JSON и CSV- Обновление архивной метки времени —
RenewPadesArchiveTimestampдобавляет Document Time-stamp RFC 3161 поверх точной существующей истории подписей, опционально сначала обновляет полный DSS и валидирует итоговую цепочку B-LTA перед выводом- Асинхронная проверка доверия —
ValidatePadesTrustиValidatePadesTrustAsyncпроверяют отсоединённые подписи по исходным байтам, цепочки подписанта и TSA, опциональные онлайн-доказательства отзыва и токены меток времени RFC 3161 с поэтапным прогрессом, ограниченным извлечением и кооперативной отменой- Квалифицированное доверие —
TPdfEuropeanTrustedListразбирает только аутентифицированные вызывающим кодом списки доверия ETSI, повторно аутентифицирует кешированный XML, принимает собственные источники обновлений вызывающей стороны и обеспечивает офлайн-оценку квалифицированных сервисов черезQualifiedTrustEvaluator- Удаление защиты — сохранение документов с удалённой защитой (при наличии полномочий)
Печать
- Режимы печати — выбор между режимами 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.x ГБ могут достичь пригодного первого просмотра практически мгновенно, а рендеринг страниц остаётся отзывчивым
- ViewerInteractionLab — образцы взаимодействия TPdfView для Delphi, C++Builder и Lazarus, посвящённые режимам отображения, режимам вписывания, цветам страниц, повороту, подсветке поиска, выделению текста, предпросмотру выделенного текста, действиям буфера обмена и обратной связи координат DeviceToPage
- SearchAndSelect — образцы рабочих процессов для Delphi, Lazarus и C++Builder, посвящённые перечислению результатов поиска по всем страницам, навигации к предыдущему/следующему совпадению, переходу к результату по двойному клику,
HighlightSearchText, поиску с учётом регистра/целого слова,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelectionи режимам разворота- PreflightReport — переиспользуемые объекты
FPdfPreflightReportсобирают результаты PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R и PDF/VT со статусом, степенями серьёзности Info / Warning / Error, поиском, фильтрацией, детерминированной агрегацией, стабильными отпечатками SHA-256, выводом TXT / HTML / Markdown / JSON / CSV и форматами автоматизации SARIF 2.1.0 / JUnit XML / NDJSON / XML; демонстрации Delphi, Lazarus и C++Builder плюс консольные рабочие процессы дают предпросмотры, пакетную маршрутизацию, сводки, вложения отчётов и управление кодом выхода для 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
Выровненное сравнение выявляет вставленные, удалённые и перемещённые страницы с ограниченными текстовыми изменениями Unicode и несколькими визуальными областями; слои наложения делают эти изменения экспортируемыми
Транзакционное слияние навигации сохраняет иерархию структуры, стили, действия URI и пересопоставленные пункты назначения страниц при выборочном и переупорядоченном импорте страниц
Опциональный OCR Tesseract добавляет распознаваемый текст на отсканированные страницы с явной диагностикой зависимостей, отменой и бюджетами ресурсов
Транзакционное слияние выбранных страниц AcroForm поддерживает явные политики имён и изоляцию ресурсов; опциональный провайдер штрихкодов генерирует Code128, QR, DataMatrix и PDF417 и распознаёт полутоновые изображения