Примечания к выпускам PDFiumVCL
История версий пользовательских возможностей PDFiumVCL, исправлений, улучшений просмотрщика, генерации документов, вывода PDF/A, рендеринга и обновлений документации.
Version 1.39.52
Изменено (Changed)
- Расширен
Demo\Lazarus\CreatePDF: вводный пример теперь создает двухстраничный PDF с vector paths, table content, embedded image, text annotation, rotated text и более понятным document-building walkthrough. - Для всех папок демо Delphi, C++Builder и Lazarus добавлены оформленные страницы
README.html; оставшийся текстовый README демо заменен руководством, удобным для чтения в браузере. - Обновлены
TPdf.AboutInfo, метаданные пакета Lazarus и метаданные версии установщика до 1.39.52.
Version 1.39.51
- Batch summary в
Demo\Delphi\PreflightReportCliрасширены итогами стандартных статусов для результатов Pass, Action required и Review по выбранным стандартам. - Строки по файлам теперь включают счетчики action-required и review в summary TXT / HTML / JSON / CSV, что упрощает проверку CI artifacts без открытия каждого созданного отчета.
- Обновлены
TPdf.AboutInfo, метаданные пакета Lazarus и метаданные версии установщика до 1.39.51.
Version 1.39.50
- Улучшен режим пакетной обработки каталогов в
Demo\Delphi\PreflightReportCli:batchdir=folderтеперь собирает найденные пути PDF, сортирует их и затем создает отчеты в стабильном порядке. - Рекурсивные сканирования каталогов теперь создают воспроизводимый порядок отчетов и строк summary, а явная обработка
batch=list.txtпо-прежнему сохраняет порядок файла списка. - Обновлены
TPdf.AboutInfo, метаданные пакета Lazarus и метаданные версии установщика до 1.39.50.
Version 1.39.49
- Расширены batch summary в
Demo\Delphi\PreflightReportCli: теперь они записывают run settings, включая тип источника, путь источника, рекурсивный режим, выходной каталог, формат отчета, выбранные стандарты и режимfailon=. - JSON summary теперь содержит объект
run, TXT и HTML summary показывают раздел run settings, а CSV rows повторяют те же audit columns для электронных таблиц и CI pipelines. - Обновлены
TPdf.AboutInfo, метаданные пакета Lazarus и метаданные версии установщика до 1.39.49.
Version 1.39.48
- Улучшен batch output naming в
Demo\Delphi\PreflightReportCli: duplicate input file names, использующие одинoutdir=, больше не перезаписывают generated reports друг друга. - Batch runs теперь добавляют суффиксы
-2,-3и последующие, когда generated report path уже назначен в том же запуске, а summaries записывают итоговый collision-safe report path. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.48.
Version 1.39.47
- Batch summaries в
Demo\Delphi\PreflightReportCliулучшены: TXT и JSON outputs теперь включают aggregate totals для total files, processed files, failed files, issues иfailon=matches. - CSV summaries остаются чистой row table для существующих consumers, а HTML summaries продолжают показывать те же aggregate metrics в dashboard header.
- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.47.
Version 1.39.46
Demo\Delphi\PreflightReportCliрасширенsummary=batch.html/.htm, чтобы batch runs могли выводить browser-readable dashboard вместе с TXT / CSV / JSON manifests.- HTML summaries показывают metrics total, processed, failed, issue и совпадения
failon=, затем перечисляют каждый input с report links, status, counts и error text. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.46.
Version 1.39.45
Demo\Delphi\PreflightReportCliрасширен параметрамиbatchdir=folderиrecursive, чтобы scripts могли напрямую сканировать PDF folders без предварительного создания list file.- Directory batch mode повторно использует поведение
outdir=,summary=,standards=иfailon=из list-based batch mode; non-recursive сканирует только выбранную folder, аrecursiveвключает subfolders. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.45.
Version 1.39.44
- Расширен
Demo\Delphi\PreflightReportCli: добавленsummary=batch.csv|json|txt, чтобы batch runs могли выводить machine-readable manifest рядом с per-file reports. - Batch summaries включают каждый input path, report path, status, standard count, passed count, issue count, состояние совпадения
failon=и error text для CI jobs и внешних scripts. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.44.
Version 1.39.43
- Расширен
Demo\Delphi\PreflightReportCli: добавленыbatch=list.txtиoutdir=reports, чтобы scripts могли за один запуск создавать preflight reports для списка PDF files. - Batch mode пропускает пустые строки и строки комментариев
#, формирует каждый report name.preflight.<ext>из входного PDF, продолжает работу после per-file errors и перед возвратом выводит сводку processed и failed files. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.43.
Version 1.39.42
Demo\Delphi\PreflightReportCliрасширен параметромfailon=none|issues|action|review, чтобы CI jobs могли преобразовывать созданные preflight results в детерминированные exit codes.- CLI теперь возвращает exit code 2, когда выбранная
failon=rule срабатывает после создания report file и optional attached-report PDF; runtime errors по-прежнему возвращают exit code 1. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.42.
Version 1.39.41
Demo\Delphi\PreflightReportCliрасширен параметромattach=output.pdf, чтобы созданный preflight report можно было встроить как document-level attachment в новую PDF copy.- CLI сохраняет созданный TXT / HTML / Markdown / JSON / CSV report file на диске и отказывается прикреплять его обратно к исходному input PDF path, снижая риск случайной перезаписи.
- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.41.
Version 1.39.40
- Добавлен
Demo\Delphi\PreflightReportCli, Delphi console companion для scriptable генерацииFPdfPreflightReportбез открытия viewer. - CLI поддерживает no-argument sample creation, input / output arguments, optional password, форматы вывода
text/html/md/json/csvиstandards=filtering для PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R и PDF/VT. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata для отображения 1.39.40.
Version 1.39.39
FPdfPreflightReportрасширен методамиTPdfPreflightReport.ToMarkdownиSaveMarkdownToFile, чтобы preflight reports можно было экспортировать как Markdown, удобный для issue tracker.- Примеры
PreflightReportдля Delphi, C++Builder и Lazarus обновлены: добавлены Markdown preview switching и действия Save MD наряду с существующим workflow TXT / HTML / JSON / CSV. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.39.
Version 1.39.38
- Примеры
SecurityAuditдля Delphi, C++Builder и Lazarus расширены JSON audit report export наряду с существующим TXT save / copy workflow. - JSON report содержит
format,generatedAt,summary,findingCountи структурированные строкиfindingsс полями severity, area и detail. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.38.
Version 1.39.37
FPdfPreflightReportрасширен методамиTPdfPreflightReport.ToCsvиSaveCsvToFile, чтобы preflight reports можно было экспортировать как spreadsheet-friendly CSV.- Samples Delphi, C++Builder и Lazarus
PreflightReportобновлены: добавлены CSV preview switching и Save CSV actions рядом с существующим TXT / HTML / JSON workflow. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.37.
Version 1.39.36
FPdfPreflightReportрасширен методомTPdfPreflightReport.IssueCategoryCountsи переиспользуемыми типамиTPdfPreflightIssueCategoryCountиTPdfPreflightIssueCategoryCountsдля группировки marker-level issues по category.TPdfPreflightReport.ToText,ToHtmlиToJsonобновлены, чтобы сгенерированный PreflightReport включал issue-category count summaries наряду с per-standard rows и detailed issue recommendations.- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, теперь они сообщают 1.39.36.
Version 1.39.35
- Расширенный sample
PrintDialogпереименован вPrintPreferencesдля Delphi, C++Builder и Lazarus, чтобы demo name соответствовал workflow для PDF author print preferences, N-up printing, odd / even filtering, grayscale, cell border и duplex mapping. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, теперь они сообщают 1.39.35.
Version 1.39.34
Demo\Delphi\PrintPDFполучил загрузку PDF перетаскиванием, а существующий workflowDemo\CBuilder\PrintPDFзадокументирован вместе с примерами PrintPDF для Delphi и Lazarus.- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.34.
Version 1.39.33
- Добавлен
Demo\CBuilder\SplitView, завершая SplitView sample matrix для Delphi, C++Builder и Lazarus. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы они сообщали 1.39.33.
Version 1.39.32
- Добавлен
Demo\Lazarus\SplitView: side-by-side PDF comparison теперь доступен в Lazarus с two- or three-pane layouts, active-view navigation, synchronized commands, zoom presets и rotation. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы они сообщали 1.39.32.
Version 1.39.31
- Добавлен
Demo\Lazarus\PrintPDF: standard PDF print workflow теперь доступен в Lazarus с preview navigation, page ranges, copies, collate mode, progress и cancellation. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы они сообщали 1.39.31.
Version 1.39.30
- Добавлен
Demo\Lazarus\FontProperties, завершающий матрицу примеров FontProperties для Delphi, C++Builder и Lazarus. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.30.
Version 1.39.29
- Добавлен
Demo\CBuilder\FontProperties, который переносит проверку индексированных метаданных символов и шрифтов в C++Builder наряду с примером Delphi. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.29.
Version 1.39.28
- Добавлен
Demo\Delphi\ExtractTextPages, завершающий матрицу примеров постраничного извлечения текста для Delphi, C++Builder и Lazarus. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.28.
Version 1.39.27
- Добавлен
Demo\Lazarus\PrintDialog, что завершает PrintDialog sample matrix для Delphi, C++Builder и Lazarus. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.27.
Version 1.39.26
- Добавлен
Demo\CBuilder\PrintDialog, поэтому N-up printing и PDF author print preferences workflow теперь доступны в C++Builder наряду с Delphi sample. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.26.
Version 1.39.25
- Добавлен
Demo\CBuilder\ViewerInteractionLab, что завершает ViewerInteractionLab sample matrix для Delphi, C++Builder и Lazarus. - Обновлены library build workflow и Win64 C++Builder package outputs, чтобы
TPdfViewviewer interaction methods корректно связывались в Win64 demos. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.25.
Version 1.39.24
- Добавлен
Demo\Lazarus\ViewerInteractionLab, поэтому focused viewer interaction workflow теперь доступен в Lazarus наряду с Delphi sample. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.24.
Version 1.39.23
- Добавлен
Demo\Lazarus\SearchAndSelect, завершающий SearchAndSelect sample matrix для Delphi, C++Builder и Lazarus. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.23.
Version 1.39.22
- Добавлены
Demo\CBuilder\ContentExtractionLabиDemo\Lazarus\ContentExtractionLab, поэтому multi-category content extraction workflow теперь доступен во всех поддерживаемых demo IDE. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.22.
Version 1.39.21
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportиDemo\CBuilder\PreflightReportдополнены preview format selector, чтобы пользователи могли проверить text или JSON output перед сохранением отчетов.- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.21.
Version 1.39.20
- Добавлен JSON export для
FPdfPreflightReportчерезTPdfPreflightReport.ToJsonиSaveJsonToFile, включая машиночитаемые summary, per-standard status / priority, next action и issue detail. Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportиDemo\CBuilder\PreflightReportдополнены действиями Save JSON рядом с экспортом TXT / HTML.- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы сообщать 1.39.20.
Version 1.39.19
FPdfPreflightReportрасширен: добавленыTPdfPreflightStatus, issue categories, per-standard priority и next-action guidance в TXT / HTML reports.Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportиDemo\CBuilder\PreflightReportтеперь показывают status, priority, issue count и next action в summary grid.TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены до 1.39.19.
Version 1.39.18
- Добавлен
Demo\Lazarus\SecurityAudit, завершающий матрицу примеров Delphi, C++Builder и Lazarus для read-only PDF risk-surface audit workflow. - Пример Lazarus перечисляет permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability и unsupported-feature callbacks, затем сохраняет или копирует finding list как TXT report.
TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены до 1.39.18.
Version 1.39.17
- Добавлен
Demo\CBuilder\SecurityAudit: read-only PDF risk-surface audit workflow теперь доступен в C++Builder вместе с существующим примером Delphi. - Пример C++Builder перечисляет permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability и unsupported-feature callbacks, затем сохраняет или копирует finding list как TXT report.
TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены до 1.39.17.
Version 1.39.16
- Добавлен
Demo\CBuilder\SearchAndSelect: самостоятельный SearchAndSelect viewer workflow теперь доступен в C++Builder вместе с существующим примером Delphi. - Пример C++Builder создает или открывает PDFs, выводит matches по всем страницам с page / character-index previews, поддерживает Previous / Next и double-click navigation, а также подсвечивает matches текущей страницы через
HighlightSearchText. - Он также показывает
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeи spreadDisplayModeoptions; метаданные версии теперь сообщают 1.39.16.
Version 1.39.15
- Добавлен
Demo\CBuilder\WatermarkStamp, завершающий demo matrix Delphi, Lazarus и C++Builder для reusable Form XObject watermark и stamp workflows. - Пример C++Builder создает target и stamp PDF, повторно использует stamp page через
CreateXObjectFromPage, применяетTPdfMatrixtransforms и сохраняет centered watermarks, corner stamps и page number labels. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы они сообщали 1.39.15.
Version 1.39.14
- Добавлен
Demo\Lazarus\WatermarkStamp, который переносит reusable Form XObject watermark и stamp workflow в Lazarus. - Пример Lazarus создает target и stamp PDF, повторно использует stamp page через
CreateXObjectFromPage, применяетTPdfMatrixtransforms и сохраняет centered watermarks, corner stamps и page number labels. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы они сообщали 1.39.14.
Version 1.39.13
- Добавлен
Demo\CBuilder\PreflightReport, завершающий матрицу demos Delphi, Lazarus и C++Builder для переиспользуемого workflowFPdfPreflightReport. - Пример C++Builder использует
FPdfPreflightReport.hppдля создания standard summaries, TXT report previews, TXT / HTML report files и поведения Open Last Report. TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены, чтобы сообщать 1.39.13.
Version 1.39.12
- Добавлен
Demo\Lazarus\PreflightReport, который переносит preflight report workflow для PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R и PDF/VT в Lazarus. - Пример Lazarus может открыть или создать PDF, выбрать target standards, показать summary rows и TXT report output, сохранить TXT / HTML reports и открыть последний сохраненный report.
TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены, чтобы сообщать 1.39.12.
Version 1.39.11
Demo\Delphi\SearchAndSelectрасширен списком результатов поиска по всем страницам, который записывает page number, character index и preview text.- Добавлены Previous / Next match navigation и double-click result jumping при сохранении поведения
HighlightSearchTextна текущей странице. TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены, чтобы сообщать 1.39.11.
Version 1.39.10
Demo\Delphi\SecurityAuditрасширен действиями Save Report и Copy Report, которые экспортируют текущий summary и finding rows как TXT audit report.- Теперь demo очищает report export state при сбросе audit panel, чтобы скопированные или сохраненные reports соответствовали видимым findings.
TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены для версии 1.39.10.
Version 1.39.9
Demo\Delphi\ContentExtractionLabрасширен действиями source-PDF save, report copy-to-clipboard и all / none category selection.- Теперь demo сбрасывает текущий report при изменении category selection, чтобы TXT / JSON exports отражали видимый extraction scope.
TPdf.AboutInfo, Lazarus package metadata и installer version metadata обновлены для версии 1.39.9.
Version 1.39.8
- Добавлен
Demo\Delphi\ContentExtractionLab, единый content extraction workflow sample для document metadata, page text, page objects, images, attachments, links, annotations, bookmarks и font / character metrics. - Пример может открыть существующий PDF или создать synthetic PDF с содержимым text, image, attachment и annotation, а затем сформировать summary rows и подробные TXT / JSON reports.
- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.8.
Version 1.39.7
- Добавлен
Lib\FPdfPreflightReport.pas, переиспользуемый report helper, который объединяетValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRиValidatePdfVTв один объектTPdfPreflightReport. - Добавлен
Demo\Delphi\PreflightReport, workflow sample для открытия или создания PDF, выбора target standards, просмотра summary rows и issue recommendations, а также сохранения TXT или HTML отчетов. - Создаваемые отчеты явно описывают границу встроенной marker-level validation, чтобы приложения могли при необходимости использовать dedicated content-level preflight tools.
- Обновлены
TPdf.AboutInfo, Lazarus package metadata, package project lists и installer version metadata, чтобы показывать 1.39.7.
Version 1.39.6
- Добавлен
Demo\Delphi\SearchAndSelect, сфокусированный пример viewer workflow для search highlighting, text selection, selected-text preview, copy, clear и spread display modes. - Пример демонстрирует
HighlightSearchText, параметры поиска match-case / whole-word,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardиClearSelectionбез добавления новой library API. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.6.
Version 1.39.5
Demo\Delphi\ViewerInteractionLabрасширен до примера viewer UX в стиле SearchAndSelect сHighlightSearchText, параметрами match-case / whole-word, предварительным просмотром выбранного текста и существующими selection / clipboard controls.Demo\Delphi\PrintDialogрасширен для проверки PDF author print preferences:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlingи видимого duplex mapping черезSetPdfPrintPaperHandlingDevMode.- Добавлен
Demo\Delphi\SecurityAudit, read-only пример risk-surface, который перечисляет permissions, attachments, document JavaScript, URI / Launch links, web links, signatures, XFA state и V8 / XFA helper availability. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.5.
Version 1.39.4
- Добавлены
Demo\CBuilder\ImageToPDFиDemo\Lazarus\ImageToPDF, завершающие матрицу примеров ImageToPDF для Delphi, C++Builder и Lazarus. - Новые примеры демонстрируют выбор нескольких изображений, предварительный просмотр выбранного изображения, одну PDF-страницу на изображение, размер страницы A4 portrait / landscape, центрированное масштабирование изображения, прогресс по изображениям и открытие созданного PDF после сохранения.
- Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.4.
Version 1.39.3
- Добавлен
Demo\CBuilder\BatchExport, который переносит workflow многофайлового экспорта PDF в JPG в C++Builder наряду с существующими примерами Delphi и Lazarus. - Пример демонстрирует
LoadCustomDocument,IPdfCancellationTokenSource, потоковый вводTFileStream, прогресс по файлам и страницам, обработку отмены, ввод DPI / quality / password и открытие выходной папки после завершения. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.3.
Version 1.39.2
- Добавлен
Demo\Delphi\WatermarkStamp, исполняемый пример workflow Form XObject, который создает целевой PDF и повторно используемый stamp PDF, а затем применяет центральные водяные знаки, штампы в правом верхнем углу и метки номеров страниц ко всем страницам. - Пример демонстрирует
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixиFPDFPageObj_SetMatrixбез добавления новой API библиотеки. - Обновлен
Docs\en-us\Examples.html: при передаче матриц вFPDFPageObj_SetMatrixтеперь используется актуальный шаблонTPdfMatrix.Handle. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.2.
Version 1.39.1
- Исправлена совместимость batch-build для C++Builder demo
PDFViewerиMultiPageViewer: для текущего project modenullptrзаменен наNULL. - Добавлен
Demo\Delphi\ViewerInteractionLab, компактный примерTPdfViewдля display modes, fit modes, page colors, rotation, user text selection, clipboard actions и обратной связи координатDeviceToPage. - Добавлен
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLab, чтобы пользователи Lazarus могли запускать workflow проверки и marker-output для PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R и PDF/VT. - В
Lib\37.0\PDFiumVcl.dprojandLib\FPC\PDFiumLaz.lpkперечислены standards units, а сборка Delphi demoSplitViewисправлена удалением дублирующего importWinapi.ShellAPI. - Исправлены блокировки batch-build для Delphi demo в
BatchExport,PDFViewer,MultiPageViewerиSplitViewбез изменения runtime behavior. - Обновлены
TPdf.AboutInfo, Lazarus package metadata и installer version metadata, чтобы указывать 1.39.1.
Version 1.39.0
- Добавлен
Demo\Delphi\StandardsLab, запускаемый пример рабочего процесса стандартов: он загружает или создает PDF, выполняетValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRиValidatePdfVT, а затем показывает обнаруженную conformance, статус прохождения и количество issue в одной таблице. - Кнопки сохранения StandardsLab вызывают
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRиSaveAsPdfVT, делая вывод marker стандартов PDF видимым без написания собственного harness. - Обновлены
TPdf.AboutInfo, метаданные пакета Lazarus и метаданные версии установщика до 1.39.0.
Version 1.38.0
- Оверлеи поиска и выделения текста в
TPdfViewтеперь используют настоящее alpha blending вместо логического рисования mask, сохраняя содержимое страницы под подсветкой. - Добавлена функция
SetPdfPrintPaperHandlingDevMode, которая сопоставляетTPrintPaperHandlingсо значениями WindowsDEVMODE.dmDuplex:DMDUP_SIMPLEX,DMDUP_HORIZONTALиDMDUP_VERTICAL. TPdfView.SmoothScrollтеперь анимирует line/page scrollbar commands через timer-driven segments; thumb tracking остается мгновенным.TPdf.AboutInfoи метаданные версии установщиков обновлены до 1.38.0.
Version 1.37.0
TPdfтеперь имеет блокировку рендера на уровне экземпляра, сериализующуюRenderPage,RenderTile,RenderPageProgressive, перезагрузку страницы и выгрузку документа. Рендеринг из worker через общий компонент стал практичным; приложение по-прежнему координирует изменения документа и жизненный цикл.- Исправлена zero-copy обертка bitmap: bottom-up DIB
TBitmapтеперь отклоняется с fallback на собственный буфер PDFium и финальное копирование, что устраняет stride corruption / access violation в VCL render тестах. - Уточнено поведение выделения
TPdfView:AllowUserTextSelectionблокирует только пользовательский ввод, API выделения из кода продолжают рисовать, аSelectAllследует фактически видимому spread, поэтому обложка больше не выбирает страницу 2. Тесты Delphi, Lazarus и C++Builder расширены. TPdf.AboutInfoи метаданные версии установщиков обновлены до 1.37.0.
Version 1.36.0
- Включено пользовательское выделение текста в
TPdfView: зарезервированный в v1.17.0AllowUserTextSelectionтеперь управляет drag-select, double-click word, triple-click line,Ctrl+A,Ctrl+CиShift+arrows. - Добавлены
SelectionColor,OnSelectionChangeи API выделения из кода:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard. - Режимы spread поддерживают выделение между видимыми страницами; стандартное меню Copy подключается автоматически, если host не задал
PopupMenu; выделение очищается при смене документа, страницы, Active или DisplayMode. - Тесты Delphi, Lazarus и C++Builder расширены для свойств выделения, мышиного пути, клавиатурных сочетаний, стандартного popup, clipboard round-trip и spread selection.
Version 1.35.0
- Добавлена поддержка инъекции маркеров PDF/VT (ISO 16612-2:2010): TPdf.SaveAsPdfVT преобразует текущий документ в файл, соответствующий PDF/VT-1 или PDF/VT-2 (подмножество PDF для печати переменных данных и транзакционной печати). PDF/VT построен поверх PDF/X-4 (§6.2.1), поэтому инжектор записывает полный набор маркеров PDF/X-4 (XMP pdfxid, Info GTS_PDFXVersion + Trapped, OutputIntent с ICC) вместе со специфичными для PDF/VT свойствами.
- Специфичные для PDF/VT свойства включают XMP
pdfvtid:GTS_PDFVTVersionиpdfvtid:GTS_PDFVTModDate(синхронизированный сxmp:ModifyDateсогласно §6.3 NOTE 1), а также описание pdfaExtension:schemas для обоих NPES-пространств имён pdfxid и pdfvtid. - Добавлен TPdf.SaveAsPdfVTToStream для вывода PDF/VT в память и краткая форма
TPdf.SaveAsPdfVT(FileName), производящая PDF/VT-1 со встроенным sRGB OutputIntent по умолчанию. - Добавлен TPdf.ValidatePdfVT: проверяет маркеры PDF/VT (включая равенство
pdfvtid:GTS_PDFVTModDate/xmp:ModifyDateи наличие/DPartRoot) и возвращает TPdfVTValidationResult. - Добавлено свойство TPdf.PdfVTConformance: возвращает уровень без явного вызова ValidatePdfVT.
- Новые типы, экспортированные в новой единице FPdfPdfvt: TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions.
- Иерархия Document Part (DPartRoot / DPart, §6.5) — структура уровня приложения и НЕ синтезируется автоматически. Требования уровня содержимого PDF/X-4 (встраивание шрифтов, прозрачность, управление цветом ICC, запреты OPI / JavaScript / Reference XObject) остаются ответственностью автора.
- Строка TPdf.AboutInfo обновлена для сообщения текущей версии продукта.
Version 1.34.0
- Добавлена поддержка инъекции маркеров PDF/R-1 (ISO 23504-1:2020): TPdf.SaveAsPdfR преобразует текущий документ в файл, соответствующий PDF/R-1 (растровое подмножество PDF для сканированных документов). Инъекция охватывает требования уровня формата файла — уникальный комментарий
%PDF-raster-1.0между trailer dictionary и startxref (§5), catalog, сокращённый до белого списка §6.3 (только Version/ViewerPreferences/PageLayout/PageMode/AcroForm/Metadata), Document Information Dictionary, сокращённый до §6.4.3 (только Creator/Producer/CreationDate/ModDate), поток XMP с четырьмя записями §6.4.4 Table 1, и массив/IDв trailer. - Добавлен TPdf.SaveAsPdfRToStream для вывода PDF/R в память и краткая форма
TPdf.SaveAsPdfR(FileName). - Добавлен TPdf.ValidatePdfR: проверяет маркеры и возвращает TPdfRValidationResult.
- Добавлено свойство TPdf.PdfRConformance: возвращает уровень без явного вызова ValidatePdfR.
- Новые типы, экспортированные в новой единице FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions. По умолчанию из Info удаляются Title/Author/Subject/Keywords, а из catalog — недопустимые записи.
- Требования уровня содержимого (структура Contents для каждой страницы, MediaBox
[0 0 w h], ограниченные фильтры, отсутствие object streams, расположение полос) остаются ответственностью исходного PDF. PDF/R структурно строже других PDF/x; для полной проверки используйте валидатор TWAIN Working Group. - Строка TPdf.AboutInfo обновлена для сообщения текущей версии продукта.
Version 1.33.0
- Добавлена поддержка инъекции маркеров PDF/X (семейство ISO 15930): TPdf.SaveAsPdfX преобразует текущий документ в файл, соответствующий PDF/X-1a:2001, PDF/X-3:2002 или PDF/X-4, путём постобработки базового PDF инкрементным обновлением. Инъекция охватывает требования уровня формата файла — поток XMP с
pdfxid:GTS_PDFXVersionи описанием pdfaExtension:schemas, переписанный Document Information Dictionary с/GTS_PDFXVersion//GTS_PDFXConformance//Trapped, обновлённый catalog с/OutputIntents, указывающим на OutputIntent/S /GTS_PDFXсо встроенным ICC-профилем, и массив/IDв trailer. - Добавлен TPdf.SaveAsPdfXToStream для вывода PDF/X в память и краткая форма
TPdf.SaveAsPdfX(FileName), которая производит PDF/X-4 со встроенным sRGB IEC61966-2.1 OutputIntent по умолчанию. - Добавлен TPdf.ValidatePdfX: проверяет маркеры соответствия и возвращает TPdfXValidationResult.
- Добавлено свойство TPdf.PdfXConformance: возвращает уровень соответствия без явного вызова ValidatePdfX.
- Новые типы, экспортированные в новой единице FPdfPdfx: TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions. По умолчанию — PDF/X-4 с sRGB; вызывающий может предоставить CMYK ICC-профиль (FOGRA39, GRACoL2006...) через
IccProfileData. - Требования уровня содержимого (все шрифты встроены, без JavaScript, без видимых аннотаций, запрет OPI, правила прозрачности для PDF/X-1a / PDF/X-3) остаются ответственностью автора. Сочетайте с callas pdfaPilot или Ghent PDF Workgroup Output Suite для полной проверки.
- Строка TPdf.AboutInfo обновлена для сообщения текущей версии продукта.
Version 1.32.0
- Добавлена поддержка инъекции маркеров PDF/E-1 (ISO 24517-1:2008): TPdf.SaveAsPdfE преобразует текущий документ в файл, соответствующий PDF/E-1, путём постобработки базового PDF инкрементным обновлением. Инъекция охватывает требования уровня формата файла — поток XMP-метаданных с
pdfe:ISO_PDFEVersion = "PDF/E-1"и соответствующим описанием pdfaExtension:schemas, переписанный Document Information Dictionary с обязательной записью/ISO_PDFEVersion (PDF/E-1)из §5, эквивалентность Info-XMP, унаследованная из ISO 19005-1 §6.7 через §13.1, и массив/IDв trailer (§6.2). - Добавлен TPdf.SaveAsPdfEToStream для вывода PDF/E в память и краткая форма
TPdf.SaveAsPdfE(FileName). - Добавлен TPdf.ValidatePdfE: проверяет маркеры соответствия и возвращает TPdfEValidationResult.
- Добавлено свойство TPdf.PdfEConformance: возвращает уровень соответствия без явного вызова ValidatePdfE.
- Новые типы, экспортированные в новой единице FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions.
- Переписывание Info dictionary — первое в пути постобработки PDF/x PDFiumVCL — переписывает существующий объект Info под тем же номером (ссылка /Info в trailer сохраняется), синтезирует новый Info dictionary, если в исходном trailer нет /Info.
- Требования уровня содержимого (встраивание шрифтов, CMap ToUnicode, запрещённые XObject / ключи ExtGState / формы XFA) остаются ответственностью автора документа.
- Строка TPdf.AboutInfo обновлена для сообщения текущей версии продукта.
Version 1.31.0
- Добавлена поддержка инъекции маркеров PDF/UA-1 (ISO 14289-1:2014): TPdf.SaveAsPdfUa преобразует текущий документ в файл, соответствующий PDF/UA-1, путём постобработки базового PDF инкрементным обновлением. Инъекция охватывает требования уровня формата файла, выполнимые постобработкой — поток XMP-метаданных с
pdfuaid:part = 1и соответствующим описанием pdfaExtension:schemas, обязательныйdc:title, catalog/MarkInfo << /Marked true /Suspects false >>и/ViewerPreferences << /DisplayDocTitle true >>(только если их нет в источнике), catalog/Lang(когда вызывающий предоставляет тег BCP 47) и массив/IDв trailer. - Добавлен TPdf.SaveAsPdfUaToStream для вывода PDF/UA в память, и быстрая форма с параметрами по умолчанию
TPdf.SaveAsPdfUa(FileName)для распространённого случая. - Добавлен TPdf.ValidatePdfUa: проверяет в открытом PDF маркеры соответствия PDF/UA-1 (наличие StructTreeRoot, /Lang, /MarkInfo /Marked true с /Suspects = false, /ViewerPreferences /DisplayDocTitle true, идентификатор XMP pdfuaid:part, наличие dc:title, /ID в trailer, статус шифрования) и возвращает структурированный результат с обнаруженным уровнем соответствия и набором найденных проблем.
- Добавлено свойство TPdf.PdfUaConformance: возвращает уровень соответствия открытого документа (puc1, pucNone или pucUnknown) без явного вызова ValidatePdfUa.
- Новые типы, экспортированные в новой единице FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions.
- Пустые поля TPdfUaSaveOptions (Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language) автоматически заполняются через FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage.
- Требования уровня содержимого (полнота тегирования StructTreeRoot, текст Alt у Figure, CMap ToUnicode, встраивание шрифтов и т.д.) остаются ответственностью автора документа — SaveAsPdfUa добавляет только маркеры формата. ValidatePdfUa сообщает об отсутствии StructTreeRoot как
pvuaiMissingStructTreeRoot. - Строка TPdf.AboutInfo обновлена для сообщения текущей версии продукта.
Version 1.30.0
- Вывод PDF/A-1b теперь удовлетворяет требованиям ISO 19005-1 (с Cor.1:2007) к эквивалентности между Document Information Dictionary и XMP: каждая запись Info dictionary, которую PDFium записывает в базовый PDF, отражается в XMP-пакете, включая Title (dc:title), Author (dc:creator), Subject (dc:description согласно Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) и ModDate (xmp:ModifyDate). Также выводится xmp:MetadataDate.
- Trailer документа PDF/A теперь всегда содержит массив /ID (обязательное требование ISO 19005-1 6.1.3). Когда TPdf.SaveAsPdfA обрабатывает документ, источник которого уже имеет file identifier, 16-байтовые ID permanent и changing переиспользуются; иначе из исходных байтов выводится детерминированный 16-байтовый резервный ID.
- Внедряемый XMP теперь содержит описание extension schema pdfaid, требуемое ISO 19005-1 6.7.8 (заменено Cor.1) — pdfaid считается extension schema относительно XMP Specification 2004, поэтому все соответствующие файлы должны объявлять её property names, value types и categories в контейнере pdfaExtension:schemas.
- TPdfASaveOptions получил пять новых необязательных полей: Producer, CreationDate, ModDate (строки даты PDF в формате «D:YYYYMMDDHHmmSSOHH'mm'»), DocumentId и InstanceId (16-байтовые строки для массива /ID в trailer). TPdf.SaveAsPdfA / SaveAsPdfAToStream автоматически заполняют пустые поля через FPDF_GetMetaText и FPDF_GetFileIdentifier, поэтому существующий вызывающий код продолжает работать без изменений.
- TPdf.ValidatePdfA / TPdf.PdfAConformance теперь сообщают о трёх дополнительных проблемах: pvaiMissingTrailerId (нет /ID в trailer), pvaiMissingXmpDates (отсутствует xmp:CreateDate или xmp:ModifyDate) и pvaiMissingExtensionSchema (отсутствует описание extension schema pdfaid).
- Символы не-ASCII в Title, Author, Subject, Keywords, Creator и Producer теперь кодируются как UTF-8 в XMP-пакете (XMP Specification требует UTF-8), сохраняя многоязычные метаданные при прохождении через SaveAsPdfA.
- Строка TPdf.AboutInfo обновлена для сообщения текущей версии продукта.
Version 1.29.0
- Обновлены поставляемые DLL PDFium (Win32 и Win64, как стандартные сборки, так и сборки с V8) до восходящего снимка от 2026-05-22, что включает в себя восходящие исправления путей сбоя в FPDFText_SetText / FPDFText_SetCharcodes и различные внутренние укрепления из проекта PDFium.
- Новый флаг сохранения FPDF_SUBSET_NEW_FONTS из PDFium открыт в FPdfPageOps.pas, что позволяет вызывающим FPDF_SaveAsCopy запрашивать автоматическое подмножествование встроенных файлов шрифтов для вновь добавленных текстовых объектов. Существующие константы FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL и FPDF_REMOVE_SECURITY теперь определены в восходящей форме битового сдвига (устаревшее численное значение 3 сохранено как FPDF_REMOVE_SECURITY_DEPRECATED для бинарной совместимости).
- В FPdfView.pas добавлены перечисление FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) и соответствующее поле m_FontLibraryType в FPDF_LIBRARY_CONFIG, благодаря чему приложения, инициализирующие PDFium с рендером Skia, могут выбирать шрифтовой backend при запуске.
- Сигнатура TFPDFPage_InsertObject приведена в соответствие с восходящей версией: C-функция теперь возвращает FPDF_BOOL (TRUE при успехе, FALSE если page_object равен NULL или передача владения не удалась) вместо void. Существующие вызовы PDFiumVCL продолжают компилироваться без изменений, поскольку Delphi / FPC позволяют игнорировать возвращаемое значение функции.
- Исправлена строка TPdf.AboutInfo, чтобы она сообщала текущую версию продукта (с версии 1.28.0, которая была чисто документационным выпуском, она оставалась устаревшей на v1.27.0).
Version 1.28.0
- Существенно расширена встроенная документация по всему API: каждая запись о свойстве, методе, событии и глобальной функции теперь содержит трёхабзацное Description, список Remarks, многострочный Delphi Example и более богатый блок See Also — охватывает 200+ ранее малосодержательных страниц, включая все счётчики TPdf, геттеры метаданных, аксессоры шрифтов и символов, свойства уровня страницы, индексированные записи, методы уровня документа и полную поверхность состояния / отображения / событий TPdfView.
- Точно настроен макет справки в соответствии с визуальной базой losLab, используемой в справочнике HotXLS: согласованы размеры h1/h2, стили сетки навигации по API объединены в общий StyleSheet, удалены постраничные встроенные CSS-переопределения в Navigation.html.
- Документация теперь поставляется со вспомогательным скриптом (Docs\Build-Expand-Entries.ps1), который восстанавливает обогащение страниц записей из единой таблицы данных для воспроизводимого обслуживания.
Version 1.27.0
- Добавлена поддержка создания PDF/A-1b: TPdf.SaveAsPdfA сохраняет любой открытый документ как файл, соответствующий PDF/A-1b, путём постобработки базового PDF с помощью инкрементального обновления, внедряющего поток XMP-метаданных, sRGB ICC OutputIntent и обновлённый каталог документа — всё это без необходимости в дополнительных DLL API. Работает на любой платформе, поддерживаемой PDFiumVCL.
- Добавлен TPdf.SaveAsPdfAToStream для вывода PDF/A в память.
- Добавлен TPdf.ValidatePdfA: проверяет открытый PDF на соответствие PDF/A (маркеры XMP pdfaid, OutputIntent со встроенным ICC-профилем, шифрование) и возвращает структурированный результат с обнаруженным уровнем соответствия и набором конкретных найденных проблем.
- Добавлено свойство TPdf.PdfAConformance: возвращает уровень соответствия текущего открытого документа (pac1b, pac1a, pac2b, pac3b, pacNone или pacUnknown) без необходимости явно вызывать ValidatePdfA.
- Экспортированы новые типы: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (в новом модуле FPdfPdfa.pas).
- SaveAsPdfA поддерживает пользовательский ICC-профиль через TPdfASaveOptions.IccProfileData; если значение пустое, автоматически используется встроенный профиль sRGB IEC61966-2.1 (HP/Microsoft, 3144 bytes).
- Заменён монолитный HTML-справочник реструктурированной системой веб-справки: 302 отдельных страницы записей API (по одной на каждое свойство, метод, событие и глобальную функцию), охватывающих TPdf и TPdfView, каждая с полным описанием, таблицей параметров, примером кода на Delphi и ссылками See Also.
- Добавлен Navigation.html: исчерпывающий одностраничный индекс навигации по API, организованный в шесть разделов (свойства/методы/события TPdf, свойства/методы/события TPdfView, глобальные функции) с 5-колоночной flex-сеткой для быстрого просмотра.
- TPdf.html и TPdfView.html переработаны в компактные страницы обзора компонентов, сохраняющие разделы справочника типов (Types, Constants, Global Variables) и со ссылками на отдельные страницы записей для всех членов.
- Добавлен полнотекстовый поиск на основе Search.js с инкрементальным сопоставлением на стороне клиента по всем 312 проиндексированным страницам.
- Обновлены все панели навигации по всему сайту с указанием на Navigation.html.
Version 1.26.0
- Добавлен Demo/Lazarus/BatchExport — LCL-порт демо Delphi BatchExport из v1.14.0. Тот же набор функций: пакетный экспорт PDF -> JPG для нескольких файлов с общим прогрессом по каждому файлу, текущим прогрессом по каждой странице, вводом DPI / качества / пароля и кооперативно отменяемой пакетной обработкой на основе IPdfCancellationToken. Выходная папка открывается в файловом менеджере платформы после успешного завершения извлечения.
Version 1.25.0
- В TPdf добавлено повторное использование страниц через Form XObject, что позволяет реализовать сценарии водяных знаков, наложения шаблонов и “штамповки одной страницы на множество”: CreateXObjectFromPage создаёт переиспользуемый дескриптор из любой страницы другого документа; InsertFormObjectFromXObject вставляет ОДНУ копию обёрнутой страницы в текущую страницу. Возвращает вставленный FPDF_PAGEOBJECT, чтобы вызывающая сторона могла позиционировать / масштабировать / поворачивать его с помощью FPDFPageObj_SetMatrix и помощников TPdfMatrix из v1.9.0.
- Новый класс TPdfXObject на Pascal обёртывает дескриптор FPDF_XOBJECT из PDFium и автоматически закрывает его в своём деструкторе, устраняя необходимость в ручной церемонии FPDF_CloseXObject.
- Расширены регрессионные наборы Delphi и Lazarus до 147 случаев каждый, а набор C++Builder — до 123 случаев, охватывающие контракты создания дескрипторов и вставки страничных объектов.
Version 1.24.0
- Добавлен TPdf.RenderPageProgressive — отменяемый вариант RenderPage, который управляет циклом прогрессивного рендеринга PDFium и опрашивает IPdfCancellationToken из v1.7.0 между итерациями, так что длительный рендеринг с высоким DPI может быть прерван в середине страницы, а не блокировать вызывающую сторону до завершения.
- Возвращает значение TPdfProgressiveStatus: prsDone, prsCancelled или prsFailed. Передайте AToken = nil для рендеринга до завершения без пауз (без возможности prsCancelled).
- Использует тот же zero-copy fast path, который был представлен в v1.21.0 — PDFium рендерит напрямую в DIB целевого TBitmap. Тот же legacy fallback применяется, когда DIB не может быть обёрнут.
- Расширены регрессионные наборы Delphi и Lazarus до 145 случаев каждый, а набор C++Builder — до 121 случая, охватывающие nil-token (завершается), предварительно отменённый токен (prsCancelled) и попиксельную эквивалентность с синхронным RenderPage на живом токене.
Version 1.23.0
- Добавлены шесть новых методов TPdfView, которые открывают приложениям выбор текста виджета формы PDFium и Undo/Redo: GetSelectedFormText возвращает текущий выделенный текст внутри сфокусированного виджета формы; SelectAllFormText выделяет каждый символ; FormUndo / FormRedo / FormCanUndo / FormCanRedo управляют историей редактирования сфокусированного виджета. Базовые API PDFium уже были привязаны, но не имели высокоуровневой точки входа. Все шесть безопасно выходят, когда вид неактивен или в документе нет сфокусированного виджета AcroForm.
- Расширены регрессионные наборы Delphi и Lazarus до 142 случаев каждый, а набор C++Builder — до 119 случаев, охватывающие контракт «нет формы, нет фокуса» для каждого нового метода.
Version 1.22.0
- В TPdf добавлены обёртки композиции страниц: ImportPagesByIndex принимает массив индексов с нулевой базой для копирования конкретных страниц из исходного документа; ImportNPagesToOne возвращает новый TPdf, страницы которого являются N-up композициями этого документа; MovePages переупорядочивает страницы на месте. Базовые API PDFium уже были привязаны, но не имели Pascal-дружественной точки входа.
- ImportPagesByIndex принимает пустой массив для импорта каждой исходной страницы (эквивалентно передаче nil на уровне C ABI).
- Расширены регрессионные наборы Delphi и Lazarus до 136 случаев каждый, а набор C++Builder — до 115 случаев, охватывающие импорт подмножества, импорт всего документа, переупорядочение страниц и N-up композицию.
Version 1.21.0
- Улучшена производительность рендеринга за счёт переключения TPdf.RenderPage / TPdf.RenderTile (и соответствующих помощников TPdfView) на путь вывода zero-copy. PDFium теперь пишет напрямую в буфер DIB целевого TBitmap вместо внутреннего буфера, который затем копировался построчно, экономя одну копию памяти размером width x height x 4 bytes на рендеринг. Улучшение наиболее заметно при высоком DPI (панели миниатюр, экспорт в качестве печати, пакетный экспорт).
- Legacy путь per-scanline сохранён как безопасный fallback на маловероятный случай, когда целевой DIB не может быть обёрнут (экстремальные размеры, необычный stride, OOM). Поведение байт-в-байт идентично между двумя путями, просто медленнее в fallback.
- Расширены регрессионные наборы Delphi и Lazarus до 132 случаев каждый, а набор C++Builder — до 112 случаев, охватывающие апгрейд bitmap вызывающей стороны на pf32bit, round-trip размеров и тест разумности stride на большом bitmap.
Version 1.20.0
- В TPdfView добавлена подсветка результатов поиска: HighlightSearchText(Text, MatchCase, MatchWholeWord) сканирует текущую страницу вида и возвращает количество найденных совпадений, накладывая маску HighlightColor поверх каждого совпадения при каждой перерисовке. ClearHighlight удаляет подсветку; переключение вида на другую страницу автоматически очищает её, поскольку совпадения привязаны к странице.
- HighlightColor по умолчанию clYellow и опубликован, чтобы приложения могли тематизировать подсветку под палитру UI.
- Расширены регрессионные наборы Delphi и Lazarus до 129 случаев каждый, а набор C++Builder — до 109 случаев, охватывающие цвет по умолчанию, round-trip цвета, «совпадения реальных слов из фикстуры» против строки sample.pdf и контракт «отсутствующее слово возвращает ноль совпадений».
Version 1.19.0
- В TPdfView добавлено свойство FitMode с четырьмя значениями: pfmNone (ручное масштабирование), pfmActualSize (100%), pfmFitPage (вся страница помещается в окно просмотра) и pfmFitWidth (ширина страницы совпадает с шириной окна просмотра). Активный режим подгонки автоматически применяется заново при Resize и при смене текущей страницы, поэтому длинные документы со смешанными размерами страниц остаются идеально оформленными.
- Прямая установка Zoom отменяет активный режим подгонки (FitMode возвращается в pfmNone), что соответствует стандартному соглашению PDF-просмотрщиков, когда ввод значения масштаба выводит из Fit Page / Fit Width.
- По умолчанию pfmNone, чтобы существующие приложения сохранили своё поведение явного масштабирования.
- Расширены регрессионные наборы Delphi и Lazarus до 124 случаев каждый, а набор C++Builder — до 106 случаев, охватывающие значение по умолчанию, round-trip режима, fit-page, дающий реальный масштаб на загруженном документе, и отмену режима подгонки ручным масштабированием.
Version 1.18.0
- В TPdfView добавлено свойство PageColor, отвязывающее фон отрендеренной PDF-страницы от Color окружающего контрола. По умолчанию clWhite, поэтому PDF-страницы теперь рендерятся как бумажно-белые независимо от темы хост-приложения. Просмотрщики в тёмном режиме теперь могут оставить область прокрутки тёмной, оставляя саму PDF-страницу белой (или любого цвета, который выберет приложение).
- Изменение поведения: приложения, которые устанавливали TPdfView.Color, чтобы перекрасить PDF-страницу, должны вместо этого устанавливать PageColor. Поведение по умолчанию улучшается для распространённого случая (белые страницы на тематизированных фонах контролов) без каких-либо изменений кода.
- Расширены регрессионные наборы Delphi и Lazarus до 120 случаев каждый, а набор C++Builder — до 103 случаев, охватывающие значение по умолчанию и round-trip цвета.
Version 1.17.0
- В TPdfView добавлены переключатели блокировки пользовательского ввода, чтобы приложения, встраивающие просмотрщик в киоски, панели предпросмотра или контексты только для чтения, могли отключать жесты навигации без создания подклассов: AllowUserPageChange контролирует новые сочетания клавиш PgUp / PgDn / Ctrl+Home / Ctrl+End; ChangePageOnMouseScrolling контролирует новые переходы по страницам колесом вверх / вниз; AllowUserTextSelection зарезервирован для будущего пути выделения текста перетаскиванием мыши. Все три по умолчанию равны True, поэтому существующие приложения обновляются без изменения поведения.
- Навигация по страницам колесом мыши пропускает Ctrl+колесо, чтобы приложения могли оставить Ctrl+колесо зарезервированным для масштабирования.
- Расширены регрессионные наборы Delphi и Lazarus до 118 случаев каждый, а набор C++Builder — до 101 случая, охватывающие значения по умолчанию и round-trip переключателей.
Version 1.16.2
- Расширено регрессионное покрытие TPdfView для кликов по ссылкам аннотаций, когда страница просмотрщика отличается от связанной страницы TPdf, с использованием реального headless-пути клика мыши в Delphi, Lazarus и C++Builder.
- Наборы Delphi и Lazarus теперь выполняют по 114 случаев каждый, а C++Builder — 99 случаев.
Version 1.16.1
- Исправлена обработка кликов по ссылкам в TPdfView, чтобы автоматические действия аннотаций и веб-ссылок использовали страницу, отображаемую в данный момент просмотрщиком, даже когда связанный компонент TPdf находится на другой странице.
- Укреплена защита TPdfThumbnailView от висячих ссылок Pdf при уничтожении связанного компонента TPdf.
- Добавлено регрессионное покрытие времени жизни ссылок на миниатюры; наборы Delphi и Lazarus теперь выполняют по 113 случаев каждый, а C++Builder — 98 случаев.
- Синхронизированы README, документация тестов, поиск/индексное содержимое HTML Help и сгенерированные выходные данные пакетов C++ с интеграционными обновлениями v1.7.0 – v1.16.0.
Version 1.16.0
- Добавлено новое демо Delphi PrintDialog (Demo/Delphi/PrintDialog), сфокусированное на N-up печати (1 / 2 / 4 / 9 страниц на лист) с фильтрацией нечётных / чётных страниц, рендерингом в градациях серого и опциональными границами ячеек толщиной 1 пиксель. Это сознательно небольшой компаньон к существующему демо PrintPDF, которое уже охватывает предпросмотр, недавние файлы, масштабирование и scaling.
Version 1.15.0
- Добавлен новый компонент TPdfThumbnailView (модуль FPdfThumbnail), который рендерит одну миниатюру страницы в строке в прокручиваемой боковой панели с подсветкой при наведении и выделении плюс навигацией кликом. Спроектирован для размещения рядом с TPdfView, чтобы конечные пользователи могли просматривать длинный документ по страницам.
- Компонент зарегистрирован на вкладке палитры losLab рядом с TPdf и TPdfView; ключевые свойства: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor и событие OnPageClick.
- Расширены регрессионные наборы Delphi и Lazarus до 112 случаев каждый, а набор C++Builder — до 97 случаев, охватывающие значения по умолчанию, round-trip размера миниатюр, ограничение экстремальных значений, round-trip цвета и назначение обработчика событий.
Version 1.14.0
- Добавлено новое демо Delphi BatchExport (Demo/Delphi/BatchExport), показывающее, как преобразовать множество файлов PDF в JPG за один проход с использованием TPdf.LoadCustomDocument для потоковой загрузки, IPdfCancellationToken для кооперативной отмены и индикаторов общего прогресса по файлам + текущего прогресса по страницам. Демо использует один экземпляр TPdf на файл (сам PDFium не потокобезопасен) и открывает выходную папку в Explorer после успешного завершения извлечения.
Version 1.13.0
- В TPdfView добавлен UI-оверлей асинхронного рендеринга через три новых свойства: AsyncRendering, LoadingText и LoadingColor. Когда AsyncRendering равно True, путь отрисовки одной страницы рисует небольшой индикатор “Loading...” поверх отрендеренной страницы, чтобы приложения, использующие собственный worker для долгих рендеров, разделяли согласованную визуальную подсказку.
- Значения по умолчанию сохраняют существующее поведение: AsyncRendering равно False, поэтому приложения, которые не подключаются к этой функции, не видят визуальных изменений.
- В документации уточняется, что сам PDFium не потокобезопасен — фактический вынос рендеринга в worker требует, чтобы вызывающая сторона держала один TPdf на каждый worker; предстоящее демо batch-export показывает этот паттерн.
- Расширены регрессионные наборы Delphi и Lazarus до 106 случаев каждый, а набор C++Builder — до 93 случаев, охватывающие значения по умолчанию и round-trip трёх свойств.
Version 1.12.0
- В TPdfView добавлена обработка ссылок по клику. Новое свойство LinkOptions контролирует автоматическое поведение для четырёх типов действий ссылок PDF: goto (переход к странице), URI (ShellExecute), launch (ShellExecute) и встроенный GotoR (зарезервирован). По умолчанию включены loAutoGoto и loAutoOpenURI; loAutoLaunch и loAutoEmbeddedGoto остаются выключенными, чтобы случайный клик не мог запустить произвольную программу.
- Добавлены события OnAnnotationLinkClick и OnWebLinkClick, которые срабатывают перед любым автоматическим действием и позволяют приложениям проверить ссылку, пометить её Handled или перенаправить (например, на запрос безопасности).
- Обнаружение клика по ссылке работает только тогда, когда жест является кликом, а не перетаскиванием, используя свежий якорь MouseDown, поэтому жесты панорамирования по-прежнему проходят через существующий путь прокрутки без изменений.
- Расширены регрессионные наборы Delphi и Lazarus до 102 случаев каждый, а набор C++Builder — до 91 случая, охватывающие LinkOptions по умолчанию, round-trip установки и назначение обработчика событий.
Version 1.11.0
- В TPdfView добавлена визуальная отделка: свойства PageShadowSize, PageShadowColor и PageBorderColor рисуют опциональную тень под прямоугольником страницы и однопиксельную границу вокруг неё. Значения по умолчанию сохраняют прежний плоский вид (PageShadowSize = 0; граница рисуется в clBlack по умолчанию, но сливается с белым фоном по умолчанию, пока вызывающая сторона не изменит цвета).
- Добавлено свойство SmoothScroll как opt-in флаг для будущей инкрементальной анимации прокрутки; свойство сегодня корректно сохраняется и подключено, чтобы приложения могли сохранять настройку, в то время как сторона рендеринга по-прежнему использует существующее немедленное поведение прокрутки.
- Расширены регрессионные наборы Delphi и Lazarus до 98 случаев каждый, а набор C++Builder — до 89 случаев, охватывающие значения по умолчанию, round-trip свойств и ограничение отрицательного размера тени.
Version 1.10.0
- Добавлена прямая вставка изображений через новые перегрузки TPdf.AddImage и TPdfView.AddImage, принимающие либо путь к файлу, либо TBitmap, в дополнение к существующему AddPicture на основе TPicture. AddImage(FileName) распознаёт любой формат, зарегистрированный в графических модулях VCL или LCL (BMP, PNG через модуль PngImage, JPG и т. д.), и проходит через тот же конвейер, что и AddPicture, поэтому поведение идентично.
- AddImage(TBitmap) пропускает посредник TPicture, что упрощает вызывающим сторонам, которые уже держат TBitmap из работы по рендерингу или пакетной генерации.
- Расширены регрессионные наборы Delphi и Lazarus до 92 случаев каждый, а набор C++Builder — до 84 случаев, охватывающие вставку bitmap, границы page-object, отклонение nil bitmap и загрузку BMP-файла.
Version 1.9.0
- Добавлена высокоуровневая поддержка матрицы преобразования через новый класс TPdfMatrix в модуле FPdfMatrix. TPdfMatrix обёртывает FS_MATRIX из PDFium с ОО API для Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew и Multiply, подходящим для составления преобразований перед передачей их в FPDFPageObj_SetMatrix и аналогичные API PDFium.
- TPdfMatrix.Multiply правильно сохраняет снимок шести элементов матрицы перед вычислением новых значений строк, исправляя скрытую проблему, при которой альтернативные реализации на Pascal перезаписывают более ранние элементы во время того же вызова и дают неверные результаты для любой композиции за пределами чистого translate.
- Расширены регрессионные наборы Delphi и Lazarus до 88 случаев каждый, а набор C++Builder — до 81 случая, охватывающие identity, reset, translate / scale / flip, порядок post-multiplicative композиции и регрессионный случай Multiply.
Version 1.8.0
- Добавлена потоковая загрузка по требованию через новый метод TPdf.LoadCustomDocument(AStream, AOwnsStream) и вспомогательный класс TPdfStreamAdapter, опирающиеся на FPDF_LoadCustomDocument из PDFium. PDFium теперь читает блоки из предоставленного TStream только при необходимости, поэтому очень большие или удалённые PDF больше не требуют предварительной копии в памяти.
- Добавлено опциональное владение потоком: передача AOwnsStream = True передаёт время жизни TStream объекту TPdf, который освобождает его при выполнении UnloadDocument.
- Расширены регрессионные наборы Delphi и Lazarus до 79 случаев каждый, а набор C++Builder — до 75 случаев, охватывающие потоковую загрузку через TFileStream, очистку owned-stream и контракт «externally-owned-stream переживает unload».
Version 1.7.0
- Добавлены примитивы кооперативной асинхронной отмены в новом модуле FPdfAsync, экспонирующем IPdfCancellationToken / IPdfCancellationTokenSource и переиспользуемый singleton PdfNoCancellationToken, чтобы долгие потоки рендеринга и экспорта могли поддерживать чистую семантику отмены из UI.
- Добавлен лёгкий помощник TPdfFuture<T>, который запускает worker в фоновом потоке и постит конверт TPdfFutureResult<T> обратно в главный поток, различая случаи успеха, отмены и неудачи.
- Расширены регрессионные наборы Delphi и Lazarus до 76 случаев каждый, а набор C++Builder — до 73 случаев, с общим покрытием состояния отмены, идемпотентного отмены, fan-out обратных вызовов и пост-регистрации после отмены.
Version 1.6.10
- Добавлен высокоуровневый доступ TPdf.PrintPageRanges к предпочтению диапазона страниц печати PDF viewer, возвращающий диапазоны страниц с базой единица для кода приложения.
- Добавлены TPdf.SetFormFieldFlags / SetFormFieldFlagsAt и соответствующие помощники TPdfView, чтобы приложения могли обновлять флаги полей AcroForm через публичный API, включая покрытие флагов password и multi-select.
- Укреплено покрытие ABI привязок PDFium для FPDF_DWORD размера Windows, обратных вызовов FPDF_FILEACCESS и полей слотов встраивания V8.
Version 1.6.9
- Добавлены низкоуровневые привязки рендеринга Skia для недавно экспортированных API FPDF_RenderPageSkia и FPDF_FFLDrawSkia в поставляемых стандартных и V8 PDFium DLL.
- Расширены публичные проверки покрытия привязок: загрузка стандартных и V8 DLL теперь проверяет точки входа рендеринга Skia наряду с существующими пробами возможностей V8/XFA.
Version 1.6.8
- Добавлены TPdf.SetTextPositions и TPdfSingleArray для установки позиций каждого символа на существующих текстовых объектах через недавно экспортированный API FPDFText_SetPositions.
- FPDFText_SetPositions повышен до обязательной привязки для текущих поставляемых PDFium DLL, при этом подтверждается, что точки входа рендеринга Skia остаются недоступными, поскольку DLL по-прежнему их не экспортируют.
- Расширены регрессионные наборы Delphi, C++Builder и Lazarus до 65 случаев каждый с покрытием позиции текста.
Version 1.6.7
- Добавлен высокоуровневый доступ TPdf к действиям JavaScript уровня документа из name-tree, возвращающий имена действий и сценарии через JavaScriptAction и JavaScriptActions.
- Добавлен TPdf.FileIdentifier для чтения постоянных и изменяющихся trailer ID как двоичных TBytes без терминирующего байта PDFium.
- Добавлены TPdf.PageBox, GetPageBox и SetPageBox для MediaBox, CropBox, BleedBox, TrimBox и ArtBox на текущей странице.
- Подтверждено, что в текущих поставляемых PDFium DLL только точки входа рендеринга Skia остаются недоступными во время выполнения, поскольку эти экспорты отсутствуют.
- Расширены регрессионные наборы Delphi, C++Builder и Lazarus до 64 случаев каждый с покрытием JavaScript документа, trailer ID и page-box.
Version 1.6.6
- Добавлена поддержка во время выполнения для поставляемой PDFium DLL с включённым V8. Установка EnableV8Engine перед загрузкой теперь выбирает pdfium.v8.dll из дерева DLLs\Win32 или DLLs\Win64 и экспонирует привязки, специфичные для V8/XFA, когда загруженная DLL их предоставляет.
- Добавлены V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags и низкоуровневые опциональные привязки для FPDF_BStr_*, FPDF_GetRecommendedV8Flags и FPDF_GetArrayBufferAllocatorSharedInstance.
- FPDFText_SetPositions сделан опциональным, чтобы PDFiumVCL продолжал загружаться с PDFium DLL, которые не экспортируют этот экспериментальный сеттер позиций текста.
- Расширены регрессионные наборы Delphi, C++Builder и Lazarus до 61 случая каждый с покрытием возможностей стандартной DLL и V8 DLL.
Version 1.6.5
- Добавлено инспектирование структурного дерева Tagged PDF через TPdf.StructureElements и TPdfView.StructureElements, включая тип элемента, заголовок, альтернативный текст, фактический текст, текст расширения, язык, идентификаторы marked-content, количество детей и количество атрибутов.
- Добавлен выбор режима печати PDFium для Windows через TPdfPrintMode и SetPdfPrintMode, охватывающий режимы печати EMF, только текст, PostScript, pass-through, image-mask и Type 42.
- Добавлены низкоуровневые привязки для оставшихся публичных экспортов PDFium из стандартной DLL, охватывающих действия JavaScript, флаги формы аннотации/цвет шрифта, состояние active page-object, индексированную вставку, значения с плавающей точкой content-mark, данные ICC-профиля изображения, удаление form-object и позиции текста.
- Расширены регрессионные наборы Delphi, C++Builder и Lazarus до 59 случаев каждый с покрытием структурного дерева Tagged PDF, режима печати и привязок публичных экспортов.
Version 1.6.4
- Обновлены демонстрации Delphi, C++Builder и Lazarus, чтобы автоматически открывать сгенерированные PDF, экспортированные текст/изображения и папки пакетного вывода после успешного создания.
Version 1.6.3
- Расширены согласованные регрессионные наборы Delphi, C++Builder и Lazarus до 56 случаев каждый с GUI-покрытием TPdfView для помощников fit-zoom, round-trip координат устройства/страницы, hit-тестирования символов и панорамирования мышью через контролы просмотрщика со скрытыми окнами.
- Фикстуры TPdfView теперь используют явный размер просмотрщика и тестовые подклассы, которые упражняют защищённые обработчики мыши, сохраняя при этом наборы полностью headless.
Version 1.6.2
- Исправлено TPdf.AddPage(0, ...), чтобы вставленная первая страница немедленно становилась активной. Существующий образец кода продолжает работать, в то время как PageNumber теперь сообщает корректную страницу с базой единица после вставки.
- Синхронизирована версия пакета Lazarus и расширены согласованные регрессионные наборы Delphi, C++Builder и Lazarus до 52 случаев каждый.
Version 1.6.1
- Исправлено неправильное требование минимальной версии в валидаторе соответствия версии PDF v1.6.0: действие SetState переклассифицировано с PDF 1.5 на PDF 1.2, что соответствует разделу 6.9.9 PDF 1.2 Reference. Цели SaveAs PDF 1.3 / 1.4, которые содержат действия SetState, теперь сохраняются правильно, а не отклоняются.
- Добавлены соответствующие лексические проверки PDF 1.2 согласно тому же разделу спецификации: действия Sound, Movie и NOP плюс цветовое пространство Separation теперь блокируются, когда выбранная целевая версия старше PDF 1.2.
- Расширены регрессионные наборы Delphi, C++Builder и Lazarus до 50 случаев каждый путём добавления положительного теста принятия SetState для PDF 1.4, который фиксирует исправленную границу.
Version 1.6.0
- Укреплены явные цели SaveAs PDF 1.0 – PDF 1.7 с полным валидатором соответствия версии возможностям, охватывающим всю временную шкалу возможностей от PDF 1.1 до ISO 32000-1. Валидатор теперь блокирует сохранения, содержащие записи словаря, имена фильтров, подтипы аннотаций, типы действий, шрифты, цветовые пространства или параметры шифрования, введённые после выбранной целевой версии. Примеры: JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), аннотации Polygon / PolyLine / Caret / Screen / Watermark / Redact, шифрование AES и AES-256 (CFM AESV2 / AESV3), записи каталога Perms / Legal / Requirements / NeedsRendering и привязанные к версии действия, такие как JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView, отклоняются, когда целевая версия PDF не может их представить.
Version 1.5.13
- Расширены регрессионные наборы Delphi, C++Builder и Lazarus до 49 случаев каждый, добавлено прямое покрытие отклонения цветовых пространств ICCBased, Tagged PDF MarkInfo, аннотаций Polygon, шифрования AES (V2) и аннотаций Redact против целей PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6 соответственно.
Version 1.5.12
- Исправлена постобработка SaveAs для инкрементальных переписываний каталога. PDFiumVCL теперь валидирует последний повторённый косвенный объект, поэтому существующие переопределения catalog /Version правильно заменяются при сохранении в явно более старую целевую версию PDF.
- Расширены регрессионные наборы Delphi, C++Builder и Lazarus до 44 случаев каждый, добавлено прямое покрытие замены устаревшего catalog /Version, нормализации версии каталога PDF 1.4 и отклонения функций прозрачности и portable-collection, когда выбранная целевая версия PDF не может их представить.
Version 1.5.11
- Укреплён версионированный вывод SaveAs для явных целей PDF 1.3, 1.4, 1.5, 1.6 и 1.7. PDFiumVCL теперь нормализует маркеры версии каталога, сохраняет безопасность версии для Fit Height OpenAction по умолчанию и отклоняет более новые функции PDF, когда выбранная целевая версия не может их представить.
- Добавлено регрессионное покрытие Delphi, C++Builder и Lazarus, которое сохраняет и перезагружает явные файлы PDF 1.3 – PDF 1.7, проверяя финальный заголовок, Fit Height OpenAction по умолчанию и сообщаемую версию PDF.
Version 1.5.10
- Сделан шаг от варианта B спецификации к варианту C путём добавления smoke-тестов TPdfView во все три IDE-набора (Tests.PdfView). Каждый набор строит скрытый родительский TForm (через TForm.CreateNew на сторонах Pascal и
new TForm(NULL, 0)на стороне C++Builder), переподключает TPdfView к новому родителю, устанавливает Active := True, а затем проверяет round-trip поверхность для PageCount, значения по умолчанию PageNumber, Zoom, Rotation, DisplayMode и что View.Text совпадает с базовым TPdf.Text. Каждый IDE-набор теперь выполняет 39 случаев.
Version 1.5.9
- Сделан шаг от варианта A спецификации к варианту B путём добавления render smoke-тестов во все три IDE-набора. Каждый набор Tests.Render вызывает TPdf.RenderPage на sample.pdf и проверяет три надёжных сигнала вместо побайтных контрольных сумм: возвращённый bitmap точно соответствует запрошенному размеру в пикселях; разные запрошенные размеры (200x100, 64x256) производят соответствующие bitmap; и отрендеренная страница содержит не менее 95% белого фона с не менее чем 50 (Lazarus: 20) небелых пикселей, отмечающих сглаженный текст. Каждый IDE-набор теперь выполняет 33 случая.
Version 1.5.8
- Закрыты исходные группы тест-плана A(2) добавлением ещё семи регрессий на IDE: TPdf.CreateAnnotation, создающий аннотацию anHighlight плюс round-trip SaveAs/LoadDocument, путь чтения AcroForm на Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf (FormType равно ftAcroForm, FormFieldCount > 0, FlattenAllPages сбрасывает поля до нуля) и тихое покрытие путей чтения для Bookmarks, LinkAnnotationCount и WebLinkCount на документе, не имеющем ни одной из этих функций. Каждый IDE-набор теперь выполняет 30 случаев.
Version 1.5.7
- Расширены наборы Delphi (DUnitX), Lazarus (FPCUnit) и C++Builder (GoogleTest) семью новыми регрессиями на IDE: PdfVersion, PageRotation, поиск подстроки TPdf.FindFirst / FindNext, согласование CharacterOrigin / CharacterRectangle с источником AddText, регистрация CreateAttachment плюс round-trip SaveAs/LoadDocument и round-trip AddText с акцентированным текстом, который проверяет, что путь встраивания европейских TrueType из v1.3.0 сохраняет дополнительные кодовые точки Latin-1 нетронутыми.
Version 1.5.6
- Сохранённые PDF теперь получают действие открытия Fit Height для первой страницы по умолчанию, когда существующее OpenAction отсутствует, чтобы PDF-просмотрщики изначально отображали сгенерированные документы с масштабом по высоте страницы.
- Добавлено регрессионное покрытие Delphi, Lazarus и C++Builder для сгенерированного OpenAction и настройки Fit Height.
Version 1.5.5
- Добавлены регрессионные тесты в наборах Delphi (DUnitX), Lazarus (FPCUnit) и C++Builder (GoogleTest) для индексированной поверхности API инспекции символов и шрифтов (TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle). Набор Lazarus намеренно пропускает FontData, который в настоящее время вызывает access violation внутри FPDFFont_GetFontData под FPC.
Version 1.5.4
- Добавлено C++Builder Attachment демо, портированное из образца Delphi, охватывающее создание PDF, добавление, перечисление, извлечение, удаление и сохранение встроенных вложений файлов с отображением подтипа MIME.
Version 1.5.3
- Открыт расчёт разворота страниц, лежащий в основе двухстраничных режимов TPdfView, как помощник уровня модуля ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo). Поведение не изменилось; помощник делает правило, учитывающее обложку, независимо тестируемым без создания просмотрщика.
- Добавлены пять регрессионных тестов в наборах Delphi (DUnitX), Lazarus (FPCUnit) и C++Builder (GoogleTest), охватывающих пустые документы, стандартное двухстраничное сопоставление, обложку, стоящую отдельно в dmTwoPageContinuousWithCover, пары после обложки и поведение ограничения для последней страницы / выхода за диапазон.
Version 1.5.2
- Добавлена поддержка языка документа через TPdf.Language, отображаемая на запись /Lang каталога PDF.
- Добавлен доступ к подтипу MIME вложения с TPdf.AttachmentType.
- В TPdfAnnotationSubtype добавлен anRedact и добавлены помощники удаления страничных объектов для TPdf и TPdfView.
- Обновлены демо просмотрщика и вложений для отображения новой информации о языке и типе вложения, когда она доступна.
Version 1.5.1
- Добавлен dmTwoPageContinuousWithCover для TPdfView, чтобы макеты просмотрщика могли отображать первую страницу отдельно, а затем продолжать двухстраничными разворотами.
- Обновлены демо Delphi, C++Builder и Lazarus MultiPageViewer для экспонирования режима отображения двух страниц с учётом обложки.
Version 1.5.0
- Добавлены автоматизированные тестовые наборы уровня smoke для Delphi (DUnitX), Lazarus (FPCUnit) и C++Builder (GoogleTest). Три набора используют единый PDF-фикстуру в Tests\TestData и выполняют одни и те же семь случаев каждый, охватывающие загрузку документа, информацию о странице, извлечение текста, метаданные, round-trip сохранения, проверку заголовка PDF и свойство Compressed.
Version 1.4.3
- Улучшено демо FontProperties для отображения API метаданных шрифтов как TPdfView, так и TPdf, включая дескрипторы шрифтов, размер данных шрифта и метрики символов.
- Добавлены индексированные свойства инспекции символов и шрифтов TPdfView и обновлено демо FontProperties для запроса метаданных шрифта текстового объекта.
Version 1.4.2
- Добавлены индексированные свойства инспекции символов и шрифтов в TPdf для анализа текста без необходимости в просмотрщике. Свойства, индексированные по символам (CharacterAngle, CharacterFontSize, CharacterFontWeight), запрашивают метрики каждого символа из текстового потока текущей страницы. Свойства, индексированные по page-object (FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight), запрашивают метаданные шрифта для любого текстового объекта на текущей странице.
- Нетекстовые page-object возвращают безопасные нулевые или пустые значения для всех Font* свойств, а не вызывают ошибку, что упрощает итерацию по каждому page-object и инспекцию только текстовых.
- FontBaseName читает имя базового шрифта PostScript напрямую, а не возвращается к имени семейства шрифтов, давая более точный идентификатор для встроенных шрифтов.
Version 1.4.1
- Добавлены версии демо EuropeanText для C++Builder и Lazarus, чтобы все поддерживаемые семейства IDE могли проверить генерацию акцентированного европейского текста с системными шрифтами TrueType.
- Добавлены версии демо FormFill для C++Builder и Lazarus, включая образцы PDF-форм, редактирование полей, регенерацию внешнего вида, сохранение с заполнением и сохранение с уплощением.
Version 1.4.0
- Добавлена поддержка Lazarus / Free Pascal: новый пакет PDFiumLaz предоставляет те же TPdf, TPdfView и связанные компоненты под widget-сетом LCL, расширяя библиотеку на IDE Lazarus и компилятор Free Pascal наряду с существующими пакетами Delphi и C++Builder.
- Добавлены версии демонстраций для Lazarus, чтобы разработчики Lazarus могли исследовать каждую функцию с помощью запускаемых примеров.
- Исправлена проблема компиляции Lazarus, при которой условные определения Free Pascal оценивались вместе с проверками версии компилятора Delphi, заставляя сборки FPC пытаться разрешить специфичные для Delphi имена модулей и сбоить.
Version 1.3.1
- Задокументирован рабочий процесс уплощения форм в справочном наборе: GenerateFormAppearances, FlattenPage, FlattenAllPages и связанные константы FLAT_* / FLATTEN_* теперь освещены в TPdf, TPdfView, справочнике API, матрице функций и примерах программирования.
- Исправлена таблица архитектуры на странице обзора, чтобы в ней перечислялись фактические модули привязок, поставляемые в папке Lib.
Version 1.3.0
- Улучшена поддержка европейских символов при создании PDF. TPdf.AddText теперь загружает и кэширует соответствующий системный TrueType шрифт перед созданием текстового объекта, сохраняя акцентированные символы чешского, французского, немецкого, испанского, португальского, польского и турецкого языков, которые встроенные стандартные шрифты PDFium не могут представить.
- Приложения, которые ранее производили знаки вопроса или замещающие глифы для не-ASCII латинского текста, теперь рендерят правильно без каких-либо изменений кода. Добавлено демо EuropeanText для иллюстрации функции.
Version 1.2.0
- В TPdf добавлено обновление внешнего вида AcroForm: вызов GenerateFormAppearances после изменения значений FormField[] обновляет внешний вид виджета, чтобы заполненные значения были видны в стандартных PDF-просмотрщиках без необходимости интерактивного сеанса редактирования.
- Добавлены помощники уплощения форм в TPdf (FlattenPage / FlattenAllPages) и TPdfView (FlattenPage для текущей страницы вида). Уплощение постоянно встраивает заполненные значения полей как обычное содержимое страницы и удаляет интерактивный слой формы, производя статический документ, который рендерится согласованно во всех просмотрщиках.
- Добавлен Demo\Delphi\FormFill для демонстрации рабочих процессов fill-and-save и fill-and-flatten с образцом AcroForm PDF.
Version 1.1.2
- Добавлено сжатие PDF-потоков при сохранении. Новое свойство TPdf.Compressed (включено по умолчанию) переписывает несжатые потоки содержимого как сжатые потоки FlateDecode при сохранении, значительно уменьшая размер файла для программно сгенерированных PDF. Приложения, требующие простого несжатого вывода, могут установить Compressed в False перед вызовом SaveAs.
Version 1.1.1
- Сборки пакета Win64 больше не включают модули регистрации времени проектирования, предотвращая сбои времени сборки, когда пакет Win64 развёртывается в контексте только времени выполнения.
- Загрузчик PDFium DLL теперь сначала ищет в подкаталоге приложения Win32 или Win64, используя стандартные имена pdfium.dll и pdfium.v8.dll, и возвращается к плоскому каталогу приложения и системному каталогу Windows. Это соответствует размещению DLL, поставляемому с пакетом компонентов, делая установку простой.
Version 1.1.0
- Исправлен дефект визуального обрезания в режиме двух страниц TPdfView: содержимое страницы перетекало через корешок, потому что обе плитки левой и правой страниц делили один прямоугольник обрезания. Каждая плитка теперь обрезается независимо, поэтому содержимое остаётся в пределах границ своей страницы.
- Улучшено сообщение об ошибке демо Delphi, когда PDFium DLL не может быть найдена, предоставляя более чёткое приглашение с ожидаемым именем DLL и местоположением.