Notas de versão do PDFiumVCL
Histórico de versões para recursos visíveis ao usuário, correções, melhorias do visualizador, geração de documentos, saída PDF/A, renderização e atualizações de documentação do PDFiumVCL.
Version 1.39.52
Alterado (Changed)
- O
Demo\Lazarus\CreatePDFfoi aprimorado para que o exemplo introdutório agora gere um PDF de duas páginas com vector paths, table content, embedded image, text annotation, rotated text e um document-building walkthrough mais claro. - Foram adicionadas páginas
README.htmlmais refinadas para todas as pastas de demos Delphi, C++Builder e Lazarus, substituindo o README de demo restante em texto puro por um guia legível no navegador. - Atualizados
TPdf.AboutInfo, os metadados do pacote Lazarus e os metadados de versão do instalador para 1.39.52.
Version 1.39.51
- Os resumos em lote de
Demo\Delphi\PreflightReportCliforam aprimorados com totais de status padrão para resultados Pass, Action required e Review nos padrões selecionados. - As linhas por arquivo agora incluem contagens action-required e review nos resumos TXT / HTML / JSON / CSV, facilitando a inspeção de artefatos de CI sem abrir cada relatório gerado.
- Atualizados
TPdf.AboutInfo, os metadados do pacote Lazarus e os metadados de versão do instalador para 1.39.51.
Version 1.39.50
- O modo de lote por diretório de
Demo\Delphi\PreflightReportClifoi aprimorado:batchdir=folderagora coleta os caminhos PDF encontrados, ordena-os e então gera relatórios em uma ordem estável. - As varreduras recursivas de diretórios agora produzem ordem de relatórios e linhas de resumo reproduzíveis, enquanto o processamento explícito de
batch=list.txtcontinua preservando a ordem do arquivo de lista. - Atualizados
TPdf.AboutInfo, os metadados do pacote Lazarus e os metadados de versão do instalador para 1.39.50.
Version 1.39.49
- Os resumos em lote de
Demo\Delphi\PreflightReportCliagora registram run settings: tipo de origem, caminho de origem, estado recursivo, diretório de saída, formato do relatório, padrões selecionados e modofailon=. - Os resumos JSON agora incluem um objeto
run, os resumos TXT e HTML exibem uma seção de run settings, e as linhas CSV repetem as mesmas colunas de auditoria para planilhas e CI pipelines. - Atualizados
TPdf.AboutInfo, os metadados do pacote Lazarus e os metadados de versão do instalador para 1.39.49.
Version 1.39.48
- O batch output naming de
Demo\Delphi\PreflightReportClifoi aprimorado para que duplicate input file names que compartilham umoutdir=nao sobrescrevam seus generated reports. - Batch runs agora acrescentam sufixos
-2,-3e posteriores quando um generated report path ja foi atribuido na mesma execucao, e summaries registram o collision-safe report path final. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.48.
Version 1.39.47
- Os batch summaries de
Demo\Delphi\PreflightReportCliforam aprimorados para que as saidas TXT e JSON agora incluam aggregate totals de total files, processed files, failed files, issues e correspondenciasfailon=. - CSV summaries permanecem como uma row table pura para consumers existentes, enquanto HTML summaries continuam mostrando as mesmas aggregate metrics no dashboard header.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.47.
Version 1.39.46
Demo\Delphi\PreflightReportClifoi aprimorado comsummary=batch.html/.htmpara que batch runs possam emitir um browser-readable dashboard junto dos TXT / CSV / JSON manifests.- HTML summaries mostram metricas de total, processed, failed, issue e correspondencia
failon=, depois listam cada input com report links, status, counts e error text. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.46.
Version 1.39.45
Demo\Delphi\PreflightReportClifoi aprimorado combatchdir=foldererecursivepara que scripts possam verificar PDF folders diretamente sem criar antes um list file.- Directory batch mode reutiliza o comportamento de
outdir=,summary=,standards=efailon=do list-based batch mode; non-recursive verifica apenas a folder selecionada erecursiveinclui subfolders. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.45.
Version 1.39.44
- Melhorado
Demo\Delphi\PreflightReportClicomsummary=batch.csv|json|txtpara que batch runs possam emitir um machine-readable manifest ao lado dos per-file reports. - Batch summaries incluem cada input path, report path, status, standard count, passed count, issue count, estado de correspondência
failon=e error text para CI jobs e scripts externos. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.44.
Version 1.39.43
- Melhorado
Demo\Delphi\PreflightReportClicombatch=list.txteoutdir=reportspara que scripts gerem preflight reports para uma lista de arquivos PDF em uma única execução. - Batch mode ignora linhas vazias e linhas de comentário
#, deriva cada report name.preflight.<ext>do PDF de entrada, continua após erros por arquivo e resume processed e failed files antes de retornar. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.43.
Version 1.39.42
Demo\Delphi\PreflightReportClifoi aprimorado comfailon=none|issues|action|review, permitindo que CI jobs convertam preflight results gerados em exit codes determinísticos.- A CLI agora retorna exit code 2 quando uma
failon=rule selecionada corresponde após a geração do report file e do optional attached-report PDF, enquanto runtime errors continuam retornando exit code 1. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.42.
Version 1.39.41
Demo\Delphi\PreflightReportClifoi aprimorado comattach=output.pdf, permitindo incorporar um preflight report gerado como document-level attachment em uma nova PDF copy.- A CLI mantém em disco o TXT / HTML / Markdown / JSON / CSV report file gerado e recusa anexá-lo de volta ao input PDF path original, reduzindo o risco de sobrescrita acidental.
- Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.41.
Version 1.39.40
- Adicionado
Demo\Delphi\PreflightReportCli, um Delphi console companion para gerarFPdfPreflightReportde forma scriptable sem abrir um viewer. - A CLI oferece suporte a sample creation sem argumentos, além de input / output arguments, optional password, formatos de saída
text/html/md/json/csvestandards=filtering para PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.40.
Version 1.39.39
FPdfPreflightReportfoi aprimorado comTPdfPreflightReport.ToMarkdowneSaveMarkdownToFile, permitindo exportar preflight reports como Markdown adequado para issue tracker.- Os exemplos
PreflightReportpara Delphi, C++Builder e Lazarus foram atualizados com Markdown preview switching e acoes Save MD junto ao workflow TXT / HTML / JSON / CSV existente. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.39.
Version 1.39.38
- Os exemplos
SecurityAuditpara Delphi, C++Builder e Lazarus foram aprimorados com JSON audit report export junto ao workflow TXT save / copy existente. - O JSON report contém
format,generatedAt,summary,findingCounte linhasfindingsestruturadas com campos severity, area e detail. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.38.
Version 1.39.37
FPdfPreflightReportfoi aprimorado comTPdfPreflightReport.ToCsveSaveCsvToFile, permitindo exportar preflight reports como spreadsheet-friendly CSV.- Os samples Delphi, C++Builder e Lazarus
PreflightReportforam atualizados com CSV preview switching e Save CSV actions junto ao workflow TXT / HTML / JSON existente. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.37.
Version 1.39.36
FPdfPreflightReportfoi aprimorado comTPdfPreflightReport.IssueCategoryCountse os tipos reutilizáveisTPdfPreflightIssueCategoryCounteTPdfPreflightIssueCategoryCountspara agregar marker-level issues por category.TPdfPreflightReport.ToText,ToHtmleToJsonforam atualizados para que a saída gerada de PreflightReport inclua issue-category count summaries junto com per-standard rows e detailed issue recommendations.- Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.36.
Version 1.39.35
- O sample expandido
PrintDialogfoi renomeado paraPrintPreferencesem Delphi, C++Builder e Lazarus, para que o demo name agora corresponda ao workflow de PDF author print preferences, N-up printing, odd / even filtering, grayscale, cell border e duplex mapping. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.35.
Version 1.39.34
Demo\Delphi\PrintPDFagora carrega PDF por arrastar e soltar, e o workflow existente deDemo\CBuilder\PrintPDFfoi documentado junto aos exemplos PrintPDF de Delphi e Lazarus.TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.34.
Version 1.39.33
- Adicionado
Demo\CBuilder\SplitView, completando SplitView sample matrix em Delphi, C++Builder e Lazarus. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.33.
Version 1.39.32
- Adicionado
Demo\Lazarus\SplitView, levando side-by-side PDF comparison ao Lazarus com two- or three-pane layouts, active-view navigation, synchronized commands, zoom presets e rotation. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.32.
Version 1.39.31
- Adicionado
Demo\Lazarus\PrintPDF, levando o standard PDF print workflow ao Lazarus com preview navigation, page ranges, copies, collate mode, progress e cancellation. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.31.
Version 1.39.30
- Adicionado
Demo\Lazarus\FontProperties, completando a matriz de exemplos FontProperties em Delphi, C++Builder e Lazarus. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.30.
Version 1.39.29
- Adicionado
Demo\CBuilder\FontProperties, levando a inspeção indexada de metadados de caracteres e fontes para C++Builder junto ao exemplo Delphi. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.29.
Version 1.39.28
- Adicionado
Demo\Delphi\ExtractTextPages, completando a matriz de exemplos de extração de texto por página em Delphi, C++Builder e Lazarus. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.28.
Version 1.39.27
- Adicionado
Demo\Lazarus\PrintDialog, completando o PrintDialog sample matrix em Delphi, C++Builder e Lazarus. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.27.
Version 1.39.26
- Adicionado
Demo\CBuilder\PrintDialog, levando o N-up printing e PDF author print preferences workflow ao C++Builder junto com o sample Delphi. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.26.
Version 1.39.25
- Adicionado
Demo\CBuilder\ViewerInteractionLab, completando o ViewerInteractionLab sample matrix em Delphi, C++Builder e Lazarus. - Atualizados o library build workflow e os Win64 C++Builder package outputs para que os
TPdfViewviewer interaction methods sejam vinculados corretamente nos Win64 demos. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.25.
Version 1.39.24
- Adicionado
Demo\Lazarus\ViewerInteractionLab, levando o focused viewer interaction workflow ao Lazarus junto com o sample Delphi. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.24.
Version 1.39.23
- Adicionado
Demo\Lazarus\SearchAndSelect, completando a SearchAndSelect sample matrix em Delphi, C++Builder e Lazarus. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.23.
Version 1.39.22
- Adicionados
Demo\CBuilder\ContentExtractionLabeDemo\Lazarus\ContentExtractionLab, levando o multi-category content extraction workflow a todos os demo IDEs suportados. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.22.
Version 1.39.21
- Aprimorados
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReporteDemo\CBuilder\PreflightReportcom um preview format selector para verificar text ou JSON output antes de salvar relatórios. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.21.
Version 1.39.20
- Adicionado export JSON ao
FPdfPreflightReportpor meio deTPdfPreflightReport.ToJsoneSaveJsonToFile, com summary legível por máquina, per-standard status / priority, next action e issue detail. - Atualizados
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReporteDemo\CBuilder\PreflightReportcom ações Save JSON além da exportação TXT / HTML. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.20.
Version 1.39.19
FPdfPreflightReportfoi aprimorado comTPdfPreflightStatus, issue categories, per-standard priority e next-action guidance nos relatórios TXT / HTML.Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReporteDemo\CBuilder\PreflightReportagora mostram status, priority, issue count e next action na summary grid.TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.19.
Version 1.39.18
- Adicionado
Demo\Lazarus\SecurityAudit, completando a matriz de exemplos Delphi, C++Builder e Lazarus para o workflow de auditoria PDF risk-surface somente leitura. - O exemplo Lazarus enumera permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability e unsupported-feature callbacks, depois salva ou copia a finding list como TXT report.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.18.
Version 1.39.17
- Adicionado
Demo\CBuilder\SecurityAudit, levando o workflow de auditoria PDF risk-surface somente leitura para C++Builder junto ao exemplo Delphi existente. - O exemplo C++Builder enumera permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability e unsupported-feature callbacks, depois salva ou copia a finding list como TXT report.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.17.
Version 1.39.16
- Adicionado
Demo\CBuilder\SearchAndSelect, levando o workflow viewer SearchAndSelect independente para C++Builder junto ao exemplo Delphi existente. - O exemplo C++Builder cria ou abre PDFs, lista matches de todas as páginas com page / character-index previews, oferece Previous / Next e double-click navigation, e destaca matches da página atual com
HighlightSearchText. - Ele também expõe
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangee opções spreadDisplayMode; os metadados de versão agora informam 1.39.16.
Version 1.39.15
- Adicionado
Demo\CBuilder\WatermarkStamp, completando a demo matrix de Delphi, Lazarus e C++Builder para workflows reutilizáveis de Form XObject watermark e stamp. - O exemplo C++Builder cria PDFs de target e stamp, reutiliza a stamp page por meio de
CreateXObjectFromPage, aplica transforms comTPdfMatrixe salva centered watermarks, corner stamps e page number labels. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.15.
Version 1.39.14
- Adicionado
Demo\Lazarus\WatermarkStamp, levando para o Lazarus o workflow reutilizável de Form XObject watermark e stamp. - O exemplo Lazarus cria PDFs de target e stamp, reutiliza a stamp page por meio de
CreateXObjectFromPage, aplica transforms comTPdfMatrixe salva centered watermarks, corner stamps e page number labels. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para informar 1.39.14.
Version 1.39.13
- Foi adicionado
Demo\CBuilder\PreflightReport, completando a matriz de demos Delphi, Lazarus e C++Builder para o workflow reutilizável deFPdfPreflightReport. - O exemplo C++Builder usa
FPdfPreflightReport.hpppara gerar standard summaries, TXT report previews, TXT / HTML report files e o comportamento Open Last Report. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.13.
Version 1.39.12
- Foi adicionado
Demo\Lazarus\PreflightReport, levando para Lazarus o workflow de preflight report para PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT. - O exemplo Lazarus pode abrir ou criar um PDF, selecionar target standards, visualizar summary rows e TXT report output, salvar TXT / HTML reports e abrir o report salvo mais recentemente.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.12.
Version 1.39.11
- O
Demo\Delphi\SearchAndSelectfoi aprimorado com uma lista de resultados de pesquisa em todas as páginas que registra page number, character index e preview text. - Foram adicionados Previous / Next match navigation e double-click result jumping, preservando o comportamento de
HighlightSearchTextna página atual. TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.11.
Version 1.39.10
Demo\Delphi\SecurityAuditfoi aprimorado com ações Save Report e Copy Report que exportam o summary atual e as finding rows como TXT audit report.- O demo agora limpa o report export state quando o audit panel é redefinido, mantendo os reports copiados ou salvos alinhados com os findings visíveis.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.10.
Version 1.39.9
Demo\Delphi\ContentExtractionLabfoi aprimorado com source-PDF save, report copy-to-clipboard e ações all / none category selection.- O demo agora invalida o report atual quando category selection muda, para que as TXT / JSON exports reflitam o extraction scope visível.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata foram atualizados para informar 1.39.9.
Version 1.39.8
- Adicionado
Demo\Delphi\ContentExtractionLab, um workflow sample unificado de content extraction para document metadata, page text, page objects, images, attachments, links, annotations, bookmarks e font / character metrics. - O exemplo pode abrir um PDF existente ou criar um synthetic PDF com conteúdo text, image, attachment e annotation, depois gerar summary rows e relatórios TXT / JSON detalhados.
- Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.8.
Version 1.39.7
- Adicionado
Lib\FPdfPreflightReport.pas, um helper reutilizável de relatório que reúneValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfReValidatePdfVTem um objetoTPdfPreflightReport. - Adicionado
Demo\Delphi\PreflightReport, um workflow sample que abre ou cria um PDF, seleciona target standards, visualiza summary rows e issue recommendations, e salva relatórios TXT ou HTML. - Os relatórios gerados descrevem explicitamente o limite da marker-level validation integrada, para que aplicações possam combiná-los com content-level preflight tools dedicadas quando necessário.
- Atualizados
TPdf.AboutInfo, Lazarus package metadata, package project lists e installer version metadata para informar 1.39.7.
Version 1.39.6
- Adicionado
Demo\Delphi\SearchAndSelect, uma amostra viewer workflow focada em search highlighting, text selection, selected-text preview, copy, clear e spread display modes. - A amostra demonstra
HighlightSearchText, opções de busca match-case / whole-word,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardeClearSelectionsem adicionar nova API de biblioteca. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.6.
Version 1.39.5
Demo\Delphi\ViewerInteractionLabfoi expandido para uma amostra de viewer UX no estilo SearchAndSelect comHighlightSearchText, opções match-case / whole-word, prévia do texto selecionado e os controles existentes de seleção / clipboard.Demo\Delphi\PrintDialogfoi expandido para inspecionar PDF author print preferences:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlinge o duplex mapping visível deSetPdfPrintPaperHandlingDevMode.- Adicionado
Demo\Delphi\SecurityAudit, uma amostra risk-surface somente leitura que lista permissions, attachments, document JavaScript, URI / Launch links, web links, signatures, XFA state e V8 / XFA helper availability. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.5.
Version 1.39.4
- Adicionados
Demo\CBuilder\ImageToPDFeDemo\Lazarus\ImageToPDF, completando a matriz de exemplos ImageToPDF em Delphi, C++Builder e Lazarus. - Os novos exemplos demonstram seleção de múltiplas imagens, pré-visualização da imagem selecionada, uma página PDF por imagem, tamanho de página A4 portrait / landscape, escala centralizada da imagem, progresso por imagem e abertura do PDF gerado após salvar.
- Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.4.
Version 1.39.3
- Adicionado
Demo\CBuilder\BatchExport, levando o fluxo de exportação multiarquivo de PDF para JPG ao C++Builder junto com as amostras Delphi e Lazarus existentes. - A amostra demonstra
LoadCustomDocument,IPdfCancellationTokenSource, entradaTFileStreamem streaming, progresso por arquivo e por página, tratamento de cancelamento, entradas DPI / quality / password e abertura da pasta de saída ao concluir. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.3.
Version 1.39.2
- Adicionado
Demo\Delphi\WatermarkStamp, um exemplo executável de fluxo Form XObject que cria um PDF de destino e um stamp PDF reutilizável, depois aplica marcas d'água centralizadas, carimbos no canto superior direito e rótulos de número de página em todas as páginas. - O exemplo demonstra
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixeFPDFPageObj_SetMatrixsem adicionar nova API de biblioteca. - Atualizado
Docs\en-us\Examples.htmlpara usar o padrão atualTPdfMatrix.Handleao passar matrizes paraFPDFPageObj_SetMatrix. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.2.
Version 1.39.1
- Corrigida a compatibilidade da build em lote dos demos C++Builder
PDFViewereMultiPageViewer, trocandonullptrporNULLno project mode atual. - Adicionado
Demo\Delphi\ViewerInteractionLab, uma amostra focada deTPdfViewpara display modes, fit modes, page colors, rotation, user text selection, clipboard actions e retorno de coordenadasDeviceToPage. - Adicionado
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabpara que usuários Lazarus possam executar o fluxo de validação e marker-output de PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT. - As unidades standards foram listadas em
Lib\37.0\PDFiumVcl.dprojandLib\FPC\PDFiumLaz.lpk, e a compilação do demo DelphiSplitViewfoi corrigida removendo uma importação duplicada deWinapi.ShellAPI. - Corrigidos bloqueios da build em lote dos demos Delphi em
BatchExport,PDFViewer,MultiPageViewereSplitViewsem alterar seu comportamento em tempo de execução. - Atualizados
TPdf.AboutInfo, Lazarus package metadata e installer version metadata para reportar 1.39.1.
Version 1.39.0
- Adicionado
Demo\Delphi\StandardsLab, um exemplo executável de fluxo de trabalho de padrões que carrega ou cria um PDF, executaValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfReValidatePdfVT, e mostra conformance detectada, status de aprovação e contagens de issue em uma única grade. - Os botões de salvamento do StandardsLab chamam
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfReSaveAsPdfVT, tornando visível a saída marker de padrões PDF sem escrever um harness personalizado. - Atualizados
TPdf.AboutInfo, metadados do pacote Lazarus e metadados de versão do instalador para informar 1.39.0.
Version 1.38.0
- As sobreposições de busca e seleção de texto do
TPdfViewagora usam alpha blending real em vez de pintura com mask lógica, preservando o conteúdo da página sob os destaques. - Adicionado
SetPdfPrintPaperHandlingDevModepara mapearTPrintPaperHandlingpara valores WindowsDEVMODE.dmDuplex:DMDUP_SIMPLEX,DMDUP_HORIZONTALeDMDUP_VERTICAL. TPdfView.SmoothScrollagora anima comandos line/page da scrollbar em timer-driven segments; o thumb tracking continua imediato.TPdf.AboutInfoe metadados de versão dos instaladores atualizados para 1.38.0.
Version 1.37.0
TPdfagora possui um bloqueio de renderização por instância que serializaRenderPage,RenderTile,RenderPageProgressive, recarga de página e descarregamento de documento. Renderização por worker com um componente compartilhado passa a ser prática; a aplicação ainda coordena mutações e ciclo de vida.- Corrigido o wrapper bitmap zero-copy para rejeitar DIB
TBitmapbottom-up e usar buffer próprio do PDFium com cópia final, eliminando falhas de stride corruption / access violation nos testes VCL de renderização. - Comportamento de seleção do
TPdfViewajustado:AllowUserTextSelectionbloqueia apenas entrada de usuário, APIs de seleção por código continuam desenhando, eSelectAllsegue o spread visível real para que a capa não selecione a página 2. Testes Delphi, Lazarus e C++Builder ampliados. TPdf.AboutInfoe metadados de versão dos instaladores atualizados para 1.37.0.
Version 1.36.0
- Ativada a seleção de texto de usuário final em
TPdfView:AllowUserTextSelection, reservado na v1.17.0, agora conduz drag-select, double-click word, triple-click line,Ctrl+A,Ctrl+CeShift+arrows. - Adicionados
SelectionColor,OnSelectionChangee APIs de seleção por código:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard. - Os modos spread selecionam entre páginas visíveis, o menu contextual Copy é anexado automaticamente quando o host não define
PopupMenu, e a seleção é limpa ao alterar documento, página, Active ou DisplayMode. - Testes Delphi, Lazarus e C++Builder ampliados para propriedades de seleção, caminho de mouse, atalhos de teclado, popup padrão, clipboard round-trip e spread selection.
Version 1.35.0
- Adicionado suporte para injeção de marcadores PDF/VT (ISO 16612-2:2010): TPdf.SaveAsPdfVT promove o documento atual a um arquivo conforme PDF/VT-1 ou PDF/VT-2 (o subconjunto PDF para impressão de dados variáveis e transacional). PDF/VT é construído sobre PDF/X-4 (§6.2.1), portanto o injetor escreve o conjunto completo de marcadores PDF/X-4 (XMP pdfxid, Info GTS_PDFXVersion + Trapped, OutputIntent com ICC) junto com as propriedades específicas de PDF/VT.
- As propriedades específicas de PDF/VT incluem XMP
pdfvtid:GTS_PDFVTVersionepdfvtid:GTS_PDFVTModDate(sincronizado comxmp:ModifyDateconforme §6.3 NOTA 1) e a descrição pdfaExtension:schemas para ambos os namespaces NPES pdfxid e pdfvtid. - Adicionado TPdf.SaveAsPdfVTToStream para saída PDF/VT em memória e atalho
TPdf.SaveAsPdfVT(FileName)que produz PDF/VT-1 com OutputIntent sRGB embutido por padrão. - Adicionado TPdf.ValidatePdfVT: verifica marcadores PDF/VT (incluindo equivalência
pdfvtid:GTS_PDFVTModDate/xmp:ModifyDatee presença de/DPartRoot) e retorna TPdfVTValidationResult. - Adicionada propriedade TPdf.PdfVTConformance: retorna o nível sem chamar ValidatePdfVT explicitamente.
- Novos tipos exportados na nova unidade FPdfPdfvt: TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions.
- A hierarquia Document Part (DPartRoot / DPart, §6.5) é estrutura de nível aplicação e NÃO é sintetizada automaticamente. Os requisitos de nível conteúdo PDF/X-4 (embedding de fontes, transparência, gerenciamento ICC, proibições OPI / JavaScript / Reference XObject) continuam sendo responsabilidade do autor.
- String TPdf.AboutInfo atualizada para reportar a versão atual do produto.
Version 1.34.0
- Adicionado suporte para injeção de marcadores PDF/R-1 (ISO 23504-1:2020): TPdf.SaveAsPdfR promove o documento atual a um arquivo conforme PDF/R-1 (o subconjunto raster de PDF para documentos digitalizados). A injeção cobre os requisitos de nível formato — o comentário único
%PDF-raster-1.0entre o trailer dictionary e startxref (§5), catalog reduzido à white list §6.3 (apenas Version/ViewerPreferences/PageLayout/PageMode/AcroForm/Metadata), Document Information Dictionary reduzido a §6.4.3 (apenas Creator/Producer/CreationDate/ModDate), fluxo XMP com as quatro entradas de §6.4.4 Table 1, e array/IDno trailer. - Adicionado TPdf.SaveAsPdfRToStream para saída PDF/R em memória e atalho
TPdf.SaveAsPdfR(FileName). - Adicionado TPdf.ValidatePdfR: verifica os marcadores e retorna TPdfRValidationResult.
- Adicionada propriedade TPdf.PdfRConformance: retorna o nível sem chamar ValidatePdfR explicitamente.
- Novos tipos exportados na nova unidade FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions. O padrão remove Title/Author/Subject/Keywords do Info e as entradas não permitidas do catalog.
- Requisitos de nível conteúdo (estrutura Contents por página, MediaBox
[0 0 w h], filtros restritos, sem object streams, layout de strips) continuam sendo responsabilidade do PDF de origem. PDF/R é estruturalmente mais rígido que os outros PDF/x; combinar com um validador do TWAIN Working Group para verificação completa. - String TPdf.AboutInfo atualizada para reportar a versão atual do produto.
Version 1.33.0
- Adicionado suporte para injeção de marcadores PDF/X (família ISO 15930): TPdf.SaveAsPdfX promove o documento atual a um arquivo conforme PDF/X-1a:2001, PDF/X-3:2002 ou PDF/X-4 por pós-processamento do PDF base com uma atualização incremental. A injeção cobre os requisitos de nível formato de arquivo — fluxo XMP com
pdfxid:GTS_PDFXVersione descrição pdfaExtension:schemas, Document Information Dictionary reescrito com/GTS_PDFXVersion//GTS_PDFXConformance//Trapped, catalog atualizado com/OutputIntentsapontando para OutputIntent/S /GTS_PDFXcom perfil ICC embutido, e array/IDno trailer. - Adicionado TPdf.SaveAsPdfXToStream para saída PDF/X em memória e atalho
TPdf.SaveAsPdfX(FileName)que produz PDF/X-4 com OutputIntent sRGB IEC61966-2.1 embutido por padrão. - Adicionado TPdf.ValidatePdfX: verifica marcadores de conformidade e retorna TPdfXValidationResult.
- Adicionada propriedade TPdf.PdfXConformance: retorna o nível sem chamar ValidatePdfX explicitamente.
- Novos tipos exportados na nova unidade FPdfPdfx: TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions. O padrão aponta para PDF/X-4 com sRGB; chamadores podem fornecer perfil ICC CMYK (FOGRA39, GRACoL2006...) via
IccProfileData. - Requisitos de nível conteúdo (todas as fontes embutidas, sem JavaScript, sem annotations visíveis, proibição OPI, regras de transparência para PDF/X-1a / PDF/X-3) continuam sendo responsabilidade do autor. Combinar com callas pdfaPilot ou Ghent PDF Workgroup Output Suite para verificação completa.
- String TPdf.AboutInfo atualizada para reportar a versão atual do produto.
Version 1.32.0
- Adicionado suporte para injeção de marcadores PDF/E-1 (ISO 24517-1:2008): TPdf.SaveAsPdfE promove o documento atual a um arquivo conforme PDF/E-1 por pós-processamento do PDF base com uma atualização incremental. A injeção cobre os requisitos de nível formato de arquivo — fluxo XMP com
pdfe:ISO_PDFEVersion = "PDF/E-1"e descrição pdfaExtension:schemas, Document Information Dictionary reescrito com a entrada obrigatória/ISO_PDFEVersion (PDF/E-1)de §5, equivalência Info-XMP herdada de ISO 19005-1 §6.7 via §13.1 e array/IDno trailer (§6.2). - Adicionado TPdf.SaveAsPdfEToStream para saída PDF/E em memória e atalho
TPdf.SaveAsPdfE(FileName). - Adicionado TPdf.ValidatePdfE: verifica os marcadores de conformidade e retorna TPdfEValidationResult.
- Adicionada propriedade TPdf.PdfEConformance: retorna o nível sem chamar ValidatePdfE explicitamente.
- Novos tipos exportados na nova unidade FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions.
- A reescrita do Info dictionary é uma estreia no caminho PDF/x do PDFiumVCL — reescreve o objeto Info existente com o mesmo número (referência /Info do trailer preservada) e sintetiza um novo se o trailer fonte não tiver /Info.
- Requisitos de nível conteúdo (embedding de fontes, CMaps ToUnicode, XObjects / chaves ExtGState / forms XFA proibidos) continuam sendo responsabilidade do autor.
- String TPdf.AboutInfo atualizada para reportar a versão atual do produto.
Version 1.31.0
- Adicionado suporte para injeção de marcadores PDF/UA-1 (ISO 14289-1:2014): TPdf.SaveAsPdfUa promove o documento atual a um arquivo conforme PDF/UA-1 por pós-processamento do PDF base com uma atualização incremental. A injeção cobre os requisitos de nível formato de arquivo aplicáveis por pós-processamento — fluxo de metadados XMP com
pdfuaid:part = 1e a descrição pdfaExtension:schemas correspondente,dc:titleobrigatório, catalog/MarkInfo << /Marked true /Suspects false >>e/ViewerPreferences << /DisplayDocTitle true >>(apenas se a origem não tiver), catalog/Lang(quando o chamador fornece tag BCP 47) e array/IDno trailer. - Adicionado TPdf.SaveAsPdfUaToStream para saída PDF/UA em memória, e um atalho com opções padrão
TPdf.SaveAsPdfUa(FileName)para o caso comum. - Adicionado TPdf.ValidatePdfUa: verifica em um PDF aberto os marcadores de conformidade PDF/UA-1 (existência de StructTreeRoot, /Lang, /MarkInfo /Marked true com /Suspects = false, /ViewerPreferences /DisplayDocTitle true, identificador XMP pdfuaid:part, presença de dc:title, /ID do trailer, status de criptografia) e retorna resultado estruturado com nível de conformidade detectado e conjunto de problemas encontrados.
- Adicionada propriedade TPdf.PdfUaConformance: retorna o nível de conformidade do documento aberto (puc1, pucNone ou pucUnknown) sem chamar ValidatePdfUa explicitamente.
- Novos tipos exportados na nova unidade FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions.
- Campos vazios de TPdfUaSaveOptions (Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language) são auto-preenchidos via FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage.
- Requisitos de nível conteúdo (completude do tagging StructTreeRoot, texto Alt de Figure, CMaps ToUnicode, embedding de fontes, etc.) continuam sendo responsabilidade do autor — SaveAsPdfUa anexa apenas marcadores de formato. ValidatePdfUa relata a ausência de StructTreeRoot como
pvuaiMissingStructTreeRoot. - String TPdf.AboutInfo atualizada para reportar a versão atual do produto.
Version 1.30.0
- A saída PDF/A-1b agora satisfaz os requisitos de equivalência entre Document Information Dictionary e XMP da ISO 19005-1 (com Cor.1:2007): cada entrada do Info dictionary que o PDFium escreve no PDF base é espelhada no pacote XMP, incluindo Title (dc:title), Author (dc:creator), Subject (dc:description conforme Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) e ModDate (xmp:ModifyDate). Também é emitido xmp:MetadataDate.
- O trailer de um documento PDF/A agora contém sempre um array /ID (requisito obrigatório da ISO 19005-1 6.1.3). Quando TPdf.SaveAsPdfA processa um documento cuja origem já tem file identifier, os IDs de 16 bytes permanent e changing são reutilizados; caso contrário, um ID de fallback determinístico de 16 bytes é derivado dos bytes de origem.
- O XMP injetado agora embute a descrição do extension schema pdfaid exigida pela ISO 19005-1 6.7.8 (substituída por Cor.1) — pdfaid é um extension schema relativo à XMP Specification 2004, portanto todos os arquivos conformes devem declarar seus property names, value types e categories no contêiner pdfaExtension:schemas.
- TPdfASaveOptions ganhou cinco novos campos opcionais: Producer, CreationDate, ModDate (strings de data PDF no formato “D:YYYYMMDDHHmmSSOHH'mm'”), DocumentId e InstanceId (strings de 16 bytes para o array /ID do trailer). TPdf.SaveAsPdfA / SaveAsPdfAToStream preenchem automaticamente os campos ausentes via FPDF_GetMetaText e FPDF_GetFileIdentifier, então o código existente continua funcionando sem alterações.
- TPdf.ValidatePdfA / TPdf.PdfAConformance agora relatam três problemas adicionais: pvaiMissingTrailerId (sem /ID no trailer), pvaiMissingXmpDates (xmp:CreateDate ou xmp:ModifyDate ausente) e pvaiMissingExtensionSchema (descrição do extension schema pdfaid ausente).
- Caracteres não-ASCII em Title, Author, Subject, Keywords, Creator e Producer agora são codificados como UTF-8 no pacote XMP (XMP Specification requer UTF-8), preservando metadados multilingues através de SaveAsPdfA.
- String TPdf.AboutInfo atualizada para reportar a versão atual do produto.
Version 1.29.0
- Atualizadas as DLLs do PDFium incluídas (Win32 e Win64, builds padrão e com V8) para o snapshot upstream de 2026-05-22, incorporando correções upstream aos caminhos de crash de FPDFText_SetText / FPDFText_SetCharcodes e diversos endurecimentos internos do projeto PDFium.
- Exposto o novo flag de salvamento FPDF_SUBSET_NEW_FONTS do PDFium em FPdfPageOps.pas, permitindo que chamadores de FPDF_SaveAsCopy solicitem o subsetting automático dos arquivos de fontes incorporadas para novos objetos de texto. As constantes existentes FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL e FPDF_REMOVE_SECURITY agora são definidas com a forma de deslocamento de bits upstream (o valor numérico legado 3 é preservado como FPDF_REMOVE_SECURITY_DEPRECATED para compatibilidade binária).
- Adicionado o enum FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) e o campo correspondente m_FontLibraryType em FPDF_LIBRARY_CONFIG dentro de FPdfView.pas, para que aplicações que inicializam o PDFium com o renderer Skia possam escolher o backend de fontes na inicialização.
- Atualizada a assinatura de TFPDFPage_InsertObject para corresponder ao upstream: a função C agora retorna FPDF_BOOL (TRUE em caso de sucesso, FALSE se page_object for NULL ou a transferência de ownership falhar) em vez de void. As chamadas existentes de PDFiumVCL continuam compilando sem alteração, já que Delphi / FPC permitem ignorar o valor de retorno de uma função.
- Corrigida a string TPdf.AboutInfo para reportar a versão atual do produto (estava desatualizada em v1.27.0 desde a versão 1.28.0, que apenas alterava documentação).
Version 1.28.0
- Expandiu substancialmente a documentação dentro das páginas de toda a referência da API: cada entrada de propriedade, método, evento e função global agora contém uma Description de 3 parágrafos, uma lista de Remarks, um Example multilinhas em Delphi e um bloco See Also mais rico — cobrindo mais de 200 páginas anteriormente enxutas, incluindo todos os contadores de TPdf, getters de metadados, acessores de fontes e caracteres, propriedades de nível de página, registros indexados, métodos de nível de documento e toda a superfície de estado / exibição / eventos de TPdfView.
- Ajuste fino do layout de ajuda para corresponder à linha de base visual losLab usada na referência do HotXLS: tamanhos de h1/h2 harmonizados, estilos da grade de navegação da API consolidados na StyleSheet compartilhada, e remoção dos overrides de CSS inline por página em Navigation.html.
- A documentação agora acompanha um script auxiliar (Docs\Build-Expand-Entries.ps1) que regenera o enriquecimento das páginas de entrada a partir de uma única tabela de dados, para manutenção repetível.
Version 1.27.0
- Adicionado suporte à criação de PDF/A-1b: TPdf.SaveAsPdfA salva qualquer documento aberto como arquivo em conformidade com PDF/A-1b ao pós-processar o PDF base com uma atualização incremental que injeta um stream de metadados XMP, um OutputIntent ICC sRGB e um catálogo de documento atualizado — tudo sem exigir APIs extras da DLL. Funciona em qualquer plataforma suportada pelo PDFiumVCL.
- Adicionado TPdf.SaveAsPdfAToStream para saída PDF/A em memória.
- Adicionado TPdf.ValidatePdfA: verifica se um PDF aberto está em conformidade com PDF/A (marcadores XMP pdfaid, OutputIntent com perfil ICC embutido, criptografia) e retorna um resultado estruturado com o nível de conformidade detectado e um conjunto de problemas específicos encontrados.
- Adicionada a propriedade TPdf.PdfAConformance: retorna o nível de conformidade do documento atualmente aberto (pac1b, pac1a, pac2b, pac3b, pacNone ou pacUnknown) sem precisar chamar ValidatePdfA explicitamente.
- Novos tipos exportados: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (na nova unit FPdfPdfa.pas).
- SaveAsPdfA suporta um perfil ICC personalizado via TPdfASaveOptions.IccProfileData; quando deixado vazio, o perfil interno sRGB IEC61966-2.1 (HP/Microsoft, 3144 bytes) é usado automaticamente.
- Substituiu a referência HTML monolítica por um sistema de ajuda web reestruturado: 302 páginas individuais de entradas da API (uma por propriedade, método, evento e função global) cobrindo TPdf e TPdfView, cada uma com descrição completa, tabela de parâmetros, exemplo de código Delphi e links See Also.
- Adicionado Navigation.html: um índice abrangente de navegação da API em uma única página, organizado em seis seções (propriedades/métodos/eventos de TPdf, propriedades/métodos/eventos de TPdfView, funções globais), com uma grade flex de 5 colunas para varredura rápida.
- TPdf.html e TPdfView.html reconstruídos como páginas compactas de visão geral de componentes, mantendo as seções de referência de tipos (Types, Constants, Global Variables) e direcionando para as páginas de entrada individuais de todos os membros.
- Adicionada busca em texto completo via Search.js com correspondência incremental do lado cliente em todas as 312 páginas indexadas.
- Atualizadas em todo o site as barras de navegação para apontar para Navigation.html.
Version 1.26.0
- Adicionado Demo/Lazarus/BatchExport, a portabilidade LCL do demo Delphi BatchExport da v1.14.0. Mesmo conjunto de recursos: exportação multi-arquivo de PDF -> JPG com progresso geral por arquivo, progresso atual por página, entradas de DPI / qualidade / senha, e um lote cancelável cooperativamente baseado em IPdfCancellationToken. A pasta de saída é aberta no gerenciador de arquivos da plataforma quando a extração termina com sucesso.
Version 1.25.0
- Adicionada reutilização de páginas via Form XObject ao TPdf, habilitando fluxos de marca d’água, sobreposição de modelos e “carimbar uma página sobre muitas”: CreateXObjectFromPage fabrica um handle reutilizável a partir de qualquer página de outro documento; InsertFormObjectFromXObject insere UMA cópia da página encapsulada na página atual. Retorna o FPDF_PAGEOBJECT inserido para que o chamador possa posicionar / escalar / rotacionar com FPDFPageObj_SetMatrix e os auxiliares TPdfMatrix introduzidos na v1.9.0.
- A nova classe Pascal TPdfXObject encapsula o handle FPDF_XOBJECT do PDFium e o fecha automaticamente em seu destrutor, eliminando a cerimônia manual de FPDF_CloseXObject.
- Expandidas as suítes de regressão de Delphi e Lazarus para 147 casos cada, e a suíte de C++Builder para 123 casos, cobrindo contratos de criação de handle e inserção de objetos de página.
Version 1.24.0
- Adicionado TPdf.RenderPageProgressive — uma variante cancelável de RenderPage que dirige o loop de renderização progressiva do PDFium e consulta um IPdfCancellationToken da v1.7.0 entre as iterações, de modo que renderizações longas em alta DPI possam abortar no meio da página em vez de bloquear o chamador até a conclusão.
- Retorna um valor TPdfProgressiveStatus: prsDone, prsCancelled ou prsFailed. Passe AToken = nil para renderizar até a conclusão sem nunca pausar (sem possibilidade de prsCancelled).
- Usa o mesmo caminho rápido zero-copy introduzido na v1.21.0 — o PDFium renderiza diretamente no DIB do TBitmap de destino. O mesmo fallback legacy se aplica quando o DIB não pode ser encapsulado.
- Expandidas as suítes de regressão de Delphi e Lazarus para 145 casos cada, e a suíte de C++Builder para 121 casos, cobrindo nil-token (completa), token pré-cancelado (prsCancelled) e equivalência de pixels com o RenderPage síncrono em um token ativo.
Version 1.23.0
- Adicionados seis novos métodos de TPdfView que expõem às aplicações a seleção de texto em widgets de formulário e Undo/Redo do PDFium: GetSelectedFormText retorna o texto atualmente selecionado dentro do widget de formulário em foco; SelectAllFormText seleciona todos os caracteres; FormUndo / FormRedo / FormCanUndo / FormCanRedo dirigem o histórico de edição do widget em foco. As APIs PDFium subjacentes já estavam vinculadas, mas não tinham ponto de entrada de alto nível. Todos os seis fazem short-circuit com segurança quando a view está inativa ou o documento não tem um widget AcroForm em foco.
- Expandidas as suítes de regressão de Delphi e Lazarus para 142 casos cada, e a suíte de C++Builder para 119 casos, cobrindo o contrato sem-formulário-sem-foco para cada novo método.
Version 1.22.0
- Adicionados wrappers de composição de páginas ao TPdf: ImportPagesByIndex recebe um array de índices baseado em zero para copiar páginas específicas de um documento de origem; ImportNPagesToOne retorna um TPdf novo cujas páginas são compósitos N-up deste documento; MovePages reordena páginas in-place. As APIs PDFium subjacentes já estavam vinculadas, mas não tinham ponto de entrada amigável ao Pascal.
- ImportPagesByIndex aceita um array vazio para importar todas as páginas da origem (equivalente a passar nil no nível da ABI C).
- Expandidas as suítes de regressão de Delphi e Lazarus para 136 casos cada, e a suíte de C++Builder para 115 casos, cobrindo importação de subconjunto, importação de documento inteiro, reordenação de páginas e compósito N-up.
Version 1.21.0
- Melhorou o desempenho de renderização ao mudar TPdf.RenderPage / TPdf.RenderTile (e os auxiliares correspondentes de TPdfView) para um caminho de saída zero-copy. O PDFium agora escreve diretamente no buffer DIB do TBitmap de destino em vez de em um buffer interno que era então copiado linha por linha, economizando uma cópia de memória de largura x altura x 4 bytes por renderização. A melhoria é mais perceptível em alta DPI (painéis de miniaturas, exportação em qualidade de impressão, exportação em lote).
- O caminho legado por scanline é mantido como fallback de segurança para o caso improvável de o DIB de destino não poder ser encapsulado (dimensões extremas, stride incomum, OOM). O comportamento é byte-idêntico entre os dois caminhos, apenas mais lento no fallback.
- Expandidas as suítes de regressão de Delphi e Lazarus para 132 casos cada, e a suíte de C++Builder para 112 casos, cobrindo o upgrade pf32bit do bitmap do chamador, round-trip de dimensões e um teste de sanidade de stride com bitmap grande.
Version 1.20.0
- Adicionado destaque de resultados de busca ao TPdfView: HighlightSearchText(Text, MatchCase, MatchWholeWord) varre a página atual da view e retorna o número de correspondências encontradas, pintando uma máscara HighlightColor sobre cada correspondência a cada redesenho. ClearHighlight remove os destaques; trocar a view para uma página diferente os limpa automaticamente, já que as correspondências são específicas da página.
- HighlightColor tem como padrão clYellow e é publicada para que as aplicações possam tematizar o destaque para combinar com sua paleta de UI.
- Expandidas as suítes de regressão de Delphi e Lazarus para 129 casos cada, e a suíte de C++Builder para 109 casos, cobrindo cor padrão, round-trip de cor, “correspondências reais de palavras da fixture” contra a string do sample.pdf e o contrato “palavra ausente retorna zero correspondências”.
Version 1.19.0
- Adicionada a propriedade FitMode ao TPdfView com quatro valores: pfmNone (zoom manual), pfmActualSize (100%), pfmFitPage (a página inteira cabe no viewport) e pfmFitWidth (largura da página igual à largura do viewport). O modo de ajuste ativo é reaplicado automaticamente em Resize e quando a página atual muda, então documentos longos com tamanhos de página mistos permanecem perfeitamente enquadrados.
- Definir Zoom diretamente cancela o modo de ajuste ativo (FitMode volta para pfmNone), correspondendo à convenção padrão de visualizadores de PDF onde digitar um valor de zoom sai de Fit Page / Fit Width.
- O padrão é pfmNone para que as aplicações existentes mantenham seu comportamento de zoom explícito.
- Expandidas as suítes de regressão de Delphi e Lazarus para 124 casos cada, e a suíte de C++Builder para 106 casos, cobrindo valor padrão, round-trip do modo, fit-page produzindo um zoom real em um documento carregado, e zoom-manual-cancela-modo-de-ajuste.
Version 1.18.0
- Adicionada a propriedade PageColor ao TPdfView, desacoplando o fundo da página PDF renderizada do Color do controle circundante. O padrão é clWhite, então as páginas PDF agora renderizam como branco-papel independentemente do tema do aplicativo host. Visualizadores em modo escuro agora podem manter a área de rolagem escura enquanto deixam a página PDF real branca (ou qualquer cor escolhida pelo aplicativo).
- Mudança de comportamento: aplicações que costumavam definir TPdfView.Color para recolorir a página PDF agora devem definir PageColor. A experiência padrão melhora para o caso comum (páginas brancas em fundos de controles tematizados) sem qualquer alteração de código.
- Expandidas as suítes de regressão de Delphi e Lazarus para 120 casos cada, e a suíte de C++Builder para 103 casos, cobrindo valor padrão e round-trip de cor.
Version 1.17.0
- Adicionados toggles de bloqueio de entrada do usuário ao TPdfView para que aplicações que incorporam o visualizador em quiosques, painéis de visualização ou contextos somente leitura possam desabilitar gestos de navegação sem subclassificar: AllowUserPageChange controla os novos atalhos de teclado PgUp / PgDn / Ctrl+Home / Ctrl+End; ChangePageOnMouseScrolling controla os novos saltos de página com wheel-up / wheel-down; AllowUserTextSelection está reservado para o futuro caminho de seleção de texto por arrasto do mouse. Todos os três têm padrão True para que aplicações existentes atualizem sem mudança comportamental.
- A navegação de páginas por roda do mouse ignora Ctrl+wheel para que as aplicações possam manter Ctrl+wheel reservado para zoom.
- Expandidas as suítes de regressão de Delphi e Lazarus para 118 casos cada, e a suíte de C++Builder para 101 casos, cobrindo valores padrão e round-trip de toggle.
Version 1.16.2
- Expandida a cobertura de regressão de TPdfView para cliques em links de anotação quando a página da view difere da página associada do TPdf, usando um caminho real de clique de mouse headless em Delphi, Lazarus e C++Builder.
- As suítes Delphi e Lazarus agora executam 114 casos cada, e C++Builder agora executa 99 casos.
Version 1.16.1
- Corrigido o tratamento de cliques de link no TPdfView para que as ações automáticas de anotação e de link da web usem a página atualmente exibida pelo visualizador, mesmo quando o componente TPdf associado está estacionado em uma página diferente.
- Fortalecido o TPdfThumbnailView contra referências Pdf pendentes quando o componente TPdf vinculado é destruído.
- Adicionada cobertura de regressão para o tempo de vida de referências de miniaturas; as suítes Delphi e Lazarus agora executam 113 casos cada, e C++Builder agora executa 98 casos.
- Sincronizados README, documentação de testes, conteúdo de busca/índice do HTML Help e saídas geradas de pacote C++ com as atualizações de integração da v1.7.0 até v1.16.0.
Version 1.16.0
- Adicionado um novo demo Delphi PrintDialog (Demo/Delphi/PrintDialog) focado em impressão N-up (1 / 2 / 4 / 9 páginas por folha) com filtragem de páginas ímpares / pares, renderização em escala de cinza e bordas de célula opcionais de 1 pixel. É um pequeno complemento deliberado ao demo PrintPDF existente, que já cobre visualização, arquivos recentes, zoom e escala.
Version 1.15.0
- Adicionado um novo componente TPdfThumbnailView (unit FPdfThumbnail) que renderiza uma miniatura de página por linha em um painel lateral rolável com destaque de hover e seleção, além de navegação por clique. Projetado para ficar ao lado de um TPdfView para que os usuários finais possam navegar por um documento longo por página.
- O componente é registrado na aba da paleta losLab ao lado de TPdf e TPdfView; propriedades-chave: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor e o evento OnPageClick.
- Expandidas as suítes de regressão de Delphi e Lazarus para 112 casos cada, e a suíte de C++Builder para 97 casos, cobrindo padrões, round-trip de tamanho de miniatura, clamp de valores extremos, round-trip de cor e atribuição de handler de evento.
Version 1.14.0
- Adicionado um novo demo Delphi BatchExport (Demo/Delphi/BatchExport) mostrando como converter muitos arquivos PDF em JPG numa única passagem usando TPdf.LoadCustomDocument para carregamento em stream, IPdfCancellationToken para cancelamento cooperativo e barras de progresso geral por arquivo + atual por página. O demo usa uma instância TPdf por arquivo (o próprio PDFium não é thread-safe) e abre a pasta de saída no Explorer quando a extração termina com sucesso.
Version 1.13.0
- Adicionado um overlay de UI de renderização assíncrona ao TPdfView através de três novas propriedades: AsyncRendering, LoadingText e LoadingColor. Quando AsyncRendering é True, o caminho de pintura de página única desenha um pequeno indicador “Loading...” sobre a página renderizada, para que aplicações que usam seu próprio worker para renderizações longas compartilhem uma indicação visual consistente.
- Os padrões preservam o comportamento existente: AsyncRendering é False, então aplicações que não optarem por ele não verão mudança visual.
- A documentação esclarece que o próprio PDFium não é thread-safe — descarregar a renderização para um worker de fato requer que o chamador mantenha um TPdf por worker; o próximo demo de batch-export mostra esse padrão.
- Expandidas as suítes de regressão de Delphi e Lazarus para 106 casos cada, e a suíte de C++Builder para 93 casos, cobrindo valores padrão e o round-trip de três propriedades.
Version 1.12.0
- Adicionada manipulação de links por clique ao TPdfView. A nova propriedade LinkOptions controla o comportamento automático para os quatro tipos de ação de link do PDF: goto (salto de página), URI (ShellExecute), launch (ShellExecute) e GotoR embutido (reservado). Os padrões habilitam loAutoGoto e loAutoOpenURI; loAutoLaunch e loAutoEmbeddedGoto permanecem desligados para que um clique acidental não execute um programa arbitrário.
- Adicionados os eventos OnAnnotationLinkClick e OnWebLinkClick que disparam antes de qualquer ação automática e permitem que as aplicações inspecionem o link, marquem-no como Handled ou o redirecionem (por exemplo, para um prompt de segurança).
- A detecção de clique de link é executada apenas quando o gesto é um clique em vez de um arrasto, usando uma âncora de MouseDown nova, de modo que gestos de panorâmica continuam fluindo pelo caminho de rolagem existente sem alterações.
- Expandidas as suítes de regressão de Delphi e Lazarus para 102 casos cada, e a suíte de C++Builder para 91 casos, cobrindo LinkOptions padrão, round-trip de set e atribuição de handler de evento.
Version 1.11.0
- Adicionado polimento visual ao TPdfView: as propriedades PageShadowSize, PageShadowColor e PageBorderColor pintam uma sombra opcional sob o retângulo da página e uma borda de um pixel ao seu redor. Os padrões preservam a aparência plana anterior (PageShadowSize = 0; a borda é desenhada no clBlack padrão, mas se mistura ao fundo branco padrão até que os chamadores mudem as cores).
- Adicionada uma propriedade SmoothScroll como flag opt-in para futura animação incremental de rolagem; a propriedade faz round-trip hoje e está conectada para que aplicações possam persistir a preferência, enquanto o lado da renderização ainda usa o comportamento de rolagem imediata existente.
- Expandidas as suítes de regressão de Delphi e Lazarus para 98 casos cada, e a suíte de C++Builder para 89 casos, cobrindo valores padrão, round-trip de propriedade e o clamp de tamanho de sombra negativo.
Version 1.10.0
- Adicionada inserção direta de imagens através de novas sobrecargas de TPdf.AddImage e TPdfView.AddImage que recebem um caminho de arquivo ou um TBitmap, além do AddPicture baseado em TPicture existente. AddImage(FileName) reconhece qualquer formato registrado com as units gráficas VCL ou LCL (BMP, PNG via a unit PngImage, JPG, etc.) e segue pelo mesmo pipeline que AddPicture, de modo que o comportamento é idêntico.
- AddImage(TBitmap) ignora o intermediário TPicture, o que simplifica chamadores que já possuem um TBitmap proveniente de renderização ou trabalho de geração em lote.
- Expandidas as suítes de regressão de Delphi e Lazarus para 92 casos cada, e a suíte de C++Builder para 84 casos, cobrindo inserção de bitmap, limites de objeto de página, rejeição de bitmap nil e carregamento de arquivo BMP.
Version 1.9.0
- Adicionado suporte de alto nível a matrizes de transformação através da nova classe TPdfMatrix na unit FPdfMatrix. TPdfMatrix encapsula o FS_MATRIX do PDFium com uma API OO para Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew e Multiply, adequada para compor transformações antes de entregá-las a FPDFPageObj_SetMatrix e APIs PDFium semelhantes.
- TPdfMatrix.Multiply faz um snapshot correto dos seis elementos da matriz antes de calcular os novos valores das linhas, corrigindo um problema latente em que implementações Pascal alternativas sobrescrevem elementos anteriores durante a mesma chamada e produzem resultados incorretos para qualquer composição além de translação pura.
- Expandidas as suítes de regressão de Delphi e Lazarus para 88 casos cada, e a suíte de C++Builder para 81 casos, cobrindo identidade, reset, translate / scale / flip, ordem de composição pós-multiplicativa e o caso de regressão de Multiply.
Version 1.8.0
- Adicionado carregamento de stream sob demanda através do novo método TPdf.LoadCustomDocument(AStream, AOwnsStream) e da classe auxiliar TPdfStreamAdapter, apoiados pelo FPDF_LoadCustomDocument do PDFium. O PDFium agora lê blocos do TStream fornecido apenas quando necessário, então PDFs muito grandes ou remotos não exigem mais uma cópia em memória feita antecipadamente.
- Adicionada propriedade opcional de posse do stream: passar AOwnsStream = True entrega o tempo de vida do TStream ao TPdf, que o libera quando UnloadDocument é executado.
- Expandidas as suítes de regressão de Delphi e Lazarus para 79 casos cada, e a suíte de C++Builder para 75 casos, cobrindo carregamento via streaming com TFileStream, limpeza de stream possuído e o contrato de stream de propriedade externa sobrevivendo ao unload.
Version 1.7.0
- Adicionadas primitivas cooperativas de cancelamento assíncrono na nova unit FPdfAsync, expondo IPdfCancellationToken / IPdfCancellationTokenSource e um singleton reutilizável PdfNoCancellationToken, para que fluxos de renderização e exportação de longa duração possam suportar a semântica cancelar-pela-UI de forma limpa.
- Adicionado um auxiliar leve TPdfFuture<T> que executa um worker em uma thread de fundo e posta o envelope TPdfFutureResult<T> de volta para a thread principal, distinguindo casos de sucesso, cancelamento e falha.
- Expandidas as suítes de regressão de Delphi e Lazarus para 76 casos cada, e a suíte de C++Builder para 73 casos, com cobertura compartilhada de estado de cancelamento, cancelamento idempotente, fan-out de callbacks e registro pós-cancelamento.
Version 1.6.10
- Adicionado acesso de alto nível via TPdf.PrintPageRanges à preferência de intervalo de páginas de impressão do visualizador PDF, retornando intervalos de páginas baseados em um para o código da aplicação.
- Adicionados TPdf.SetFormFieldFlags / SetFormFieldFlagsAt e auxiliares correspondentes em TPdfView, para que as aplicações possam atualizar flags de campo AcroForm através da API pública, incluindo cobertura de flags de senha e multi-seleção.
- Fortalecida a cobertura ABI do binding PDFium para FPDF_DWORD dimensionado para Windows, callbacks FPDF_FILEACCESS e campos de slot do embedder V8.
Version 1.6.9
- Adicionados bindings de baixo nível de renderização Skia para as APIs recém-exportadas FPDF_RenderPageSkia e FPDF_FFLDrawSkia nas DLLs PDFium padrão e V8 incluídas.
- Expandidas as verificações de cobertura de binding pública para que o carregamento de DLL padrão e V8 agora verifique os pontos de entrada de renderização Skia ao lado das verificações de capacidade V8/XFA existentes.
Version 1.6.8
- Adicionados TPdf.SetTextPositions e TPdfSingleArray para definir posições por caractere em objetos de texto existentes por meio da API FPDFText_SetPositions recém-exportada.
- Promovido FPDFText_SetPositions a um binding obrigatório para as DLLs PDFium atualmente incluídas, ao mesmo tempo em que se confirma que os pontos de entrada de renderização Skia permanecem indisponíveis porque as DLLs ainda não os exportam.
- Expandidas as suítes de regressão Delphi, C++Builder e Lazarus para 65 casos cada com cobertura de posicionamento de texto.
Version 1.6.7
- Adicionado acesso de alto nível via TPdf às ações JavaScript de name-tree do documento, retornando nomes e scripts de ação através de JavaScriptAction e JavaScriptActions.
- Adicionado TPdf.FileIdentifier para ler IDs de trailer permanentes e variáveis como TBytes binário, sem o byte terminador do PDFium.
- Adicionados TPdf.PageBox, GetPageBox e SetPageBox para MediaBox, CropBox, BleedBox, TrimBox e ArtBox na página atual.
- Confirmado que as DLLs PDFium atualmente incluídas deixam apenas os pontos de entrada de renderização Skia indisponíveis em tempo de execução, pois essas exportações não estão presentes.
- Expandidas as suítes de regressão Delphi, C++Builder e Lazarus para 64 casos cada com cobertura de JavaScript de documento, ID de trailer e page-box.
Version 1.6.6
- Adicionado suporte em tempo de execução para a DLL PDFium habilitada para V8 incluída. Definir EnableV8Engine antes do carregamento agora seleciona pdfium.v8.dll a partir da árvore DLLs\Win32 ou DLLs\Win64 e expõe os bindings exclusivos de V8/XFA quando a DLL carregada os fornece.
- Adicionados V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags e bindings opcionais de baixo nível para FPDF_BStr_*, FPDF_GetRecommendedV8Flags e FPDF_GetArrayBufferAllocatorSharedInstance.
- FPDFText_SetPositions tornado opcional para que o PDFiumVCL continue carregando com DLLs PDFium que não exportam esse setter experimental de posição de texto.
- Expandidas as suítes de regressão Delphi, C++Builder e Lazarus para 61 casos cada com cobertura de capacidade de DLL padrão e DLL V8.
Version 1.6.5
- Adicionada inspeção da árvore de estrutura de Tagged PDF através de TPdf.StructureElements e TPdfView.StructureElements, incluindo tipo do elemento, título, texto alternativo, texto real, texto de expansão, idioma, IDs de marked-content, contagem de filhos e contagem de atributos.
- Adicionada seleção do modo de impressão PDFium no Windows através de TPdfPrintMode e SetPdfPrintMode, cobrindo modos de impressão EMF, somente texto, PostScript, pass-through, máscara de imagem e Type 42.
- Adicionados bindings de baixo nível para as exportações públicas restantes da DLL padrão do PDFium, cobrindo ações JavaScript, flags de formulário / cor de fonte de anotações, estado ativo de objetos de página, inserção indexada, valores float de content-mark, dados de perfil ICC de imagens, remoção de objetos de formulário e posições de texto.
- Expandidas as suítes de regressão Delphi, C++Builder e Lazarus para 59 casos cada com cobertura de árvore de estrutura Tagged PDF, modo de impressão e binding de exportações públicas.
Version 1.6.4
- Atualizados os demos de Delphi, C++Builder e Lazarus para abrir automaticamente PDFs gerados, texto/imagens exportados e pastas de saída em lote após criação bem-sucedida.
Version 1.6.3
- Expandidas as suítes de regressão alinhadas de Delphi, C++Builder e Lazarus para 56 casos cada, com cobertura GUI de TPdfView para auxiliares de fit-zoom, round-trips de coordenadas dispositivo/página, teste de hit de caractere e panorâmica do mouse através de controles de visualizador em janela oculta.
- As fixtures de TPdfView agora usam um tamanho explícito de visualizador e subclasses somente de teste que exercitam os handlers de mouse protegidos enquanto mantêm as suítes totalmente headless.
Version 1.6.2
- Corrigido TPdf.AddPage(0, ...) para que a primeira página inserida se torne a página ativa imediatamente. Códigos de exemplo existentes continuam funcionando, enquanto PageNumber agora reporta uma página válida baseada em um após a inserção.
- Sincronizada a versão do pacote Lazarus e expandidas as suítes de regressão alinhadas de Delphi, C++Builder e Lazarus para 52 casos cada.
Version 1.6.1
- Corrigida uma exigência incorreta de versão mínima no validador de conformidade de versão PDF da v1.6.0: a ação SetState foi reclassificada de PDF 1.5 para PDF 1.2, alinhando-se com a PDF 1.2 Reference 6.9.9. Destinos SaveAs em PDF 1.3 / 1.4 que contêm ações SetState agora salvam corretamente em vez de serem rejeitados.
- Adicionadas verificações léxicas correspondentes de PDF 1.2 pela mesma seção da especificação: as ações Sound, Movie e NOP, mais o espaço de cor Separation, agora são bloqueados quando a versão de destino escolhida é anterior a PDF 1.2.
- Expandidas as suítes de regressão Delphi, C++Builder e Lazarus para 50 casos cada ao adicionar um teste positivo de aceitação de SetState em PDF 1.4 que fixa o limite corrigido.
Version 1.6.0
- Fortalecidos os destinos SaveAs explícitos para PDF 1.0 até PDF 1.7 com um validador completo de features por versão que cobre toda a linha do tempo de PDF 1.1 até ISO 32000-1. O validador agora bloqueia gravações que contêm entradas de dicionário, nomes de filtro, subtipos de anotação, tipos de ação, fontes, espaços de cor ou parâmetros de criptografia introduzidos depois da versão de destino escolhida. Exemplos: JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), anotações Polygon / PolyLine / Caret / Screen / Watermark / Redact, criptografia AES e AES-256 (CFM AESV2 / AESV3), entradas de catálogo Perms / Legal / Requirements / NeedsRendering, e ações condicionadas por versão como JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView são todas rejeitadas quando a versão de destino do PDF não pode representá-las.
Version 1.5.13
- Expandidas as suítes de regressão Delphi, C++Builder e Lazarus para 49 casos cada, adicionando cobertura direta para rejeição de espaços de cor ICCBased, MarkInfo de Tagged PDF, anotações Polygon, criptografia AES (V2) e anotações Redact contra destinos PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6 respectivamente.
Version 1.5.12
- Corrigido o pós-processamento de SaveAs para reescritas incrementais de catálogo. O PDFiumVCL agora valida o objeto indireto repetido mais recente, de modo que sobrescritas existentes de /Version no catálogo são substituídas corretamente ao salvar para uma versão de destino mais antiga explícita do PDF.
- Expandidas as suítes de regressão Delphi, C++Builder e Lazarus para 44 casos cada, adicionando cobertura direta para substituição de /Version de catálogo desatualizado, normalização da versão do catálogo em PDF 1.4 e rejeição de features de transparência e coleções portáteis quando a versão de destino do PDF selecionada não pode representá-las.
Version 1.5.11
- Fortalecida a saída SaveAs versionada para destinos explícitos PDF 1.3, 1.4, 1.5, 1.6 e 1.7. O PDFiumVCL agora normaliza marcadores de versão do catálogo, mantém a OpenAction padrão Fit Height segura quanto à versão, e rejeita features de PDF mais recentes quando a versão de destino selecionada não pode representá-las.
- Adicionada cobertura de regressão Delphi, C++Builder e Lazarus que salva e recarrega arquivos PDF 1.3 a PDF 1.7 explícitos, verificando o cabeçalho final, a OpenAction padrão Fit Height e a versão de PDF reportada.
Version 1.5.10
- Avançou da opção B da especificação para a opção C ao adicionar smoke tests de TPdfView em todas as três suítes IDE (Tests.PdfView). Cada suíte constrói um TForm pai oculto (via TForm.CreateNew no lado Pascal e
new TForm(NULL, 0)no lado C++Builder), reparenta um TPdfView, define Active := True, e então verifica a superfície de round-trip para PageCount, PageNumber padrão, Zoom, Rotation, DisplayMode, e que View.Text corresponde ao TPdf.Text subjacente. Cada suíte IDE agora executa 39 casos.
Version 1.5.9
- Avançou da opção A da especificação para a opção B ao adicionar smoke tests de renderização em todas as três suítes IDE. Cada suíte Tests.Render chama TPdf.RenderPage em sample.pdf e verifica três sinais robustos em vez de checksums byte a byte: o bitmap retornado corresponde exatamente ao tamanho de pixels solicitado; tamanhos solicitados diferentes (200x100, 64x256) produzem bitmaps correspondentes; e a página renderizada tem pelo menos 95% de fundo branco com pelo menos 50 (Lazarus: 20) pixels não-brancos marcando o texto antialiased. Cada suíte IDE agora executa 33 casos.
Version 1.5.8
- Fechou os grupos originais do plano de testes A(2) ao adicionar mais sete regressões por IDE: TPdf.CreateAnnotation construindo uma anotação anHighlight mais um round-trip de SaveAs/LoadDocument, o caminho de leitura de AcroForm em Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf (FormType é ftAcroForm, FormFieldCount > 0, FlattenAllPages reduz os campos a zero) e cobertura silenciosa do caminho de leitura para Bookmarks, LinkAnnotationCount e WebLinkCount em um documento que não possui nenhuma dessas features. Cada suíte IDE agora executa 30 casos.
Version 1.5.7
- Expandidas as suítes Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest) com sete novas regressões por IDE: PdfVersion, PageRotation, busca de substring com TPdf.FindFirst / FindNext, concordância de CharacterOrigin / CharacterRectangle com a origem de AddText, registro de CreateAttachment mais um round-trip de SaveAs/LoadDocument e um round-trip de texto acentuado via AddText que verifica que o caminho de incorporação TrueType europeu da v1.3.0 mantém intactos os code points latinos suplementares.
Version 1.5.6
- PDFs salvos agora recebem uma ação de abertura Fit Height padrão na primeira página quando nenhuma OpenAction existente está presente, então leitores de PDF inicialmente exibem documentos gerados em zoom de altura de página.
- Adicionada cobertura de regressão Delphi, Lazarus e C++Builder para a OpenAction gerada e a configuração Fit Height.
Version 1.5.5
- Adicionados testes de regressão nas suítes Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest) para a superfície da API de inspeção indexada de caracteres e fontes (TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle). A suíte Lazarus pula intencionalmente FontData, que atualmente causa access violation dentro de FPDFFont_GetFontData sob FPC.
Version 1.5.4
- Adicionado um demo Attachment para C++Builder portado do exemplo Delphi, cobrindo criação de PDFs, adição, listagem, extração, exclusão e salvamento de anexos de arquivos embutidos com exibição de subtipo MIME.
Version 1.5.3
- Exposto o cálculo de páginas de spread que sustenta os modos de duas páginas de TPdfView como o auxiliar de nível de unit ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo). O comportamento não muda; o auxiliar torna a regra com reconhecimento de capa testável de forma independente sem instanciar um visualizador.
- Adicionados cinco testes de regressão nas suítes Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest) cobrindo documentos vazios, o pareamento padrão de duas páginas, a página de capa ficando sozinha em dmTwoPageContinuousWithCover, pares pós-capa e o comportamento de clamp da última página / fora do intervalo.
Version 1.5.2
- Adicionado suporte a idioma do documento através de TPdf.Language, mapeado para a entrada /Lang do catálogo PDF.
- Adicionado acesso ao subtipo MIME de anexos com TPdf.AttachmentType.
- Adicionado anRedact a TPdfAnnotationSubtype e adicionados auxiliares de remoção de objetos de página para TPdf e TPdfView.
- Demos do visualizador e de anexos atualizados para exibir as novas informações de idioma e tipo de anexo quando disponíveis.
Version 1.5.1
- Adicionado dmTwoPageContinuousWithCover para TPdfView, para que layouts do visualizador possam mostrar a primeira página sozinha e depois continuar com spreads de duas páginas.
- Atualizados os demos MultiPageViewer de Delphi, C++Builder e Lazarus para expor o modo de exibição de duas páginas com reconhecimento de capa.
Version 1.5.0
- Adicionadas suítes automáticas de teste em nível smoke para Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest). As três suítes compartilham uma única fixture PDF em Tests\TestData e executam os mesmos sete casos cada, cobrindo carregamento de documento, informações de página, extração de texto, metadados, round-trip de salvamento, validação do cabeçalho PDF e a propriedade Compressed.
Version 1.4.3
- Aprimorado o demo FontProperties para mostrar tanto as APIs de metadados de fonte de TPdfView quanto de TPdf, incluindo handles de fonte, tamanho de dados de fonte e métricas de caractere.
- Adicionadas propriedades indexadas de inspeção de caracteres e fontes em TPdfView e atualizado o demo FontProperties para consultar metadados de fonte de objetos de texto.
Version 1.4.2
- Adicionadas propriedades indexadas de inspeção de caracteres e fontes a TPdf para análise de texto sem exigir um visualizador. Propriedades indexadas por caractere (CharacterAngle, CharacterFontSize, CharacterFontWeight) consultam métricas por caractere do stream de texto da página atual. Propriedades indexadas por objeto de página (FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight) consultam metadados de fonte para qualquer objeto de texto na página atual.
- Objetos de página não-textuais retornam valores zero ou vazios seguros para todas as propriedades Font*, em vez de gerar erro, tornando direto iterar por cada objeto de página e inspecionar apenas os textuais.
- FontBaseName lê o nome base PostScript da fonte diretamente, em vez de cair de volta para o nome da família, fornecendo um identificador mais preciso para fontes embutidas.
Version 1.4.1
- Adicionadas versões C++Builder e Lazarus do demo EuropeanText para que todas as famílias de IDE suportadas possam verificar a geração de texto europeu acentuado com fontes TrueType do sistema.
- Adicionadas versões C++Builder e Lazarus do demo FormFill, incluindo PDFs de formulário de exemplo, edição de campo, regeneração de aparência, salvamento preenchido e fluxos de salvamento achatado.
Version 1.4.0
- Adicionado suporte a Lazarus / Free Pascal: o novo pacote PDFiumLaz fornece os mesmos componentes TPdf, TPdfView e relacionados sob o widget set LCL, estendendo a biblioteca para o IDE Lazarus e o compilador Free Pascal além dos pacotes Delphi e C++Builder existentes.
- Adicionadas versões Lazarus dos demos para que desenvolvedores Lazarus possam explorar cada feature com exemplos executáveis.
- Corrigido um problema de compilação no Lazarus em que defines condicionais do Free Pascal eram avaliados junto com checagens de versão do compilador Delphi, fazendo com que builds FPC tentassem resolver nomes de units específicos do Delphi e falhassem.
Version 1.3.1
- Documentado o fluxo de achatamento de formulários no conjunto de ajuda: GenerateFormAppearances, FlattenPage, FlattenAllPages e as constantes relacionadas FLAT_* / FLATTEN_* agora são abordados em TPdf, TPdfView, na referência da API, na matriz de features e nos exemplos de programação.
- Corrigida a tabela de arquitetura na página de visão geral para que liste as units de binding realmente entregues na pasta Lib.
Version 1.3.0
- Aprimorado o suporte a caracteres europeus ao criar PDFs. TPdf.AddText agora carrega e armazena em cache a fonte TrueType correspondente do sistema antes de criar um objeto de texto, preservando caracteres acentuados do tcheco, francês, alemão, espanhol, português, polonês e turco que as fontes padrão internas do PDFium não conseguem representar.
- Aplicações que anteriormente produziam pontos de interrogação ou glifos de substituição para texto latino não-ASCII agora renderizam corretamente sem qualquer alteração de código. Adicionado o demo EuropeanText para ilustrar a feature.
Version 1.2.0
- Adicionada atualização de aparência de AcroForm em TPdf: chamar GenerateFormAppearances após modificar valores de FormField[] atualiza a aparência do widget, para que valores preenchidos fiquem visíveis em leitores PDF padrão sem exigir uma sessão de edição interativa.
- Adicionados auxiliares de achatamento de formulário em TPdf (FlattenPage / FlattenAllPages) e TPdfView (FlattenPage para a página atual da view). O achatamento incorpora permanentemente valores de campos preenchidos como conteúdo comum de página e remove a camada interativa de formulário, produzindo um documento estático que renderiza consistentemente em todos os visualizadores.
- Adicionado Demo\Delphi\FormFill para demonstrar os fluxos de fill-and-save e fill-and-flatten com um PDF AcroForm de exemplo.
Version 1.1.2
- Adicionada compressão de stream PDF em tempo de salvamento. A nova propriedade TPdf.Compressed (habilitada por padrão) reescreve streams de conteúdo não comprimidos como streams comprimidos FlateDecode ao salvar, reduzindo significativamente o tamanho de arquivo para PDFs gerados programaticamente. Aplicações que exigem saída não comprimida pura podem definir Compressed como False antes de chamar SaveAs.
Version 1.1.1
- Builds do pacote Win64 não incluem mais units de registro em tempo de design, evitando falhas em tempo de build quando o pacote Win64 é implantado em um contexto somente runtime.
- O loader da DLL PDFium agora procura primeiro no subdiretório Win32 ou Win64 da aplicação, usando os nomes padrão pdfium.dll e pdfium.v8.dll, e cai de volta para o diretório plano da aplicação e o diretório de sistema do Windows. Isso corresponde ao layout de DLL entregue com o pacote de componentes, tornando a instalação simples.
Version 1.1.0
- Corrigido um defeito de recorte visual no modo de duas páginas de TPdfView: o conteúdo de página vazava através do gutter porque as tiles esquerda e direita compartilhavam um único retângulo de recorte. Cada tile agora recorta independentemente, então o conteúdo permanece dentro do limite de sua página.
- Melhorada a mensagem de erro do demo Delphi quando a DLL PDFium não pode ser encontrada, fornecendo um prompt mais claro com o nome esperado da DLL e localização.