HotPDF Release Notes
Version history for HotPDF user-visible features, fixes, compatibility updates, and documentation changes
Note: Only the latest 500 change records are kept
Last release
- Latest version: 2.458.0; Release date: 2026-08-03
Version 2.458.0
Added
ImmediateFlushLayoutmove fluxos de páginas concluídos para armazenamento com suporte de arquivo para geração de relatórios delimitada; o layout de parágrafo agora oferece suporte a restrições keep-with-next, órfãs e viúvas, direção bidi first-strong com substituições explícitas, diagnósticos de coordenadas delimitados, dimensões de página herdadas, auxiliares semânticos/Pe artefatos de paginação tipados para cabeçalhos, rodapés, marcas d'água e números de página
Version 2.457.0
Added
SetFontFallbackChaineTextOutWithFallbackadicionam seleção de fonte ordenada com reconhecimento de script com verificações de cobertura de escalar Unicode e diagnósticos persistentes de glifos não resolvidos; o texto vertical agora emite execuções completas deIdentity-Vcom métricas/DW2e/W2derivadas das tabelas OpenTypevhea,vmtxeVORGquando disponíveis
Version 2.456.0
Added
HPDFEncodePredictoradiciona codificação de predictor TIFF estrito e PNG fixo ou adaptativo para linhas de raster empacotadas, de 8 bits e de 16 bits;ExtractLoadedImageToStreamevita matrizes de bytes de tamanho total para payloads de imagem nativos ou decodificados genericamente;OptimizeLoadedStreamsrecomprime seletivamente famílias de filtros suportadas por meio de buffers de derramamento de memória para disco e substitui apenas fluxos que atingem um limite positivo de economia
Version 2.455.0
Added
DecodeLoadedStreamToStreamagora compõe filtros PDF carregados em um pipeline delimitado cujo estágio final grava diretamente em um fluxo do chamador;DocumentDecodeBudgetBytesadiciona um teto padrão de 1 GiB em cadeias independentes, enquanto proteções de contagem de filtros, profundidade de aninhamento, referência cíclica e fluxo recursivo expõem diagnósticos estruturados de pipeline
Version 2.454.0
Added
- Fluxos carregados grandes agora permanecem em intervalos do arquivo de origem até a mutação e derramam alterações excessivas para arquivos temporários próprios por meio de
LoadedStreamMemoryThreshold; membros de fluxo de objetos comprimidos são indexados e materializados por número de objeto no primeiro uso;LoadFromRandomAccessSourceadiciona integração de intervalo HTTP e armazenamento personalizado, com diagnósticos de fluxo e de cache de objetos
Version 2.453.0
Changed
- Saves incrementais agora preservam a ID permanente do trailer em todas as revisões, giram apenas a ID de modificação, não emitem nenhuma revisão acrescentada quando o grafo de objetos carregado está inalterado e expõem decisões de mesclagem de referência híbrida por meio de
GetLoadedXRefMergeInfocom contadores explícitos de precedência de fluxo xref, sobreposição de tabela e revisão mais recente
Version 2.452.0
Added
- Adicionada saída nativa de PDF 2.0 mais criação de PDF/A-4, PDF/A-4e, PDF/A-4f e PDF/UA-2, com identificação XMP com reconhecimento de revisão, papéis de estrutura do PDF 2.0, registro de namespace por meio de
RegisterStructureNamespaceeAddStructureElementNS, validação estrita de estrutura PDF/UA-2 e arquivos associados neutros em perfil por meio deAddPDFAssociatedFile
Version 2.451.0
Added
DetectFacturXInvoiceagora expõe o tipo MIME decodificado do anexo primário e o URI do namespace XMP vinculado, enquantoValidateFacturXInvoiceverifica o FileSpec exato compartilhado pelo/AFdo Catalog e a árvore de nomes EmbeddedFiles, nomes/Fe/UF, tipo MIME XML,DocumentTypeXMP e o namespace Factur-X ou ZUGFeRD específico do perfil por meio de quatro sinalizadores de problema dedicados
Version 2.450.0
Added
- JSON de preflight, HTML e resultados ao estilo veraPDF agora contêm valores estáveis
ruleIdcom namespace, além de localizações legíveis por máquina com escopo lógico, caminho, chave PDF e número de objeto exato, índice de página ou deslocamento de byte quando disponíveis; relatórios JSON também emitem os mapeamentosspecISO documentados e permanecem válidos quando as matrizes contêm várias resultados
Version 2.449.0
Added
SanitiseLoadedDocumentagora aplica políticas apenas de JavaScript, de conteúdo ativo ou de documento não confiável estrito a um PDF carregado, relata ações e payloads removidos, falha de modo fechado para tipos de ação desconhecidos, remove objetos inalcançáveis por meio de um percurso quase linear seguro contra ciclos delimitado, compacta números de objetos ativos e substitui a origem de forma atômica ao salvar no lugar
Version 2.448.0
Added
- O renderizador de páginas carregadas agora executa padrões de ladrilho coloridos e não coloridos mais padrões de sombreamento axial e radial para preenchimentos e traçados, incluindo matrizes de padrão, herança de tingimento, recorte de caminho, tokenização de conteúdo em cache, restauração aninhada de estado gráfico e contagens delimitadas de recursão e de ladrilhos para recursos hostis
Version 2.447.0
Added
- Adicionado um teto configurável de 256 MiB por cadeia
DecodeBudgetBytesque agrega a saída de estágios aninhados de Flate, LZW, ASCIIHex, ASCII85, RunLength e de predictor de imagem antes que atinjam a memória, com diagnósticosGetLastDecodeBudgetInfoe zero como um modo ilimitado explícito
Version 2.446.0
Added
- Adicionado
LinearizeOutputopcional para visualização rápida na web, emitindo o dicionário de parâmetros de linearização nos primeiros 1024 bytes, tabelas de dica de primeira página e de objeto compartilhado, seções de página ordenadas por dependência e duas tabelas de referência cruzada de compatibilidade, preservando a saída direta de arquivo e fluxo e a detecção confiável de recarregamento
Version 2.445.0
Added
- PDFs carregados agora usam recuperação delimitada de referência cruzada após declarações
startxrefdanificadas ou dados xref inutilizáveis, primeiro realocando uma tabela ou fluxo válido e, em seguida, reconstruindo deslocamentos validados de objetos diretos com precedência da definição mais recente, filtragem de falsos positivos de objetos aninhados, orçamentos configuráveis de verificação e de objetos, tentativas delimitadas de âncora xref, diagnósticos estruturados e salvamento por reescrita completa
Version 2.444.0
Added
AnalyzeLoadedSignatureRevisionsagora classifica cada revisão incremental após uma assinatura selecionada como validação de longo prazo, preenchimento e assinatura de formulário, anotações ou outras alterações, relata objetos alterados e liberados e nomes de campos e avalia a conformidade com DocMDP e FieldMDP de forma independente em históricos xref tradicionais, de fluxo, híbridos e de objeto comprimido
Version 2.443.0
Added
VerifyLoadedSignatureWithTrusteHPDFValidateCMSCertificatePathagora constroem caminhos de certificado de assinante até âncoras de confiança fornecidas pelo chamador e verificam assinaturas de certificado, períodos de validade, Basic Constraints, restrições de comprimento de caminho e Key Usage- A validação offline de revogação agora verifica assinaturas OCSP e CRL, autoridade do respondente, identidade do certificado, atualização do status e tempos de revogação, preferindo evidência VRI por assinatura antes do DSS em nível de documento, evidência do chamador e CRLs do CMS
THPDFSignatureInfo.CertificateValidationrelata confiança, comprimento do caminho, âncora de confiança, tempo de avaliação, status e fonte de revogação, tempo de revogação e problemas de validação independentemente dosvValidcriptográfico
Version 2.442.0
Added
- A verificação de assinatura carregada agora valida criptograficamente carimbos de data/hora RFC 3161 do documento em relação ao
/ByteRangedo PDF e tokens de carimbo de data/hora da assinatura em relação ao valor da assinatura CMS pai, enquantoTHPDFSignatureInfo.Timestampexpõe o tipo de carimbo de data/hora, status, política, impressão da mensagem, número de série, tempo de geração, precisão, ordenação, nonce, identidade da TSA e detalhes do certificado do assinante do token
Version 2.441.0
Added
- A verificação de assinatura carregada agora oferece suporte a assinaturas CMS RSA-PSS com SHA-1, SHA-256, SHA-384 ou SHA-512 e valida parâmetros explícitos de hash, hash MGF1, comprimento de salt e campo de trailer
THPDFSignatureInfoagora relataSignedRevisionLengtheUnsignedTrailingBytes, esvInvalidByteRangeidentifica intervalos de assinatura do PDF estruturalmente inseguros
Changed
- A verificação de assinatura agora restaura a posição do fluxo do chamador, compara sequências de bytes sensíveis à segurança sem saídas antecipadas e relata os parâmetros completos do algoritmo RSA-PSS
Fixed
- A verificação CMS agora rejeita intervalos de bytes sobrepostos, fora dos limites, truncados ou ambíguos e valida o identificador de algoritmo completo do RSA PKCS#1
DigestInfoem vez de aceitar qualquer string de octetos do tamanho do digest
Version 2.440.0
Fixed
- O registro de fontes Unicode agora aloca o buffer completo de avanço de glifos antes de ler as métricas da fonte, evitando violações de acesso nos fluxos de shaping OpenType e de subsetting de fontes
GetWideTextWidthagora interpreta os avanços Unicode em cache em unidades em e faz fallback para a medição da plataforma quando uma métrica de glifo não está disponível, restaurando larguras escaladas corretamente para quebra de linha e layoutBeginIncrementalUpdateagora marca os objetos carregados como limpos antes de rastrear as alterações do chamador, de modo que objetos inalterados não sejam reescritos e os dicionários de criptografia órfãos sejam corretamente liberados na seção de referência cruzada acrescentada
Version 2.439.0
Added
HPDFDecodePredictoreHPDFTryDecodePredictorfornecem decodificação limitada para predição TIFF de 1, 2, 4, 8 e 16 bits e para todos os cinco filtros de linha PNG, com validação estrita de linhas e diagnósticos acionáveisTPDFLZWDecompressoradiciona saída direta de fluxo, métodos de decodificação reutilizáveis que não geram exceções, limites de saída configuráveis e requisitos de terminador de fluxo, além de estatísticas de largura de código, de dicionário, de redefinição, de expansão e de saída por decodificação
Changed
- A decodificação LZW agora usa uma arena de frases contígua, suporta ambos os modos
EarlyChangedo PDF e ambas as ordens de preenchimento de bits, trata redefinições de limpeza e expansãoKwKwKestritamente e faz a saída de strings crescer geometricamente - A extração de imagens Flate e LZW carregadas agora respeita a geometria do preditor
DecodeParmse oEarlyChange, usa dimensionamento de varredura seguro contra estouro e compartilha a mesma implementação de preditor da decodificação de fluxos xref
Fixed
- A decodificação Flate com parâmetros de preditor agora lê do fluxo de descompressão em vez de copiar os bytes de entrada comprimidos para o estágio de preditor
- Códigos LZW malformados, linhas truncadas, marcas de linha PNG inválidas, geometria de preditor impossível e expansão excessiva agora falham de forma determinística em vez de retornar dados de imagem parciais ou ainda comprimidos
Version 2.438.0
Fixed
THPDFVieweragora compila no Delphi XE2 até XE8, ondeWM_DPICHANGEDestá ausente deWinapi.Messages; a constante de mensagem de DPI por monitor agora é definida localmente para toolchains anteriores ao Delphi 10 Seattle, restaurando as builds DCU da biblioteca TRIAL para RAD Studio XE2..XE8 que eram abortadas comE2003 Undeclared identifier
Version 2.437.0
Changed
GetWideTextWidthagora mede texto Unicode a partir de um cache de largura de avanço por ponto de código preenchido uma vez a partir da tabela hmtx da fonte, em vez de um cicloCreateCompatibleDC+GetTextExtentPoint32Wa cada chamada -- uma aceleração de 10 a 100 vezes para medição de quebra de palavra, alinhamento e células de tabela em documentos Unicode longos, com um fallback transparente para o caminho GDI legado quando nenhuma fonte Unicode está registrada
Version 2.436.0
Fixed
- O
/FontDescriptor /CapHeightdas fontes incorporadas agora usa a métrica realotmsCapEmHeightda face em vez de uma constante fixa no código, com fallback para ~70% da altura ascendente para faces que relatam zero
Version 2.435.0
Fixed
- As fontes Unicode incorporadas agora mantêm os glifos que o shaping OpenType produz (formas de apresentação arábicas, ligaduras, alternativas contextuais) ao fazer o subsetting -- o conjunto
FUnicodeExtraUsedGlyphsregistrado porMarkUnicodeGlyphUsed/EnableShapingFeatureForSubsetera gravado, mas nunca consultado pelo subsetter, então esses glifos caíam para.notdefna saída
Version 2.434.0
Added
THPDFWeightedCacheadiciona inspeção sem promoção, pesquisa booleana, remoção explícita e transferência de propriedade, corte imediato de orçamento, estatísticas de taxa de acerto e de ciclo de vida, além de chaves de conteúdo SHA-256 por fluxo
Changed
- CMaps ToUnicode e CID ordenados grandes agora usam pesquisa logarítmica de caracteres e de intervalos, preservam exatamente espaços de código de um a quatro bytes, isolam mapas analisados compartilhados por raiz de recurso e fazem o armazenamento do analisador crescer geometricamente
- O cache persistente de páginas renderizadas agora grava dados PNG e de índice atomicamente, rastreia a recenticidade em nível de página, aplica limites reduzidos imediatamente e recupera índices obsoletos, arquivos temporários abandonados, pastas ausentes e pastas de documento não indexadas
Fixed
- A análise de CMap agora trata nibbles hexadecimais ímpares corretamente e rejeita dados hexadecimais malformados, intervalos inválidos ou excedentes, destinos CID negativos e mapeamentos explícitos sem limite, substituindo sequências de substituto UTF-16 inválidas de forma determinística
- A substituição do cache ponderado não libera mais um objeto quando a mesma instância é reinserida sob sua chave existente, e entradas PNG corrompidas do cache em disco são removidas após uma decodificação com falha em vez de falhar em toda pesquisa posterior
Version 2.433.0
Added
- A verificação de assinaturas carregadas agora suporta assinaturas CMS ECDSA P-256, P-384 e P-521 com SHA-1, SHA-256, SHA-384 ou SHA-512, incluindo seleção de signatário por emissor e número de série e por SubjectKeyIdentifier, validação estrita de assinatura DER e diagnósticos estendidos de algoritmo e de curva
- O gerenciamento de cores ICC agora valida perfis ICC v2/v4, infere e verifica contagens de componentes, elimina duplicatas de perfis registrados, converte cores vetoriais ICCBased e amostras de imagem brutas em sRGB com suporte a intenção de renderização e retém o espaço de cor alternativo do PDF como um fallback controlado
Version 2.432.0
Added
THPDFTableCellagora suporta células de imagem (ImageIndex+ImageAspectdimensionam uma imagem registrada para a largura da coluna com alinhamento H/V) e células HTML (IsHTMLrenderiza o texto da célula por meio deTextOutHTMLpara marcação embutida de negrito/cor/link/sub-sobrescrito), correspondendo à variedade de conteúdo de célula que uma exportação de grade deve transportar
Version 2.431.0
Added
- O novo mecanismo de layout e renderização de
THPDFTable(unidadeHPDFTable) dispõe tabelas a partir de larguras de coluna e linhas declaradas, com texto, alinhamento, cor e substituições de fonte por célula, mesclagem deColSpan/RowSpan, quebra de palavra automática com alturas de linha medidas, planos de fundo de cabeçalho e de listras de zebra e continuação automática de quebra de página que repete a faixa de cabeçalho em cada página -- tudo acionando as primitivas de desenho deTHPDFPageexistentes, de modo que os produtores não precisam mais desenhar células manualmente comRectangleeTextOut
Version 2.430.0
Changed
- O processamento de fluxo de conteúdo e a edição de páginas carregadas agora escalam de forma mais eficiente em grandes cargas de texto e de caminhos, preservam o Unicode do plano suplementar e a semântica de caminho do PDF, invalidam caches de página após mutações e concluem gravações em fluxos que aceitam buffers parciais
Version 2.428.0
Added
THPDFPage.TextOutHTMLganha uma sobrecarga de quebra de linha que recebe umMaxWidthe quebra linhas longas nos limites de palavras, além de tags de hiperlink embutidas (<a href>) e de subscrito/sobrescrito (<sub>/<sup>); os hiperlinks são pintados de azul e sublinhados e registram uma anotação de URI clicável
Version 2.427.0
Changed
- Sequências de texto consecutivas que compartilham a mesma fonte e tamanho não reemitem mais o operador
Tfa cada chamada, encolhendo os fluxos de conteúdo em documentos ricos em fontes (tabelas, parágrafos) enquanto ainda os reemitem após uma restauração de estado gráfico (Q) onde o PDF exige - A aproximação de elipse de
THPDFPageagora usa a constante kappa de Bézier cúbica padrão0.5522847498, correspondendo a todas as outras implementações de elipse e círculo na unidade e removendo o pequeno desvio dependente do raio que a aproximação11/20anterior produzia
Version 2.426.0
Added
- O visualizador agora aquece previamente o cache de páginas renderizadas para as páginas adjacentes àquela recém-exibida, usando uma thread em segundo plano no mesmo DPI para que a próxima virada de página atinja o cache em vez de renderizar novamente de forma síncrona; a nova propriedade
PrefetchRadiuscontrola quantas páginas de cada lado são pré-aquecidas (0 a desativa)
Version 2.425.0
Added
- O renderizador de páginas carregadas agora decodifica e desenha imagens embutidas (
BI/ID/EI) em vez de ignorá-las, expandindo os pares chave/valor abreviados de imagem embutida e os bytes brutos no momento da tokenização e colocando o resultado através do mesmo mapeamento CTM de quadrado unitário usado para XObjects de imagem
Version 2.424.2
Changed
- O cache em disco de páginas renderizadas agora coleta todos os arquivos de página em uma única varredura de diretório e desocupa a cauda que transborda em uma única passagem, substituindo o loop anterior de re-varredura por desocupação que rodava em tempo quadrático sobre a contagem de páginas por documento
- A deduplicação de imagens agora memoiza o SHA-256 de cada fluxo de imagem armazenado e compara os hashes antes de percorrer os bytes, de modo que adicionar a mesma imagem grande a muitas páginas não relê mais todos os fluxos armazenados anteriormente a cada inserção
Version 2.424.1
Changed
- O cache ponderado de imagens decodificadas e fontes de subconjunto agora resolve as buscas através de um índice hash e mantém a ordem dos mais recentemente usados através de uma lista duplamente encadeada baseada em índice, transformando cada
Get,Pute promoção de recência de um deslocamento de array em O(n) em trabalho O(1), de modo que renderizar documentos grandes com várias imagens não se degrada mais à medida que o cache se enche
Version 2.424.0
Changed
CompressLoadedDocumentagora respeitaCompressionLevel, processa fluxos de origem em blocos limitados, mantém a carga útil original quando a compressão não a reduz, libera com segurança os fluxos substituídos e marca os objetos de fluxo transformados como sujos para queSaveLoadedDocumentpersista o resultado em vez de seguir o caminho de cópia de arquivo inalterado.DecompressLoadedDocumentusa o mesmo caminho de fluxo seguro quanto à propriedade, remove/DecodeParmsde identidade e deixa fluxos de preditor TIFF ou PNG comprimidos até que o estágio de preditor possa ser decodificado com segurança
Version 2.423.0
Added
THPDFPage.AddCertificationSignatureFieldeConfigureCertificationSignatureagora criam a única assinatura de certificação DocMDP com todos os três níveis de permissão e a vinculação Catalog/Perms /DocMDPcorrespondente, enquantoAttachSignatureFieldLockemite políticas SigFieldLock indiretas e referências FieldMDP correspondentes para os escopos de campo All, Include ou Exclude.THotPDF.GetLoadedSignaturePermissionsrealiza uma inspeção estrutural limitada do mesmo grafo de permissões, incluindo a diretividade exigida, a vinculação raiz, a concordância de políticas e o diagnóstico, sem confundir a estrutura de políticas com a validade criptográfica ou a conformidade com revisões posteriores
Version 2.422.0
Added
- Os tokens de marcador de marca d’água / cabeçalho / rodapé agora resolvem os metadados do documento:
<%Author%>/<%Title%>/<%Subject%>/<%Keywords%>/<%Producer%>são substituídos junto com os<%PageNo%>/<%TotPage%>/<%FileName%>/ tokens de data-hora existentes quando a nova sobrecargaHPDFReplaceWatermarkPlaceholdersrecebe um recordTHPDFPlaceholderDocInfo. A assinatura legada de 4 parâmetros permanece para chamadores que precisam apenas do subconjunto página / arquivo / data-hora
Version 2.421.0
Added
THPDFActionBuilder.GoToEmbeddedNamedDestinationeGoToEmbeddedPagecriam açõesGoToEdo PDF 1.6 com pai válido segundo o padrão, árvore de nomes EmbeddedFiles, anotação de anexo e caminhos de destino/Taninhados, preservando destinos nomeados ou explícitos, especificações de arquivo raiz opcionais,NewWindow, encadeamento de ações e restrições PDF/A/PDF/X- A inspeção de ações carregadas agora reconhece todos os 18 subtipos de ação da ISO 32000-1 e retorna instantâneos ordenados e não executáveis de
THPDFLoadedActionInfodas fontes/OpenActione/AAdo catálogo,/AAde página,/Ae/AAde anotação,/AAde campo AcroForm e/Ade contorno. As formas dicionário e matriz de/Nextpreservam a ordem de execução, enquanto entradas malformadas, nós compartilhados, ciclos, profundidade excessiva e contagens excessivas de nós param de forma segura com diagnóstico - As enumerações de ação de anotação e de gatilho JavaScript agora incluem os eventos de abertura de página
/PO, fechamento de página/PC, página visível/PVe página invisível/PIcom a necessária negociação de versão PDF 1.5
Version 2.420.0
Added
- O estágio 3 do dispositivo de content-stream fecha o ciclo de abstração:
IHPDFContentDeviceganhaDrawXObject/DrawShading/ApplyExtGStatepara os operadoresDo/sh/gs, e o interpretador compartilhado agora os despacha.Doé gated emcdcNeedImagesde modo que dispositivos de texto/enum pulam a decodificação pesada de imagens;shegsdespacham incondicionalmente. O caminhoExecuteViaDevicedo renderizador agora pode pintar o conjunto completo de operadores (caminhos + cores + texto + imagens + shading + ExtGState), observavelmente equivalente ao caminho legadoHandleOperator. O procedimento aninhadoApplyExtGStatefoi promovido a método de classe (DoApplyExtGState) para que o caminho do dispositivo o compartilhe sem duplicação; cláusulas de resolução de métodos roteiam as três novas entradas de interface para os helpersDev*sem colidir com os helpers privados pré-existentes - Padrão observer de conteúdo do documento: o evento
THotPDF.OnLoadedDocumentModifieddispara deInvalidateRenderedPageCache(PageIndex = -1, documento inteiro) eInvalidateRenderedPageCachePage(uma página específica) para que visualizadores anexados se refresquem automaticamente.THPDFViewerassina emSetDocumente desvincula em detach /opRemove, chamandoRefreshDocumentquando a página atual (ou o documento inteiro) é afetada. A sincronização multi-view (vários visualizadores sobre o mesmoTHotPDF) agora funciona sem que cada chamador invoqueRefreshDocumentmanualmente
Version 2.419.0
Added
- Estágio 1 da abstração do dispositivo de content-stream:
IHPDFContentDeviceganha a superfície de callback de texto (BeginText/EndText/UpdateFont/UpdateCharSpace/UpdateWordSpace/UpdateHorizScale/UpdateLeading/UpdateRenderMode/UpdateRise/TextMove/TextSetMatrix/TextNewLine/ShowText/ShowTextArray) que espelha a máquina de estados de texto do PDF; o despachador compartilhadoHPDFInterpretContentStreamDeviceagora encaminha BT/ET/Tf/Tc/Tw/Tz/TL/Tr/Ts/Td/TD/Tm/T*/Tj/TJ/'/" ao dispositivo quando ele declaracdcNeedText THPDFTextExtractDeviceé um dispositivo concreto que mantém as matrizes de texto e emite umTHPDFGlyphRecordpor código de caractere (decodificado via umIHPDFFontResolverinjetado) — observavelmente equivalente à saída deHPDFInterpretTokensmas produzida através da interface do dispositivo de modo que o mesmo loop interpretador dirija extração de texto, enumeração de caminhos e renderização- A função de conveniência
HPDFExtractGlyphsViaDeviceenvolve o dispositivo de extração de texto + interpretador compartilhado em uma única chamada; asHPDFInterpretContentStream/HPDFInterpretTokensexistentes permanecem intactas para os chamadores atuais - Estágio 2 da abstração do dispositivo de content-stream:
THPDFPageRendereragora implementaIHPDFContentDevicede modo que o despachador compartilhado possa dirigi-lo através da mesma interface abstrata.ExecuteViaDeviceé a entrada de renderização opt-in dirigida por dispositivo; o caminho de produçãoExecutemantém seu despacho embutidoExecuteStream/HandleOperator, então o comportamento existente é inalterado. O renderizador carrega cada pedaço de estado que os callbacks precisam (pilha de estado gráfico, cache de fontes, handles GDI, quatro pontes de pintura) e cada método do dispositivo é uma delegação leve, então a rota dirigida por dispositivo é observavelmente equivalente à rota legada
Version 2.418.0
Added
DecompressLoadedDocumenté o inverso deCompressLoadedDocument: ele percorre todo stream indireto que carrega um/Filter /FlateDecode(forma de nome ou matriz de elemento único), inflate do payload de volta a bytes crus, remove a entrada/Filtere ajusta/Length; streams com outros filtros (CCITT / DCT / JBIG2 / JPX / Crypt / RunLength) e cadeias multi-filtro são deixados intactos, e payloads Flate corrompidos são pulados em vez de descartadosEnumLoadedPageElementsagora retorna a geometria completa do caminho por elementoekPath, não apenas a bounding box: dois novos camposPathPoints: array of THPDFPathPointePathIsCurve: array of Booleansão paralelos por índice e carregam os pontos de controle de cada segmento’s no espaço de usuário com um flag distinguindo segmentos bézier cúbicos dos lineares (arestas m / l / re). Chamadores que leem apenas o bbox não são afetados; extração de desenhos CAD, detecção de linhas de tabela e consumidores de reprodução vetorial agora podem reconstruir as curvas exatas que a página desenhou- A nova unit
HPDFContentDeviceintroduz a abstração do dispositivo de content-stream (estágio 0): uma interfaceIHPDFContentDevicecom uma implementação baseTInterfacedObject(que espelha o padrão consagrado deIHPDFFontResolver), um despachador compartilhadoHPDFInterpretContentStreamDeviceque hoje cobre o subconjunto de operadores de caminho / cor / estado, e umTHPDFPathEnumDeviceconcreto que coleta um record por caminho pintado com geometria completa de pontos. Isso quebra a duplicação tripla entreHPDFContentStream,HPDFPageRenderer.HandleOperatoreHPDFCollectPathElements; o estágio 1 adicionará callbacks de texto/imagem e o estágio 2 migrará o renderizador para o dispositivo
Changed
- Comentário de cabeçalho do
HPDFPageRendereratualizado: a nota “TrueType/CFF glyph-outline rendering out of scope” estava desatualizada — os contornos de glifo incorporados estão ativos desde a v2.342.0 (DrawTextRunchamaTHPDFEmbeddedTTF.DrawGlyph/THPDFEmbeddedCFF.DrawGlyphcom caminhos bézier quadráticos/cúbicos reais;TextOutWdo GDI é apenas o fallback para caracteres não mapeados). Fontes CID via Identity-H + CIDToGIDMap também são cobertas
Version 2.417.0
Added
- Five named loaded-document annotation helpers close the discovery gap where the existing
ASubtype-parameterised helpers (AddLoadedHighlightAnnotation,AddLoadedSquareAnnotation,AddLoadedPolygonAnnotation) already produced these subtypes but callers had to know the secret:AddLoadedCircleAnnotation,AddLoadedUnderlineAnnotation,AddLoadedStrikeOutAnnotation,AddLoadedSquigglyAnnotationandAddLoadedPolylineAnnotation-- once landed, the XFDF interchange layer (which already recognises these subtype strings) picks them up for free AddLoadedFileAttachmentAnnotationembeds an arbitrary file payload (PDF, image, office doc) as a FileAttachment annotation with the full three-object graph the spec requires: annotation dict / Filespec dict / EmbeddedFile stream with/SubtypeMIME,/Params /Sizeand creation/modification dates; the newTHPDFFileAttachmentIconenum (faiPushPin/faiGraph/faiPaperclip/faiTag) selects the standard pin icon viewers renderTHPDFFieldValidationOptionsrecord +HPDFDefaultValidationOptionsexpose the full AdobeAF*parameter surface (Decimals / SeparatorStyle / NegativeStyle / CurrencySymbol / CurrencyBefore / RangeMin / RangeMax) that the Acrobat JS helpers accept; the existingApplyLoadedFieldValidation(FieldIndex, Kind, DateFormat, Mask)signature is retained as a backward-compatible overload that forwards into the new record overloadApplyFieldValidationandApplyFieldCalculationbring the same Format+Keystroke+Validate / Calculate template to producer-mode fields (looked up by name) so newly-created forms get the same AF* scripts as loaded ones, without writing JavaScript by handCopyLoadedAnnotationsFromDocumentdeep-copies annotations from another loaded document directly PDF→PDF (no XFDF intermediary): reusesCopyObjectto rebuild indirect references, streams and/APappearances, rewrites/Pto the destination page, optionally remaps/IRTreply chains via/NM, optionally clears/Tauthor, and accepts aTHPDFAnnotCopyFilterEventcallback for selective copy -- covers Widget/PrinterMark/TrapNet/Watermark/3D/Screen that the XFDF layer does not reach
Fixed
ApplyLoadedFieldValidationwrote the Format JavaScript under trigger key/X(annotation-exit), which Acrobat never fires for form fields -- the script was effectively dead. Corrected to/Fso the format actually runs on field commitApplyLoadedFieldValidationemittedAFSpecial_FormatExfor the ArbitraryMask kind, a function that does not exist in the AdobeAF*set; onlyAFSpecial_KeystrokeEx(mask)is real, so the Format pass is dropped and enforcement happens at keystroke time as the spec intendsApplyLoadedFieldValidationunconditionally appendedAFRange_Validate(true,true,0,9999999)for numeric kinds, imposing a hidden 0..9999999 range the caller never asked for; range validation now only fires when the caller explicitly setsRangeMinorRangeMaxin the options recordApplyLoadedFieldValidationwrapped the ArbitraryMask in a JavaScript regex literal and emitted a hand-rolled validate script, but the mask is a literal format pattern ("AAA-9999"), not a regex; the validate pass is now removed and the keystroke mask carries the enforcement aloneApplyLoadedFieldCalculationnow prepends a Format+Keystroke number-formatting pair before theAFSimple_Calculatescript so the aggregated result renders as a plain number, matching common PDF viewer behaviour (without it the Calculate value displays raw)
Version 2.416.0
Added
THPDFViewernow scrolls on hover-wheel without needing a click first: a thread-localWH_MOUSEhook (newHPDFMouseWheelHookunit, auto-installed from itsinitializationsection) routesWM_MOUSEWHEELto whicheverTHPDFViewerinstance sits under the cursor, matching the behaviour of every native Windows PDF readerTHPDFVieweris now Per-Monitor DPI v2 aware: newHPDFPerMonitorDPIunit resolvesuser32!SetProcessDpiAwarenessContext(Win10 1703+,DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2) at runtime and falls back throughshcore!SetProcessDpiAwareness(Win8.1+) anduser32!SetProcessDPIAware(Vista+); the legacyHPDFEnablePerMonitorDPIis retained as an alias that forwards to the new layered helperTHPDFViewer.RenderAtPhysicalDPIpublished property (defaultTrue) makes the rendering DPI baseline track the monitor’s physical DPI viaHPDFGetWindowDPI, so 100% zoom on a 144 DPI panel renders at native resolution; a newWMDpiChangedhandler re-renders on cross-monitor moves; setFalseto preserve the historical 96-DPI logical baseline- Optional persistent disk tier for the rendered-page cache: setting
THotPDF.RenderCacheFolderto a writable folder path persists every page rendered byRenderLoadedPageToBitmapCachedas a PNG under<folder>\<SHA256-prefix-16>\<page>@<dpi>.png, so re-opening the same document later is instant;RenderCacheMaxDocuments(default 20) andRenderCacheMaxBytes(default 500 MB) bound the footprint with a true LRU eviction; the lookup order becomes in-memory → disk → rasterise, with disk hits back-filling the in-memory tier THotPDFconstructor now activates the highest available per-monitor DPI tier at first instantiation in runtime mode (skipped incsDesigning), so hosts that never callHPDFEnablePerMonitorDPIexplicitly still get crisp rendering on high-DPI displays
Version 2.415.0
Adicionado
HPDFParsePDFDateEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listados+HH’mm,-HH’mm, orZEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosTDateTime;HPDFFormatPDFDateEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosD:YYYYMMDDHHmmSS+00’00GetLoadedExtGStateInforeadsLW/LC/LJ/ca/CAEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedShadingCount/GetLoadedShadingNameandGetLoadedPatternCount/GetLoadedPatternNameenumerate the/Shadingand/Patternresource sub-dictionariesReplaceLoadedPageEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosSwitchLoadedPagesexchanges two pages,ReverseLoadedPagesEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosExtractLoadedPagesToPDFEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedPageInheritedBoxEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedFileSpecInfoEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedEmbeddedFileMIMEreturns the/Subtype,GetLoadedEmbeddedFileChecksumreturns the/Checksumdigest, andTHPDFNameTreeType+GetLoadedNameTreeRootCountEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosHPDFEnablePerMonitorDPIdynamically enables per-monitor DPI awareness;THPDFBackgroundRendererEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedPageContentStreamCountreports whether/ContentsEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedXMPValueEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedDocumentReportEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listados
Version 2.414.0
Adicionado
THPDFActionBuilder.URIWithIsMapEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listados/IsMap trueEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosURIEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listados/URIstringAddLoadedCaretAnnotationExEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listados/Sy PEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listadosGetLoadedAnnotationDAEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listados/DAEsta versão adiciona o comportamento e o suporte de API descritos por meio dos símbolos listados
Version 2.413.2
Corrigido
- Esta versão sincroniza o comportamento e o suporte de API descritos para os símbolos listados
Version 2.413.1
Fixed
- Type1 and CFF font handling now preserves parser ownership across repeated stream checks and multi-font FontSets, returns stable glyph names and bounding boxes, keeps fractional font sizes and DPI scaling, and avoids composite-glyph and private-dictionary memory errors
- The C++Builder AddDelPages, HugeFileBenchmark, and Security demos now compile for Win64, while page-operation and preflight examples release partially constructed objects safely
Version 2.413.0
Changed
- The Delphi E-Invoice demo now validates required invoice fields, amount and VAT ranges, currency syntax, and embedded XML profile compatibility before writing output
- The attach workflow now rejects identical source and output paths, reports the detected XML guideline, and combines container, PDF/A, XML profile, signature, visual consistency, Schematron, and external-report checks into one verdict
Fixed
- E-Invoice generation and manual validation no longer report a successful result when an enabled validation layer finds issues
- Loaded electronic-invoice summaries now read the invoice number, seller, and buyer from their correct XML aggregates, preventing false visible-text consistency findings
Version 2.412.0
Changed
- All Delphi demos now resolve no-argument relative assets and outputs from their executable directory while preserving the caller working directory for command-line paths
- Delphi command-line demos now provide stricter argument validation, failure exit codes, deterministic comparison inputs, and generated-document verification across page copying, text extraction, preflight, optimisation, inspection, and in-memory workflows
Fixed
- Delphi demos no longer risk page-list overflow above 100 selected pages, create an extra blank page in the add-page workflow, close unrelated PDF viewer windows, or report failed preflight checks as successful
- The E-Invoice attach workflow now rebuilds its current page correctly when a single-page source is converted, signed, and stripped of the temporary initial blank page
Version 2.411.0
Added
- E-Invoice demo: new "Attach to existing PDF" mode converts an existing PDF to PDF/A-3, embeds a Factur-X/ZUGFeRD invoice XML as a document-level attachment, and optionally signs the result with a PFX certificate
Version 2.410.0
Added
- Loaded AcroForm fields can now update flags, maximum length, text justification, per-widget rectangles, rotation, border colour, and visible or printable state, with widget enumeration for radio groups and other multi-widget fields
Fixed
- Loaded field tooltip, border-width, and background-colour edits now mark the correct field or widget dictionaries dirty, apply visual properties to every widget, and invalidate only the affected page render cache
Version 2.409.0
Added
ActivateLoadedLinksturns bare HTTP, HTTPS, FTP,www.,mailto:, and email text into positioned borderless URI annotations across a selected page range
Changed
- Loaded link creation now persists reliably in incremental updates, while automatic activation snapshots existing links once per page, skips matching URI and rectangle pairs, and invalidates each changed page cache only once
Version 2.408.0
Added
- Anotações carregadas agora podem atualizar seu título, nome exclusivo, data de modificação, retângulo normalizado e estilo de borda padrão sólida, tracejada, chanfrada, rebaixada ou sublinhada
Fixed
- Edições de anotações carregadas agora marcam o objeto de anotação como sujo para salvamentos incrementais, enquanto edições visuais invalidam apenas as renderizações em cache da página afetada e mantêm outras páginas quentes
Version 2.407.0
Added
THPDFViewerModelarmazena, corta, enumera, remove e limpa destaques persistentes de regiões de página sem modificar o PDFTHPDFVieweradiciona um modo de interação de destaque com arrastamento de seleção capturado, recuperação de coordenadas PDF cientes de rotação, cor configurável e um callbackOnMarqueeSelect
Fixed
- Transformações de coordenadas do visualizador agora mantêm o DPI de renderização real abaixo de 12 e acima de 2400, mantendo as seleções alinhadas nos limites de zoom de 5% e 6400%
Version 2.406.0
Added
THPDFViewerModelcria miniaturas de página cientes de rotação diretamente em um DPI selecionado para limites de pixels fornecidos pelo chamador, evitando bitmaps de página intermediários de tamanho completo- A pré-busca de páginas do modelo do visualizador aquece uma vizinhança centralizada de forma assíncrona, limitando as páginas agendadas à capacidade do cache de páginas renderizadas
Version 2.405.0
Added
THPDFPageLayoutagora suporta layouts de espelhamento de capa PDF 1.5plTwoPageLefteplTwoPageRightcom negociação automática de versão e fallback de versão estrita
Fixed
BeginDocagora preserva o layout de página selecionado pelo chamador em vez de sempre substituí-lo porplOneColumn
Version 2.404.0
Added
THPDFViewerModelcria instantâneos cientes de rotação de regiões delimitadas de páginas PDF sem alocar um bitmap de página inteira
Version 2.403.0
Added
THPDFViewerModelconverte pontos bidirecionalmente entre o espaço da página PDF e as coordenadas do visualizador cientes de rotação em um DPI selecionado pelo chamador
Version 2.402.0
Changed
- Comandos de zoom do visualizador agora usam níveis padrão estáveis de 5% a 6400%, incluindo navegação reversível em torno de valores personalizados arbitrários
Version 2.401.0
Added
THPDFVieweradiciona zoom com Ctrl+roda, rolagem vertical com roda e rolagem horizontal com Shift+roda sem renderizar novamente para entradas apenas de rolagem
Version 2.400.0
Added
THPDFVieweradiciona navegação de página por teclado, rolagem, atalhos de zoom e seleção de modo Tamanho Real, Ajustar à Largura ou Ajustar à Página
Version 2.399.0
Added
THPDFViewerdesenha ou imprime a visualização atual ciente de rotação com ajuste determinístico que preserva a proporção e posicionamento centralizado
Version 2.398.0
Added
THPDFViewerModelcria instantâneos EMF vetoriais de propriedade do chamador de qualquer página carregada ou da visualização atual, incluindo rotação de visualização não destrutiva de 90 graus
Version 2.397.0
Added
THPDFViewerModelsalva instantâneos de páginas cientes de rotação como BMP, JPEG ou PNG em arquivos e streams de propriedade do chamador com qualidade JPEG configurável
Version 2.396.0
Added
THPDFViewer.ResetViewrestaura o Tamanho Real, limpa a rotação de visualização e destaques de pesquisa enquanto preserva a página atual, com ações correspondentes de redefinição e rotação e atualizações de renderização única em lote
Version 2.395.0
Added
THPDFViewereTHPDFViewerModeladicionam rotação de visualização no sentido horário, anti-horário e redefinível que também se aplica a instantâneos de página de propriedade do chamador sem alterar a página do PDF
Version 2.394.0
Added
THPDFViewerModelpode criar instantâneos de página de propriedade do chamador e salvar a página atual como BMP sem construir um controle Viewer
Version 2.393.0
Added
THPDFLoadedFormFieldagora expõe flags de campo, MaxLen, índice de página, limites de widget e estados comuns Required, NoExport, Multiline e PasswordGetLoadedFormFieldMaxLengthfornece acesso indexado direto aos limites de comprimento de campos de texto carregados
Version 2.392.0
Added
SetDocumentAttachmentMetadatarenomeia anexos incorporados no nível do documento e atualiza suas descrições antes da serialização
Version 2.391.0
Added
ExtractLoadedPagesTextToStreamtransmite o texto selecionado das páginas carregadas como UTF-8 com separadores personalizados e saída BOM opcionalTHPDFViewerModeladiciona teste de hit de campo de formulário e navegação determinística por teclado entre widgets de páginaTHPDFSignatureInfo.CertificateTimeValidityrelata classificações de validade vinculadas ao certificado e de tempo assinado
Fixed
- Campos de formulário carregados sem referências inversas
/Pde widget agora podem ser mapeados por meio de arrays de anotações de página
Version 2.390.0
Added
THPDFWatermarkTemplate.MakeCurveeTHPDFPage.AddCurveWatermarkadicionam curvas Bezier cúbicas a compostos carregados e criação de novos documentos
Fixed
- Setters de metadados de documentos carregados agora marcam o dicionário Info como sujo para que salvamentos incrementais persistam alterações de título e autor
Version 2.389.0
Added
InsertLoadedBlankPageinsere uma página em branco com dimensões definidas pelo chamador em uma posição exata do documento carregadoExtractLoadedPagesTextagrega texto de um intervalo de páginas baseado em um com um separador definido pelo chamadorGetLoadedFormFieldNameValuePairseSetLoadedFormFieldNameValuePairsfornecem troca em lote de formuláriosnome=valorpor meio deTStringsCMapResourcePathsuporta caminhos de implantação CMap padrão explícitos para serviços, plug-ins e layouts de aplicativos personalizados
Changed
- O visualizador VCL agora desenha retângulos de acerto de pesquisa e atualiza quando o acerto ativo muda na página atual, enquanto controles de outline vinculados seguem as alterações do documento do visualizador
- A renderização de página agora resolve caixas de mídia, rotação e recursos herdados e mapeia corretamente origens de página diferentes de zero em cada rotação em ângulo reto
Fixed
- Conflitos de nomes de formulários são rejeitados antes do início da inserção ou anexação de páginas quando a renomeação por mesclagem está desativada, deixando a contagem de páginas de destino inalterada
- A exclusão de páginas carregadas agora desvincula seus campos de widget AcroForm e remove ramificações vazias da árvore de campos em vez de deixar referências para páginas excluídas
- Auxiliares de pesquisa em estilo de cursor e falhas de modelo de visualizador não limpam mais registros gerenciados de correspondência de texto com operações de memória bruta
- A descoberta automática de CMap agora passa a raiz real da coleção para o decodificador de texto
Version 2.388.0
Added
- O novo
DeletePagesremove intervalos de páginas baseados em um de PDFs carregados, remove duplicatas de seleções sobrepostas, relata o progresso e reconstrói uma árvore de páginas válida para salvamento - A inserção de páginas e a mesclagem por anexação agora aceitam
THPDFMergeOptionspara copiar outlines recursivos, registrar campos AcroForm importados e renomear de forma determinística nomes de campos conflitantes - O novo
AddLoadedRadioButtoncria um campo de rádio pai verdadeiro com widgets filhos, valores de exportação compartilhados e estados completos de aparência ligado/desligado - O novo
SearchLoadedNextfornece pesquisa de próxima correspondência local de página sem estado, enquantoGetLoadedOutlineEntriesretorna instantâneos de contorno recursivos completos com dados de pai e nível - Novas sobrecargas de assinatura do repositório de certificados do Windows selecionam um certificado de usuário atual ou de máquina local por hash SHA-1 e assinam por meio de chaves privadas CNG ou CSP legadas
- A nova
THPDFLoadedDocumentFacadeexpõe coleções tipadas de outlines, formulários, anotações, fontes e imagens com auxiliares de mutação e extração - Novas classes de visualização
THPDFViewer,THPDFSearchPanel,THPDFOutlineViewer, modelo do visualizador e ações do visualizador adicionam controles reutilizáveis de exibição de página, navegação, zoom, pesquisa e favoritos VCL - Novas demos de impressão avançada, validação de assinatura, miniatura de página, exportação de imagem carregada e inspeção tipada de documentos carregados cobrem os fluxos de trabalho de ponta a ponta
Changed
- A impressão de documentos carregados agora cria sequências de páginas físicas agrupadas ou não agrupadas determinísticas, suporta largura e comprimento de papel personalizados e relata códigos, nomes e tamanhos de papel da impressora
- A enumeração de certificados do sistema agora inclui hashes SHA-1, disponibilidade de chave privada, datas de validade e metadados de uso de chave
Fixed
- O crescimento dos resultados de pesquisa de texto carregado não copia mais registros de strings gerenciadas com movimentações de memória bruta, evitando falhas de ponteiro inválido no Win64
- A exclusão de páginas carregadas não libera mais recursos de página compartilhados nem deixa contagens de árvore de páginas obsoletas que reaparecem após salvar e recarregar
Version 2.387.0
Added
- O novo
PrefetchLoadedPagesrenderiza um intervalo de páginas no cache de páginas renderizadas em uma thread de trabalho em segundo plano, para que um visualizador que folheia páginas obtenha acertos instantâneos de cache quente em vez de esperar por cada renderização CancelLoadedPagePrefetchpara o trabalhador eIsLoadedPagePrefetchActiverelata seu estado; carregar outro documento ou destruir o componente cancela uma pré-busca ativa automaticamente- A renderização em cache e a thread de trabalho de pré-busca são serializadas internamente, de modo que
RenderLoadedPageToBitmapCachedpermanece seguro para chamar enquanto uma pré-busca está em execução
Version 2.386.0
Added
- O novo
FlattenLoadedAnnotationsdesenha a aparência normal de cada anotação permanentemente no conteúdo da página em seu retângulo e remove a anotação, para que os elementos visuais de marcação e formulário sobrevivam em visualizadores que ocultam ou não podem editar anotações - A passagem segue dicionários de estado de aparência por meio de
/AS, respeita a caixa delimitadora de aparência e a matriz ao ajustar o retângulo, e pode ser limitada a um subtipo de anotação ou a um intervalo de páginas
Version 2.385.0
Added
- O novo
RenderLoadedPageRegionToBitmaprasteriza apenas uma janela de espaço de usuário escolhida de uma página no DPI solicitado, de modo que páginas muito grandes possam ser renderizadas bloco por bloco em memória limitada em altas resoluções em vez de como um bitmap superdimensionado - Os blocos se alinham exatamente: o bitmap covers precisamente a região solicitada, de modo que os blocos adjacentes se remontam na página inteira sem emendas
Version 2.384.0
Added
- O novo
GenerateLoadedPageThumbnailsrenderiza as páginas selecionadas de um documento carregado e as incorpora como miniaturas de página JPEG, as pré-visualizações mostradas nos painéis de página do visualizador; o tamanho da borda mais longa e a qualidade JPEG são configuráveis, e as miniaturas existentes são substituídas no local GetLoadedPageThumbnailSizelê de volta as dimensões de pixels de uma miniatura incorporada, eClearLoadedPageThumbnailsremove as miniaturas das páginas selecionadas
Version 2.383.0
Added
EnumLoadedPageElementsagora relata elementos de caminho vetorial junto com trechos de texto e imagens: cada caminho desenhado gera um elemento com sua caixa delimitadora de espaço de usuário, o operador de pintura (traço, preenchimento ou ambos), as cores de preenchimento e traço em vigor e a contagem de segmentos- O rastreador de caminho segue o aninhamento de
q/Qe as transformaçõescm, de modo que as formas desenhadas dentro de blocos dimensionados ou traduzidos relatam suas coordenadas de página reais
Version 2.382.0
Added
THPDFPrintOptionsganha os camposDuplex(simplex, borda longa, borda curta),PaperBinePrintQualityque são enviados para o modo de dispositivo da impressora antes do início do trabalho; um valor explícito deOrientationagora também é aplicado- O novo
HPDFGetInstalledPrinterslista as impressoras do sistema, eHPDFGetPrinterCapabilitiesrelata o suporte a frente e verso e cores de uma impressora, contagem máxima de cópias, bandejas de papel (com os códigos aceitos porPaperBin) e resoluções suportadas
Version 2.381.0
Added
- O novo
CopyLoadedOutlinesFromDocumentmescla a árvore de favoritos completa de outro documento carregado no atual, preservando títulos, aninhamento, ordem de irmãos e parâmetros de visualização de destino, enquanto remapeia cada página de destino por um deslocamento fornecido pelo chamador — o complemento das mesclagens de anexação de páginas para que os documentos combinados mantenham ambos os conjuntos de favoritos
Fixed
GetLoadedBookmarkPageIndexagora encontra favoritos além da primeira entrada de nível superior e dentro de níveis aninhados; a busca anterior só correspondia a favoritos posteriores por coincidência
Version 2.380.0
Added
- O novo
ImposeLoadedPagesNUpdistribui qualquer intervalo de páginas em folhas de grade (qualquer disposição de colunas por linhas, tamanho de folha e calha configuráveis) na ordem de leitura, dimensionando cada página em sua célula com preservação opcional da proporção - O novo
ImposeLoadedPagesBookletproduz folhas de livreto com grampeamento em sela: as páginas são preenchidas para um múltiplo de quatro e emparelhadas na ordem do livreto de modo que a impressão em frente e verso e a dobra resultem em um livreto ordenado corretamente - Ambas as chamadas de imposição envolvem as páginas de origem como Form XObjects e anexam as folhas finalizadas após as páginas existentes, retornando a contagem de folhas
Fixed
- A renderização de página carregada agora segue uma referência indireta no sub-dicionário
/XObjectde recursos; páginas cujos recursos chegaram como objetos separados ignoravam suas imagens e formulários silenciosamente
Version 2.379.0
Added
SaveLoadedPagesAsImagesganha dois formatos TIFF:ifTIFFgrava um arquivo TIFF de página única por página, eifTIFFMultiagrega todo o intervalo de páginas em um único TIFF de várias páginas, unificando a saída TIFF com as opções existentes de BMP, JPEG, PNG, EMF e WMF- Ambos os caminhos TIFF respeitam o DPI de renderização solicitado nas tags de resolução da imagem e usam compressão Deflate sem perdas
Version 2.378.0
Added
- A renderização de página carregada agora desenha modos de renderização de texto 1 (traço) e 2 (preenchimento seguido de traço) com contornos de glifos reais para fontes incorporadas e fallbacks de fontes do sistema, usando a cor do traço e a largura de linha atuais; as variantes de recorte 4 a 7 pintam como seus modos base
Fixed
- Doze operadores de conteúdo de operando único (
Tc,Tw,Tz,TL,Ts,Tr,w,J,j,M,ri,i) leram seu operando da posição incorreta do token e sempre aplicaram zero; o espaçamento de caracteres e palavras, escala horizontal, entrelinhamento, subida de texto, modo de renderização, largura de linha, limites de linha, junções e limite de meia-esquadria agora entram em vigor ao renderizar páginas carregadas
Version 2.377.0
Added
- A renderização de página carregada agora respeita a visibilidade do conteúdo opcional (camada): o conteúdo dentro de seções marcadas com
BDC /OCe XObjects que contêm uma entrada/OCé ocultado quando sua camada está desativada, seguindo a configuração padrão do documento (/BaseState,/ON,/OFF) - Dicionários de associação de conteúdo opcional avaliam sua política
/P(AnyOn,AllOn,AnyOff,AllOff) sobre os grupos de membros - Novas APIs de camada em documentos carregados:
GetLoadedOptionalContentGroupCount,GetLoadedOptionalContentGroupName,GetLoadedOptionalContentGroupVisibleeSetLoadedOptionalContentGroupVisiblepara inspecionar e substituir estados de camada para renderização; as substituições invalidam o cache de página renderizada automaticamente
Version 2.376.1
Fixed
- A renderização de bitmap de página carregada agora pinta XObjects de imagem: as buscas de recursos
Do,gseshanteriormente ignoravam seus nomes de operandos prefixados com barra e pulavam o objeto silenciosamente - O operador
cme os valores/Matrixde Form XObject agora são concatenados na ordem correta, de modo que sequências de posicionamento de translação e escala (o padrão de posicionamento de imagem) posicionem o conteúdo na posição pretendida da página
Version 2.376.0
Added
- Novas APIs
RegisterExponentialFunction,RegisterStitchingFunctioneRegisterPostScriptFunctioncriam objetos de função independentes do Tipo 2, Tipo 3 e Tipo 4 para uso onde quer que uma referência de função seja aceita (sombreamentos, funções de ponto e transferência de meio-tom, transformações de tonalidade) RegisterPostScriptFunctionvalida o programa da calculadora no momento do registro por meio de avaliação de teste, de modo que programas malformados sejam rejeitados imediatamente em vez de degradarem silenciosamente nos visualizadores- A nova
RegisterSeparationFunccria um espaço de cores Separation com um objeto de função de transformação de tonalidade fornecido pelo chamador
Fixed
- A renderização de transformações de tonalidade do Tipo 2 (exponencial) com saídas de um ou três componentes não pinta mais em preto; anteriormente, apenas saídas de quatro componentes (CMYK) eram decodificadas corretamente
- A renderização de transformações de tonalidade do Tipo 3 (costura/stitching) agora suporta qualquer número de subfunções, aplica o remapeamento de
/Encodee aceita arrays/Boundsde entrada única
Version 2.375.0
Added
- A renderização de página agora avalia funções de transformação de tonalidade do Tipo 4 (calculadora PostScript), para que cores Separation e DeviceN e sombreamentos de gradiente orientados por programas de calculadora renderizem suas cores reais em vez de um espaço reservado cinza
- O avaliador da calculadora cobre o conjunto completo de operadores ISO 32000-1 7.10.5: aritmética, comparação, booleanos e bit a bit, manipulação de pilha e condicionais
if/ifelse
Fixed
- A seleção de espaço de cores nomeado (operadores
cs/CS) na renderização de página carregada agora resolve os nomes de recursos corretamente; anteriormente, a busca falhava e o conteúdo voltava ao espaço de cores padrão - A renderização de página carregada agora segue referências indiretas a espaços de cores com valores de array, como definições
/Separatione/DeviceNarmazenadas como objetos independentes
Version 2.374.0
Fixed
- A importação/exportação de anotações XFDF agora preserva os dados de aparência padrão da anotação de cursor (caret) por meio do filho
<defaultappearance>e da entradaDAda anotação PDF
Version 2.373.0
Fixed
- A importação/exportação de anotações XFDF agora preserva a geometria de borda (fringe) da anotação de cursor (caret) por meio do atributo
fringee da entradaRDda anotação PDF
Version 2.372.0
Fixed
- A importação/exportação de anotações XFDF agora preserva a rotação da anotação de carimbo (rubber stamp) por meio do atributo
rotatione da entradaRotateda anotação PDF
Version 2.371.0
Fixed
- A importação/exportação de anotações XFDF agora preserva as relações de resposta da anotação de texto por meio de
inreplyto,replyTypee das entradasIRTeRTda anotação PDF
Version 2.370.0
Added
- Campos numéricos, de data e hora e de senha XFA com rolagem horizontal desativada agora são nivelados para widgets de texto AcroForm com a flag do PDF para não rolar
Version 2.369.0
Added
- Campos de texto XFA com políticas de rolagem desativadas agora são nivelados para widgets de texto AcroForm com a flag do PDF para não rolar
Version 2.368.0
Added
- Campos de texto XFA com
multiLine="1"agora são nivelados para widgets de texto AcroForm com a flag do PDF para multilinhas
Version 2.367.0
Added
- Restrições de acesso de subformulários XFA agora são herdadas nos widgets filhos para que os campos AcroForm gerados permaneçam somente leitura quando um ancestral for
readOnly,protected, ounonInteractive
Version 2.366.0
Added
- O nivelamento da lista de escolha XFA agora mapeia
commitOn="select"para a flag AcroForm de commit na alteração de seleção para campos de escolha gerados
Version 2.365.0
Added
- O nivelamento da lista de escolha XFA agora mapeia listas de
open="always"para caixas de listagem AcroForm de seleção única em vez de caixas de combinação suspensas
Version 2.364.0
Added
- O nivelamento da lista de escolha XFA agora mapeia listas combinadas de
textEntry="1"para caixas de combinação AcroForm editáveis enquanto preserva valores digitados fora da lista de opções
Version 2.363.0
Added
- O nivelamento da lista de escolha XFA agora prefere valores de
<items save="1">quando um campo possui listas de opções separadas para exibição e valor salvo
Version 2.362.0
Fixed
- A importação/exportação de anotações XFDF agora preserva os atributos FreeText de
justificationetailpor meio das entradasQeITda anotação PDF - Os padrões de documento JBIG2 agora correspondem às configurações amigáveis de digitalização documentadas para nível de perda, limpeza isolada de pixels pretos e tamanho do ponto preto
Version 2.361.0
Fixed
- A importação/exportação de anotações XFDF agora preserva atributos padrão de linha de chamada e legenda, incluindo
leaderLength,leaderExtended,caption,leader-offset,caption-style, valores de deslocamento de legenda e a grafialeaderExtendusada no lado da importação por arquivos XFDF compatíveis
Version 2.360.0
Added
- O nivelamento XFA agora suprime a saída de campos e desenhos estáticos ocultados por
presence="hidden",presence="invisible"oupresence="inactive", incluindo descendentes de contêineres ocultados
Version 2.359.0
Added
- O nivelamento XFA agora mapeia restrições de nível de campo de
access="readOnly",access="protected"eaccess="nonInteractive"para a flag de somente leitura do AcroForm gerado
Version 2.358.0
Added
- O nivelamento XFA agora preserva a semântica de
<choiceList open="multiSelect">definindo a flag PDF de seleção múltipla na caixa de listagem AcroForm gerada
Version 2.357.0
Added
- O nivelamento XFA agora mapeia campos
<ui><passwordEdit>para campos de texto AcroForm com a flag PDF de senha, preservando valores vinculados enquanto permite que os leitores tratem o campo como entrada de estilo de senha
Version 2.356.0
Added
- O nivelamento XFA agora respeita vinculações explícitas de campos
<bind match="none">, de modo que os campos marcados como não vinculados permaneçam em branco em vez de receberem valores de mesmo nome do formulário XFA ou pacotes de conjuntos de dados
Version 2.355.0
Added
- O nivelamento XFA agora respeita vinculações explícitas simples de campos
<bind match="dataRef" ref="...">, como$record.customer.legalName, de modo queApplyXFAAsAcroFormeFlattenLoadedXFApreservem os valores armazenados sob um nome de nó de dados diferente antes da correspondência automática de mesmo nome
Version 2.354.0
Fixed
- A importação/exportação de anotações XFDF agora preserva filhos de anotação de link
BorderStyleAltpor meio do arrayBorderda anotação PDF, incluindo raios de canto, largura e valores de padrão de traço
Version 2.353.0
Fixed
- A importação/exportação de anotações XFDF agora preserva atributos
interior-colorpadrão para anotações de linha, quadrado, círculo, polígono, polilinha e redação por meio do array de coresICda anotação PDF
Version 2.352.0
Fixed
- A importação/exportação de anotações XFDF agora preserva o estilo de borda de anotação padrão e atributos de efeito de borda nublada, incluindo
width,dashes,styleeintensity
Version 2.351.0
Fixed
- A importação/exportação de anotações XFDF agora preserva o rich text da anotação por meio de
<contents-richtext>e importa a geometria do filho popup e o estado aberto nos dicionáriosPopupde anotação
Version 2.350.0
Fixed
- A importação/exportação de anotações XFDF agora preserva atributos de anotação padrão adicionais: valores de estado aberto e de revisão de texto, estilos de extremidade de linha,
coordsde link e redação, estilo padrão FreeText, aparência padrão e rotação, e geometria de borda (fringe) quadrada ou circular
Version 2.349.0
Fixed
- A importação/exportação de anotações XFDF agora segue as estruturas ISO 19444-1 para linhas, polígonos, polilinhas e anotações de tinta: as exportações de linhas incluem pares completos de coordenadas
start/end, os dados de polígonos e polilinhas usam elementos filhos<vertices>, os dados de tinta usam<inklist><gesture>, pares de coordenadas separados por ponto e vírgula são importados corretamente e subtipos de anotações não suportados não inflam mais a contagem exportada
Version 2.348.0
Added
- A propriedade
LoadedPageCount,DuplicateLoadedPage,AddLoadedBlankPage,SetLoadedPageRotationValueeGetLoadedPageBoxRectcompletam a API de operações de página de documentos carregados — duplique páginas, insira separadores em branco, defina a rotação e leia qualquer uma das cinco caixas de página em uma única chamada GetLoadedEncryptionMethodretorna o nome da cifra (RC4-40/RC4-128/AES-128/AES-256),GetLoadedFileStructureInfoagrega informações de linearização / streams de objetos / tipo de xref em uma única chamada,LoadedSourceFileSizeé uma propriedade eSetLoadedPDFVersionupdates a versãoStampLoadedPageImageeStampLoadedPageImageFromFileincorporam um XObject de imagem JPEG (logotipo / imagem de assinatura / código QR) em uma página carregada em um retângulo especificado,InsertLoadedTextdesenha um trecho de texto de linha única eGetLoadedPageContentLengthretorna a contagem de bytes decodificadosTHPDFPrintOptionsganhaIgnoreHardMargin(desloca as margens físicas da impressora para que o conteúdo não seja cortado) eAutoRotate(páginas em paisagem imprimem em paisagem automaticamente)SaveLoadedPagesAsImagesganhaBMPPixelFormat/BMPMonochrome(exportação mono / 8 bits) eJPEGScale(decodificação JPEG subamostrada de 1 / 2 / 4 / 8 para miniaturas rápidas)CompressLoadedDocumentcompacta com zlib cada stream não compactado no grafo de objetos carregados e grava/Filter /FlateDecode, reduzindo o tamanho de saída
Fixed
StampLoadedPageTexteStampLoadedPageImageagora descompactam de forma transparente streams de conteúdo FlateDecode antes de anexar operadores — anteriormente, carimbar em um/Contentscompactado corrompia silenciosamente a carga útil do zlib e o texto/imagem anexado desaparecia
Version 2.347.0
Added
AddLoadedOutlinecria um novo favorito em um PDF carregado em qualquer nível de aninhamento (ParentIndex = -1para nível superior), com um destino/Dest [page /XYZ x y zoom]— o recurso de documento carregado mais solicitado, preenchendo a lacuna de que o HotPDF podia ler/modificar/excluir favoritos, mas nunca criá-losSetLoadedOutlineDestinationeSetLoadedOutlineURIreescrevem a página de destino de um favorito existente ou a alternam para uma ação de URIResolveLoadedNamedDestinationtransforma uma string de destino nomeado em um índice de página baseado em zero, eAddLoadedNamedDestinationregistra uma nova âncora na árvore/Names /Destsdo documento carregadoGetLoadedBookmarkPageIndexé uma busca de conveniência: passe o título de um favorito e receba de volta a página para a qual ele aponta
Version 2.346.0
Fixed
- A qualidade da escala de imagem agora respeita
/Interpolate: o modo de esticamento HALFTONE é usado por padrão (redução de escala suave) e COLORONCOLOR quando a imagem define explicitamente/Interpolate false, de modo que pequenas imagens rasterizadas mantenham suas bordas nítidas conforme planejado pelo autor, em vez de sempre ficarem borradas
Version 2.345.0
Fixed
- Ajustes de kerning do array TJ não são mais descartados: os elementos numéricos entre trechos de strings avançam a matriz de texto por
-valor × FontSize / 1000, de modo que títulos e letras de logotipos com espaçamento estreito vindos do Word / Illustrator posicionem os glifos nos deslocamentos pretendidos - Tw (espaçamento de palavras) agora também é acionado no espaço ideográfico CID (U+3000, código
$3000), de modo que o texto justificado em japonês / chinês receba seu espaçamento de palavras em vez de apenas o código ASCII 32 - A detecção de peso de fonte / itálico agora consulta
/FontDescriptor /Flags(bit 18 ForceBold) e/ItalicAnglealém do nome/BaseFont, de modo que fontes prefixadas por subconjunto cujo nome não carrega o sufixo-Boldainda sejam renderizadas com o peso correto
Version 2.344.0
Added
GetLoadedTrappedlê a chave/Trappeddo dicionário Info (True/False/Unknown), onde anteriormente era somente gravação — os fluxos de trabalho de preflight PDF/X agora podem fazer o ciclo completo do estado do trapGetLoadedDocumentMetadataXMLretorna os bytes brutos do stream de metadados XMP para que documentos PDF/A cujo dicionário Info está ausente ainda possam expordc:title/dc:creator/xmp:CreateDateGetLoadedCollectionInfolê o nome do/Collectionde um PDF Portfolio (a árvore de nomes EmbeddedFiles ainda carrega a lista de arquivos)GetLoadedOutlineChilddesce um nível na árvore de favoritos, retornando o/Firstfilho de uma entrada de favoritos de nível superior, de modo que favoritos de capítulos / subcapítulos aninhados não fiquem mais invisíveisRotateLoadedPagesrotaciona cada página em um intervalo por um ângulo fornecido (acumulando no/Rotateexistente), a contraparte em lote da rotação por páginaSetLoadedPageBoxForRangedefine uma caixa de página (Media/Crop/Bleed/Trim/Art) para cada página em um intervalo em uma única chamadaGetLoadedViewerPreferencesagora também lêHideWindowUIeCenterWindow, correspondendo às seis chaves que o gravador emite (anteriormente apenas quatro retornavam)
Version 2.343.0
Fixed
- O idioma de corte
W n/W* nagora aplica o corte: o operadornconstrói o caminho pendente e chamaSelectClipPathem vez de descartar tanto o caminho quanto o corte pendente, de modo que os cortes de retângulo / contêiner gravados comore ... W nnão vazem mais seus conteúdos além do limite SetMiterLimitagora é enviado ao GDI antes de construir a caneta de traço, para que junções nítidas respeitem o limite de meia-esquadria do PDF (padrão 4) em vez do padrão 10 do GDI — eliminando os picos longos em junções de ângulos agudos- Glifos do Tipo 3 declarados com
d0(que permite cores) agora limpam explicitamente a flag de supressão de cor, para que um glifod1anterior não sangre mais sua supressão de cor em um glifod0
Added
- Os operadores
ri(intenção de renderização) ei(nivelamento) agora são consumidos e armazenados no estado gráfico (camposRenderingIntent/Flatness), onde anteriormente eram ignorados silenciosamente
Version 2.342.0
Added
- O operador do modo de renderização de texto
Tragora é consumido; o modo 3 (invisível) ignora a pintura do trecho de texto inteiramente, para que a camada de texto oculta de OCR / fundo do formulário não seja mais pintada como glifos de lixo sobrepostos — o caso mais comum deTrem PDFs do mundo real; os modos 1 / 2 (traço) atualmente voltam a preencher enquanto aguardam o suporte a contornos por glifo - Os operadores de conteúdo marcado
BMC/BDC/EMCe as variantes de propriedadeDP/MPagora mantêm um contador de profundidade no renderizador, o pré-requisito para uma avaliação de visibilidade OCG / OCMD em uma etapa posterior; os operadores de compatibilidadeBX/EXmantêm seu próprio contador para que o renderizador saiba que está dentro de um bloco de compatibilidade
Version 2.341.0
Fixed
- Os operadores Bezier abreviados
veyagora são tratados pelo renderizador de páginas, onde anteriormente eram silenciosamente ignorados — retângulos arredondados, círculos e as curvas produzidas pelo Illustrator / PowerPoint / InDesign são renderizados corretamente em vez de serem truncados ou descartados DrawTextRunagora respeitaTz(escala horizontal de texto),Tw(espaçamento de palavras, aplicado ao glifo de espaço) eTs(subida de texto), de modo que as exportações justificadas do Word posicionem os glifos na largura correta, cabeçalhos que são esticados/espremidos horizontalmente mantenham seu comprimento e o texto em sobrescrito/subscrito se eleve da linha de base — anteriormente esses três valores de estado de texto eram armazenados, mas nunca consumidos
Version 2.340.0
Added
SearchLoadedPageTextWholeWordfiltra as correspondências de substrings produzidas porSearchLoadedPageTextlimitando-as àquelas que se situam nos limites das palavras (o glifo antes do início da correspondência e após o fim da correspondência não deve ser um caractere de palavra), fornecendo correspondência de palavras inteiras sem preencher a string de pesquisa com um espaço finalGetLoadedSearchHitRectcolapsa o intervalo de glifos de uma correspondência em um único retângulo delimitador (Left/Top/Right/Bottom do espaço do usuário, preenchido por uma fração do tamanho da fonte), para que um visualizador possa desenhar uma caixa de destaque por acerto em vez de percorrer a array de glifos
Version 2.339.0
Added
ExtractLoadedPageTextColumnsreconstrói texto de várias colunas: os glifos são agrupados em linhas de base por uma tolerância Y, cada linha é classificada por X e uma linha é dividida em colunas separadas (separadas por tabulação) onde quer que o espaço entre glifos consecutivos exceda um múltiplo configurável do avanço médio do glifo — a contraparte ciente de coluna paraExtractLoadedPageTextLayoutque anteriormente declarava a detecção de coluna fora do escopoTHPDFPageElementagora carrega umaBaselineRole(brNormal/brSuperscript/brSubscript) preenchida porEnumLoadedPageElements: uma execução cujo tamanho de fonte é marcadamente menor que a média da página e cuja origem Y fica acima ou abaixo da linha de base dominante é sinalizada
Version 2.338.0
Fixed
- Os XObjects de imagem agora são posicionados transformando o quadrado unitário por meio da CTM atual, em vez de serem esticados por todo o bitmap da página — o
StretchDraw(Rect(0,0,W,H))anterior posicionava incorretamente cada imagem na página; as imagens agora aparecem no retângulo que o stream de conteúdo realmente especifica
Added
- As imagens de estêncil
/ImageMasksão detectadas no lado da renderização e pintadas com a cor de preenchimento atual (PDF 8.9.6.1), onde o renderizador anteriormente as desenhava como um bitmap simples em tons de cinza
Version 2.337.0
Added
- Estilo de traço no lado da renderização: o renderizador de página agora respeita os operadores
J(LineCap: butt/round/square),j(LineJoin: miter/round/bevel),M(MiterLimit) ed(array LineDash + fase) construindo uma caneta geométrica viaExtCreatePenem vez do antigoCreatePen(PS_SOLID, ...)fixo, para que junções arredondadas, bordas tracejadas e extremidades quadradas sejam renderizadas corretamente - Operador
gs(ExtGState) no lado da renderização: o dicionário ExtGState nomeado em/Resources/ExtGStateagora é consumido paraLW/LC/LJ/ML/ca/CAe aplicado ao estado gráfico, onde o renderizador anteriormente descartava o operador inteiramente - Estado gráfico estendido com os campos
LineCap/LineJoin/MiterLimit/LineDash/DashPhase/FillOpacity/StrokeOpacity, todos com valores iniciais padrão do PDF
Fixed
- O corte (
W/W*) agora define o modo de preenchimento de polígono do GDI (ALTERNATEvsWINDING) antes deSelectClipPath, de modo que as interseções de corte even-odd e nonzero-winding não sejam mais idênticas
Version 2.336.0
Security
- O analisador de espaço de cores
/Indexedno lado da renderização agora limitaHiValao intervalo[0..255]exigido pela especificação, fechando um vetor de leitura além do buffer onde um HiVal malformado permitia quenComps × indexHighestourasse uma contagem de bytes de 32 bits e lesse além da tabela de busca
Added
AttachLoadedAnnotationMeasuregrava um dicionário/Measure(PDF 1.7 §12.5.6.13) em uma anotação de Linha ou Polígono, contendo o array/NumberFormat(rótulo de unidade, estilo decimal/fração/arredondamento, precisão), a proporção/Scalee o fator de isotropia/CYX— para que um visualizador possa computar a distância ou área do mundo real que a forma abrange
Version 2.335.0
Added
- Operador
sh(shading/sombreamento) no lado da renderização: sombreamentos axiais (Tipo 2) e radiais (Tipo 3) agora são pintados em vez de serem silenciosamente descartados, de modo que os PDFs cujos fundos dependem de gradientes no estilo Word/Excel renderizem sua mistura de cores; o sombreamento is discretizado em faixas ao longo de seu eixo e cada faixa é preenchida com a cor que a função do sombreamento avalia naquele ponto
Version 2.334.0
Added
- O avaliador de objeto de função no lado da renderização
HPDFEvalTintTransformagora resolve o Tipo 2 Exponencial (C0 + xN·(C1-C0)com limitação de Domain/Range), Tipo 0 Amostrado (8/16/32 bits, mapeamento Encode, amostra mais próxima) e Tipo 3 Costura/Stitching (recursão de subfunção selecionada por limites/Bounds) — para que as transformações de tonalidadeSeparation/DeviceNe funções de sombreamento avaliem para cores de espaço alternativo reais em vez do fallback cinza do v2.333.0; calculadoras PostScript do Tipo 4 degradam graciosamente - O renderizador de páginas agora vincula o resolvedor de referência indireta da unidade de espaço de cores e o leitor de stream decodificado ao seu acesso ao documento no momento da construção, para que os objetos de stream de transformação de tonalidade possam ser decodificados pelo mesmo caminho que os XObjects de imagem
Version 2.333.0
Added
- Espaços de cores baseados em CIE no lado da renderização:
CalGray,CalRGB(gama + matriz 3×3) eLab(Lab→XYZ→sRGB com o cubo de ponto de quebra 6/29) agora resolvem para cores reais em vez de degradar para preto; a matriz sRGB adaptada por Bradford é armazenada em cache por ponto branco para que o trabalho por pixel permaneça uma única multiplicação de 3×3 - O espaço de cores
ICCBasedno lado da renderização é resolvido por meio de seu/Alternate(ou uma suposição de DeviceRGB/Gray/CMYK baseada em N quando Alternate está ausente), para que páginas que carregam um perfil ICC sejam exibidas corretamente sem uma dependência do lcms - Espaços de cores especiais (spot-colour)
SeparationeDeviceNno lado da renderização: o espaço alternativo, a referência da função de transformação de tonalidade e a contagem de componentes são analisados; a transformação de tonalidade é vinculada por meio de um avaliador plugável para que as páginas de cores especiais sejam distinguíveis de "cor não definida" (a avaliação completa da tonalidade ocorre com o mecanismo de função) - Operadores de cores genéricos
cs/CS/sc/SC/scn/SCNagora são tratados pelo renderizador de páginas, o pré-requisito para que cada espaço de cores não Device tenha efeito em uma página carregada - Resolução de cores unificada via
HPDFResolveColorcom os registros estendidosTHPDFColorSpaceFamilyeTHPDFCIEParams, substituindo a lógica ad-hoc por espaço
Version 2.332.0
Added
RenderSignatureFieldAppearancepinta um modelo de aparência de campo de assinatura predefinido — borda, preenchimento leve e até quatro linhas de texto rotuladas ("Assinado digitalmente por <Nome>", "Motivo: ", "Local: ", "Data: ") — selecionado via um conjunto deTHPDFSignatureDisplayOptionscomo um wrapper de conveniência em torno deAttachSignatureFieldAppearanceEnumerateSystemCertificatespercorre um repositório de certificados do Windows (comumMY/ROOT/CA) via carregamento dinâmico daCrypt32.dlle retorna os nomes de exibição do assunto / emissor mais o DER bruto para cada certificado, o bloco de construção para uma UI de assinatura do tipo "escolha um certificado / chave USB"
Security
- O algoritmo de hash de assinatura é SHA-256 por padrão com o Valor de Semente PAdES (PAdES Seed Value)
DigestMethodsjá aceitando SHA-256 / SHA-384 / SHA-512, de modo que nenhum caminho de assinatura SHA-1 existe
Version 2.331.0
Added
RenderLoadedPageToDCdesenha uma página diretamente em um contexto de dispositivo fornecido pelo chamador (canvas da impressora, superfície fora da tela,TCanvaspersonalizado), removendo a necessidade de bitmap intermediário para fluxos de trabalho de impressão e alto DPIRenderLoadedPageToClipboardcoloca uma página na área de transferência como um bitmap de 24 bits ou como um metafile aprimorado (texto vetorial), para que colar no Word / colar no editor de imagens simplesmente funcionePrintLoadedDocumentcom um registroTHPDFPrintOptionsconduz oTPrinterda VCL por um intervalo de páginas, DPI, cópias, agrupamento, dimensionamento FitPage e renderização por página — a biblioteca de documentos agora vem com seu próprio caminho de impressão em vez de exigir que cada chamador configure um
Version 2.330.0
Added
GetLoadedPageLabellê de volta o intervalo/PageLabels /Numsque cobre um determinado índice de página, retornando o código de estilo, prefixo e número inicial — a contraparte de leitura deSetLoadedPageLabel, para que rótulos que o chamador não criou possam agora ser inspecionados e salvos/reutilizadosStitchLoadedPageSideBySideExrealiza a mesclagem lado a lado de 2 páginas por folha (2-up) com uma calha horizontal configurável e fator de escala da página de origem, onde a função antigaStitchLoadedPageSideBySideera fixa para meia largura sem espaçamento
Version 2.329.0
Added
AddLoadedRubberStampAnnotationcom um enumTHPDFRubberStampIconcobrindo todos os 14 nomes de carimbos padrão (Approved, AsIs, Confidential, Departmental, Draft, Experimental, Expired, Final, ForComment, ForPublicRelease, NotApproved, NotForPublicRelease, Sold, TopSecret) para que os visualizadores renderizem os bitmaps familiares sem um stream de aparência personalizadoSetLoadedAnnotationCloudyBordertransforma uma anotação de Quadrado / Círculo / Polígono em uma borda nublada escrevendo/BE /S /C /Imais o array de cores internas/ICSetLoadedLineAnnotationCapsdefine os estilos de extremidade de linha/LE(ponta de seta) para anotações de Linha / Polilinha a partir do novo enumTHPDFLineEndStyle(None / OpenArrow / ClosedArrow / Butt / ROpenArrow / RClosedArrow / Slash / Diamond)
Version 2.328.0
Added
EnsureLoadedFieldAppearanceStreamgera um Form XObject/AP /Npara um campo AcroForm existente a partir de seu/DA+/V+/Rect, para que visualizadores que ignoram/NeedAppearancesainda renderizem o valor do campo sem precisar passar pelo AcrobatApplyLoadedFieldValidationanexa um trio de scripts Format / Keystroke / Validate a um campo usando os auxiliares do AcrobatAF*, cobrindo tipos de entrada de Número, Porcentagem, Data, Hora, Moeda, ZipCode, SSN, Telefone e ArbitraryMask — o chamador não precisa mais escrever código JavaScript manual paraAFNumber_Format/AFDate_FormatEx/AFRange_ValidateApplyLoadedFieldCalculationanexa um scriptAFSimple_Calculatepara que um campo agregue os valores de um conjunto de campos de origem nomeados por meio de Soma, Média, Produto, Mínimo ou Máximo
Version 2.327.0
Added
- Busca e substituição visual
SearchAndRedactReplaceLoaded: para cada ocorrência pesquisada, mascara o retângulo correspondente com uma cor escolhida (ou ignora a máscara comHPDF_NO_MASK) e carimba o texto de substituição por cima, complementando oReplaceLoadedPageTexta nível de byte quando a fonte original carece de uma tabela reversa de códigos de caracteres ou a substituição precisa de uma fonte diferente - A extração de texto de região
GetLoadedPageTextInRegionconcatena cada glifo cuja origem cai dentro de um retângulo no espaço do usuário, com quebras de linha entre as linhas de base — o bloco de construção para fluxos de UI de "copiar texto desta caixa" SearchLoadedFirstno estilo cursor retorna a primeira correspondência como um únicoTHPDFTextMatch, para que os chamadores possam percorrer as ocorrências sem gerenciar uma array inteira de correspondências
Version 2.326.0
Added
- Propriedade
MeasurementUnitem nível de documento (muPoints/muPixels/muInches/muMM/muCentimeters/muTwips) para que cada coordenada de autoria de alto nível seja convertida em pontos PDF por meio deToPDFUnit/FromPDFUnit - Substituição de marcadores de posição no texto de marca d'água:
<%PageNo%>,<%TotPage%>,<%FileName%>,<%ShortDate%>,<%LongDate%>,<%ShortTime%>,<%LongTime%>são resolvidos por página ao carimbar, de modo que marcas d'água "Página X de Y" e com data sejam feitas em uma única chamada - Método de página
AddTextWatermarkExque combina substituição de marcadores de posição, coordenadas cientes da unidade e um registro unificadoTHPDFWatermarkBase(ângulo, opacidade, presets de posição) - Auxiliares de página de marca d'água de forma
AddRectangleWatermark,AddEllipseWatermark,AddLineWatermarkeAddPolygonWatermark, cada um envolvendo as primitivas de caminho em um par de estados gráficosq/Qcom alfa de preenchimento/traço registrado - Registro
THPDFWatermarkTemplateunificado com fábricasMakeText/MakeRectangle/MakeEllipse/MakeLine/MakePolygonmais um tipo compostoTHPDFWatermarkTemplateArray - Aplicação de marca d'água em documentos carregados:
StampLoadedPageTexteStampLoadedPagesTextanexam um trecho de texto transparente e rotacionado às páginas existentes, respeitando aMeasurementUnite o mesmo conjunto de marcadores de posição;StampLoadedPagesCompositeaplica um array de templates completo (texto + formas) a um intervalo de páginas - Controle de Z-order em carimbos de documentos carregados:
Underlay = Trueinsere o stream de marca d'água antes do/Contentsexistente por meio da forma de array, de modo que a marca d'água seja renderizada atrás do conteúdo da página EnumLoadedPageElementsretorna trechos de texto (glifos agregados por linha de base + fonte) e posicionamentos de XObject de imagem como registrosTHPDFPageElementcom caixas delimitadoras- Exportação multiformato de
SaveLoadedPagesAsImages: BMP / JPEG / PNG rasterizado mais EMF / WMF vetorial, um arquivo por página, com DPI configurável, prefixo de nome de arquivo e qualidade JPEG - Renderização vetorial de
GetLoadedPageMetafilede uma página para umTMetafilepor meio do novo caminhoTHPDFPageRenderer.ExecuteToDC, mantendo caminhos de texto e vetoriais escaláveis para impressão, área de transferência e fluxos de trabalho de mesclagem
Version 2.325.3
Fixed
- A agregação de relatórios de preflight em lote não estoura mais a contagem total de bytes quando um único arquivo de entrada tem mais de 2 GB
Version 2.325.2
Fixed
- Salvar um documento com mais de 2 GB com streams de objetos ativados (
UseObjectStreams) não grava mais um stream de referência cruzada corrompido; os deslocamentos de objetos e a posição do stream de referência cruzada, anteriormente limitados a um inteiro de 32 bits, agora são tratados como valores de 64 bits durante toda a gravação
Version 2.325.1
Fixed
- Quatro varreduras apenas para recuperação usadas quando um PDF corrompido não pode ser analisado normalmente — descompactação de stream de objetos, descoberta de stream de objetos e duas passagens de reparo de referência — não leem mais um arquivo com mais de 2 GB em um buffer truncado; cada uma agora ignora esse fallback em tal arquivo em vez de varrer dados corrompidos
Version 2.325.0
Added
- A importação de EMF/WMF agora renderiza gradientes de retângulo
EMR_GRADIENTFILL(GRADIENT_FILL_RECT_H/GRADIENT_FILL_RECT_V) como padrões de sombreamento axial PDF Tipo 2, mapeando cada par de coresTRIVERTEXpara uma chamadaRegisterAxialGradiente preenchendo o retângulo com o padrão resultante; anteriormente este registro era um no-op documentado, agora os retângulos de gradiente do Word/Excel/PowerPoint em EMFs são renderizados com the mistura correta de cores da esquerda para a direita ou de cima para baixo
Version 2.324.0
Added
- A importação de EMF/WMF agora analisa comentários
EMR_GDICOMMENT, distinguindo marcadores de passthrough do Adobe PDF (0x416F4650= "AoFP", MS-EMF §2.3.3) de outros tipos de comentários; quando o marcador Adobe está presente, a carga útil do comentário é verificada em busca da palavra-chavepdfmarke exibida por meio de log de depuração para que os usuários identifiquem quais produtores de EMF emitem fragmentos pdfmark do PostScript; outros tipos de comentários permanecem como no-ops (tanto o HotPDF quanto o llPDFLib anteriormente possuíam apenas um stub vazio para este registro)
Version 2.323.0
Added
- A importação de EMF/WMF agora reconhece explicitamente
EMR_GRADIENTFILLcomo um no-op documentado (padrões de sombreamento PDF Tipo 2/3 poderiam expressar preenchimentos de gradiente, mas a renderização do visualizador é inconsistente e a interpolação Gouraud por pixel do GDI não mapeia de forma limpa); anteriormente este registro era descartado silenciosamente sem uma entrada na tabela de casos
Version 2.322.0
Changed
- A assinatura baseada em PFX agora direciona entradas de 64 MB ou maiores por meio de um assinante fragmentado em fluxo (
HPDFCMSSignPDFStreamChunked) que procura os marcadores de posição/ByteRange+/Contentsem leituras rotativas de 256 KB, processa as duas janelas de intervalo de bytes viaHPDFCMSSHA256StreamRangese depois copia o stream de entrada para o stream de saída enquanto corrige os bytes do marcador em tempo de execução, para que o pico de memória permaneça limitado pelo buffer de 256 KB em vez de todo o tamanho del arquivo; entradas menores mantêm o caminho rápido em memória dePos()+Move()inalterado
Version 2.321.0
Added
- Dicionários de uso de grupo de conteúdo opcional:
SetOptionalContentGroupUsageanexa uma entrada/Usagea um OCG registrado (PDF 1.7 §8.11.4.4 Tabela 100) para que os visualizadores mostrem/ocultem automaticamente camadas por contexto; as categoriasView/Print/Exportgravam<Category>State=ON/OFF;Zoomgrava um par realMin;Language/Creatorgravam valores de string - Cópia de subárvore de contornos (outlines):
THPDFDocOutlineObject.CopySubtreeclona profundamente toda a subárvore filha de um nó sob um novo pai, propagando Title / Color / Bold / Italic / Opened enquanto cria novos números de objetos e novos destinos - Auxiliares de topologia de outlines:
IsDescendant(predicado seguro contra loops usado porMoveTo) eMoveTo(muda o pai de um nó, desvinculando-o de sua antiga cadeia de irmãos e vinculando-o como o último filho do novo pai, com manutenção completa de/Prev//Next//First//Last//Countem cada ancestral afetado)
Version 2.320.0
Adicionado
- Nested optional-content /Order tree:
BeginOptionalContentOrderGroup/AddLayerToOptionalContentOrder/EndOptionalContentOrderGroupDetalhes localizados da alteração no comportamento da API e nos símbolos listados/OrderDetalhes localizados da alteração no comportamento da API e nos símbolos listados/OCGsDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.319.1
Fixed
- O carregamento de um PDF cuja imagem JBIG2 incorporada usa a opção de codificação Huffman padrão (em vez da codificação aritmética MQ mais comum) não falha mais completamente: o carregador agora tenta novamente com o mecanismo de decodificação alternativo antes de desistir, de modo que tais imagens sejam carregadas com sucesso independentemente de qual mecanismo de decodificação seja preferido
Version 2.319.0
Changed
- A importação de EMF/WMF agora aplica um gate InPath centralizado na entrada de
ExecuteRecord: enquanto um colchete de caminho estiver aberto (BeginPathvisto,EndPath/AbortPathainda não alcançado), apenas registros de construção de caminho (linha/curva/polígono/movimento/fechamento/fim/abortar mais os registros de estado do sistema de coordenadas e DC) alcançam seus manipuladores; registros de texto e bitmap que anteriormente vazavam para o caminho aberto agora são descartados centralmente, espelhando a proteção de ponto de entrada do llPDFLib e eliminando uma classe de bugs de PDF malformados devido a registros perdidos dentro de um colchete de caminho
Version 2.318.0
Added
- Grupos de botões de rádio de conteúdo opcional: o novo
RegisterOptionalContentRadioGroupdeclara conjuntos de camadas mutuamente exclusivas cujos membros desativam uns aos outros (PDF 1.7 §8.11.4.3/RBGroups); o uso típico é em painéis de camadas de escolha única como "Draft / Review / Final"
Version 2.317.0
Added
THPDFDocOutlineObject.InsertBefore/InsertAfterinserem um novo irmão na lista duplamente vinculada de contornos existentes em uma posição arbitrária, complementando os auxiliaresAddChild(anexar) eAddChildFirst(preceder) existentes, de modo que as árvores de contornos possam ser construídas em qualquer ordem sem desvincular e vincular nós novamente- A importação de EMF/WMF agora reconhece explicitamente a família ICM/paleta (
EMR_SETBRUSHORGEX,EMR_SELECTPALETTE,EMR_SETCOLORADJUSTMENT,EMR_SETICMMODE,EMR_CREATECOLORSPACE,EMR_SETCOLORSPACE,EMR_DELETECOLORSPACE,EMR_GDICOMMENT) e a família sem mapeamento PDF (EMR_FRAMERGN,EMR_INVERTRGN,EMR_PAINTRGN,EMR_FLATTENPATH,EMR_WIDENPATH,EMR_SETMETARGN,EMR_OFFSETCLIPRGN,EMR_PLGBLT,EMR_POLYTEXTOUTA,EMR_POLYTEXTOUTW), encaminhando para o DC de referência GDI aplicável sem emitir para o stream de conteúdo PDF; anteriormente esses registros eram descartados silenciosamente, agora eles são documentados e mantidos consistentes com o lado do GDI
Version 2.316.0
Added
- A nova demo
JBIG2Benchmarkgera quatro PDFs a partir da mesma digitalização sintética de três páginas, um por configuração deTHPDFJBIG2Options(sem perdas por imagem,LossyLevel=5por imagem, globais acumulados entre páginas, extração de símbolo de retângulo), exibindo cada tamanho de saída para que as compensações entre os padrões amigáveis de digitalização do v2.310.0, o acumulador de páginas cruzadas do v2.314.0 e os modos de extração possam ser comparados diretamente
Version 2.315.0
Changed
- O dicionário JBIG2 acumulado entre páginas agora é agrupado em lote automaticamente: uma vez que o total da largura do glifo em execução cruza 131071 pixels, o dicionário atual é congelado, emitido como um stream
/JBIG2Globalse o acumulador é redefinido, para que o próximo lote inicie um novo stream de globais (espelha o transbordo baseado emTotalWidthdo llPDFLib e mantém streams de globais individuais em um tamanho que os leitores manipulam com eficiência em execuções de digitalização muito grandes)
Version 2.314.0
Added
- Dicionário de símbolos JBIG2 acumulado entre páginas: ative com
THPDFJBIG2Options.AccumulateGlobalsAcrossPages := True(junto com os seletoresUseSymbolDictionary+UseGlobalSegments+ native fallback existentes) e imagens 1-bit consecutivas deicJBIG2compartilham um único dicionário de símbolos em memória em crescimento e um stream indireto/JBIG2Globals, em vez de cada imagem emitir seu próprio dicionário; o novoTHPDFJBIG2SymbolDictionarymantém o conjunto de glifos persistente com a mesma correspondência de perda/sem perda que o codificador por imagem usa; o novo testesmoke_jbig2_accum_decodeverifica se duas páginas de diferentes layouts de glifos compartilham uma única referência de objeto global e decodificam de volta para os pixels de origem bit a bit
Version 2.313.0
Added
- Os streams de segmentos globais JBIG2 produzidos pelo codificador nativo de dicionário de símbolos agora são indexados por conteúdo em nível de documento via
THPDFJBIG2GlobalsPool, de modo que imagens que geram globais idênticos em bytes compartilhem um único stream indireto/JBIG2Globalsem vez de cada uma emitir o seu próprio; o novo testesmoke_jbig2_globals_multicobre três páginas de glifos idênticos colapsando em um único stream de globais compartilhado
Version 2.312.0
Added
- A importação de EMF/WMF agora cobre
EMR_SCALEVIEWPORTEXTEX,EMR_SCALEWINDOWEXTEX,EMR_EXCLUDECLIPRECT,EMR_CREATEDIBPATTERNBRUSHPT,EMR_SETMITERLIMIT,EMR_SETTEXTJUSTIFICATIONeEMR_SETROP2, fechando a lacuna de sete registros com o llPDFLib para que streams EMF emitidos por toolchains GDI mais antigos não descartem silenciosamente esses registros;SETMITERLIMITeSETROP2entram em vigor imediatamente, enquanto os outros armazenam o estado para uma conexão posterior do lado da renderização sem perturbar a coordenada atual ou a saída do corte
Version 2.311.0
Added
HPDFCMSSHA256StreamRangesagora gera o hash das duas janelas/ByteRangedo PDF diretamente de umTStreamem blocos de 256 KB, para que PDFs assinados de vários GB possam ter seu hash gerado sem copiar primeiro o arquivo inteiro para umaAnsiString; fecha a lacuna com oCalcHashbaseado em stream do llPDFLib, que a função em memória existenteHPDFCMSSHA256ByteRangesnão conseguia equiparar para entradas muito grandes
Version 2.310.0
Changed
THPDFJBIG2Optionsagora tem como padrão configurações amigáveis de digitalização (LossyLevel = 5,RemoveIsolatedBlackPixels = True,BlackDotSize = 3) para que imagens digitalizadas de 1 bit sejam compactadas em tamanhos muito menores por padrão; definaLossyLevel = 0ouLossless = Truepara restaurar a correspondência estrita sem perdas
Performance
- O crescimento da tabela xref agora é geométrico (documentos pequenos +N, documentos maiores +25%) em vez de realocar o array dinâmico em cada objeto indireto, removendo o custo O(n²) que dominava o carregamento e construção de PDFs grandes com muitos objetos
Version 2.309.4
Added
- Adicionado
THPDFDocOutlineObject.AddChildFirstpara que nós de contorno gerados possam preceder um item filho antes dos irmãos existentes, preservando a ordem dos contornos salvos
Version 2.309.3
Added
- Adicionado
pmUseOCaTHPDFPageModepara que documentos gerados possam solicitar o painel de camadas de conteúdo opcional com o catálogo/PageMode /UseOC
Version 2.309.2
Added
- Adicionadas sobrecargas de string de título para
THPDFPage.AddTextAnnotationpara que anotações de texto geradas possam gravar o título/Tdo PDF ou a entrada do autor enquanto preservam os argumentos existentes de ícone, cor e estado aberto
Version 2.309.1
Fixed
- Limpar
THotPDF.OutputStreamatribuindonilagora restaura a saída normal deFileNameem vez de deixar o documento no modo de saída em stream
Version 2.309.0
Fixed
- A importação de EMF/WMF agora respeita os modos de região de
EMR_EXTSELECTCLIPRGNpara cópia, interseção e exclusão de corte enquanto mantémEMR_SETWORLDTRANSFORM,EMR_MODIFYWORLDTRANSFORMeEMR_SETPIXELVcobertos por testes de regressão não GUI
Version 2.308.0
Added
- A rotina de registro em tempo de design do add-on FastReport agora é fornecida como
frxHotPDFDesign, colocando oTfrxHotPDFExportna paleta do FastReport VCL enquanto mantém a unidade de execução existente e o ponto de entradaRegisterdisponíveis para compatibilidade
Version 2.307.0
Added
SignPDFWithPFXagora analisa arquivos PFX criptografados PKCS#12 PBE-SHA1-3DES legados, além de perfis PBES2 AES-256-CBC
Version 2.306.0
Changed
- Chamadas repetidas que adicionam a mesma imagem codificada agora reutilizam o XObject de imagem PDF existente enquanto mantêm uma saída distinta para diferentes configurações de qualidade JPEG e relações de máscara
Version 2.305.0
Added
TfrxHotPDFExport.PageRangeagora permite que as exportações do FastReport ativem a filtragem de páginas baseada em um, como1,3-5, enquanto reutiliza o analisador de intervalo de páginas compartilhado do HotPDF
Version 2.304.0
Fixed
- O nivelamento de tabela XFA para AcroForm agora permite que colunas automáticas únicas totalmente redimensionáveis herdem a largura do conteúdo da tabela, de modo que os campos sem sua própria largura
wainda recebam uma largura mensurável e preservem o espaçamento entre as linhas
Version 2.303.0
Fixed
- O nivelamento de tabela XFA para AcroForm agora permite que células de texto expansíveis herdem valores
columnWidthsfixos quando omitem sua própria larguraw, de modo que as alturas das linhas sejam medidas e as linhas subsequentes permaneçam separadas
Version 2.302.0
Fixed
- O nivelamento XFA para AcroForm agora mede campos de texto expansíveis dentro de fluxos aninhados
layout="tb"e envolvidoslayout="lr-tb", e as linhas da tabela agora mantêm a altura da célula de texto expansível ao posicionar os campos seguintes
Version 2.301.0
Fixed
- O nivelamento XFA para AcroForm agora mantém os campos de texto nos contêineres de fluxo
layout="tb"elayout="lr-tb"quando eles omitem uma alturahexplícita, medindo a altura do conteúdo quebrado em vez de ignorá-los como layout expansível não suportado
Version 2.300.0
Fixed
THotPDF.ExtractObjectFromStreamagora retorna o dicionário analisado para membros do stream de objetos materializados e não fabrica mais chaves de diagnóstico de dados brutos quando os chamadores inspecionam os streams de objetos PDF 1.5+ carregados
Version 2.299.0
Added
THotPDF.DecompressAllObjectStreamsagora é público e força PDFs carregados que usavam streams de objetos a salvar com objetos compactados materializados como objetos indiretos normais, em vez de copiar o layout de stream de objetos de origem
Version 2.298.0
Fixed
- A criação de campos AcroForm agora rejeita nomes de campos raiz duplicados tanto para novos documentos quanto para edição de documentos carregados, enquanto preserva o fluxo de trabalho pai compartilhado válido para grupos de botões de rádio
Version 2.297.0
Added
TDBGridHotPDFExportOptionse o componenteTDBGridHotPDFExportagora expõemPDFAComplianceePDFXCompliancepara que as exportações de tabelas DBGrid possam aderir aos mesmos critérios de conformidade de padrões do HotPDF usados pela geração direta de documentos
Version 2.296.0
Added
TQRHotPDFExportFiltereTdxHotPDFExportOptionsagora expõemPDFAComplianceePDFXCompliancepara que as exportações do QuickReport e DevExpress possam aderir aos mesmos critérios de conformidade de padrões do HotPDF usados pela geração direta de documentos
Version 2.295.0
Added
TfrxHotPDFExporteTppHotPDFDeviceagora expõemPDFAComplianceePDFXCompliancepara que as exportações de relatórios possam aderir aos mesmos critérios de conformidade de padrões do HotPDF usados pela geração direta de documentos
Version 2.294.0
Added
- Construtores de Canvas para Form XObject e padrões de repetição (tiling pattern) agora permitem que os chamadores componham recursos reutilizáveis por meio de auxiliares de desenho tipados antes de registrá-los para reutilização na página
THPDFExtGStateOptionsagora permite que um ExtGState combine configurações de transparência, modo de mesclagem, largura de linha, extremidade de linha (line cap), junção de linha (line join) e limite de meia-esquadria
Version 2.293.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
TransparentBltandMaskBltDetalhes localizados da alteração no comportamento da API e nos símbolos listados - Detalhes localizados da alteração no comportamento da API e nos símbolos listados
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
- The Delphi
PDFOptimizeDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.292.32
Added
- Pincéis de hachura (hatch brushes) de EMF/WMF agora são mapeados para padrões de repetição do PDF para que desenhos de CAD e relatórios importados possam preservar a textura da hachura em vez de nivelar esses preenchimentos em cores sólidas
Fixed
- Edições de dicionário de documentos carregados agora marcam os objetos como sujos para que
SaveLoadedDocumentgrave novamente PDFs alterados em vez de copiar a origem original após edições de contorno e árvore de objetos - A remoção de contorno carregado agora vincula novamente favoritos irmãos, e decorações de texto sublinhado e tachado não rotacionado agora emitem operadores de retângulo preenchido
Version 2.292.31
Added
THPDFEmfOptions.ShowNullBrushagora permite que a renderização de EMF/WMF exponha preenchimentos de pincel nulo para fluxos de trabalho de diagnóstico e importação no estilo CAD, enquanto preserva pincéis nulos não preenchidos por padrão
Version 2.292.30
Added
THPDFEmfOptions.CanvasOveragora permite que a reprodução de Canvas da página posicione o conteúdo PDF existente acima do metafile Canvas analisado, enquanto o padrão mantém a ordem atual do Canvas por cima
Version 2.292.29
Added
THPDFEmfOptions.Redrawagora permite que os chamadores de EMF/WMF mantenham o caminho de redesenho temporário padrão ou optem por não usá-lo e analisem o metafile original diretamente
Version 2.292.28
Added
THPDFEmfOptions.UseFrameagora permite que a renderização de EMF/WMF corte a saída importada para o quadro de cabeçalho do EMF para metafiles que dependem dos limites do quadro declarados
Version 2.292.27
Added
THPDFEmfOptions.ShowNullPenagora permite que a renderização de EMF/WMF exponha contornos de caneta nula para fluxos de trabalho de diagnóstico e importação no estilo CAD, enquanto preserva canetas nulas invisíveis por padrão
Version 2.292.26
Added
THotPDF.SetFormFieldTooltipagora permite que os aplicativos atribuam dicas de campo AcroForm/TUpor nome de campo para widgets criados por meio dos métodos de campoAdd...existentes
Version 2.292.25
Fixed
- O modo de objeto nativo do
TfrxHotPDFExportagora preserva o recorte deTfrxPictureViewe a renderização de molduras quando as exibições de imagem são gravadas diretamente como XObjects de imagem do HotPDF
Version 2.292.24
Added
- O modo de objeto nativo do
TfrxHotPDFExportagora mapeia exibições de código de barras horizontais unidimensionais suportadas do FastReport diretamente para operadores de código de barras do HotPDF, enquanto mantém texto legível por humanos, geração de checksum, texto suplementar, rotação, barras coloridas e simbologias não suportadas no caminho de fallback existente
Version 2.292.23
Added
- O modo de comando de desenho nativo do
TppHotPDFDeviceagora mapeia comandos de desenho de código de barras unidimensionais suportados do ReportBuilder diretamente para operadores de código de barras do HotPDF, enquanto preserva o fallback de metafile aprimorado para comandos que precisam de texto legível por humanos, códigos adicionais, cálculo de dígito de verificação, barras coloridas, rotação ou simbologias postais não suportadas
Version 2.292.22
Fixed
- O lançamento automático do visualizador de PDF agora pode ser suprimido em execuções não interativas com
HOTPDF_SUPPRESS_AUTO_LAUNCH=1, e os executores de teste e smoke bundled ativam essa proteção por padrão para que execuções de regressão sem GUI não abram janelas do visualizador
Version 2.292.21
Added
THPDFPage.ShowMetafileExagora possui uma sobrecargaTHPDFEmfOptionspor chamada, permitindo que os chamadores substituam as configurações de renderização de EMF/WMF para um desenho de metafile enquanto preservam os padrões no nível do documento
Version 2.292.20
Added
TfrxHotPDFExportagora expõe controles de saída do HotPDF para exportações do FastReport, incluindoAutoCreateURL,FontEmbedding,NotEmbeddedFonts,ActivateProtection,UserPassword,OwnerPassword,CryptKeyLength,ProtectOptionseEncryptMetadata
Version 2.292.19
Added
- Adicionada uma unidade dedicada de add-on
dbGridHotPDFDesignpara que os pacotes em tempo de design possam registrar oTDBGridHotPDFExportna paleta HotPDF do IDE, mantendo o adaptador de exportação em tempo de execução do DBGrid utilizável sem referências a pacotes em tempo de design
Version 2.292.18
Changed
HPDFParsePFXagora suporta perfis PBES2/PBKDF2 que usam a PRF padrão HMAC-SHA-1 bem como HMAC-SHA-256 explícito, melhorando a compatibilidade com exportações antigas do AES-256-CBC PKCS#12, enquanto mantém perfis PBE-SHA1-3DES não suportados rejeitados com um diagnóstico
Version 2.292.17
Added
- Adicionado
THPDFTextOutBoxResultmaisTHPDFPage.TextOutBoxExeTHPDFPage.WideTextOutBoxExpara que a saída da caixa de texto quebrada possa relatar o número de caracteres gravados, linhas gravadas e se o texto de origem estourou a caixa, enquanto os métodos herdados continuam retornando a contagem de caracteres gravados
Version 2.292.16
Added
- Adicionado
THPDFPage.TextFromBaseLine(Boolean)para alternar a saída de texto da página entre a semântica da coordenada Y da borda superior e da linha de base, além deTHPDFPage.AppendScopedRawContentpara envolver operadores de conteúdo bruto especializados em um par automático de salvamento e restauração de estado gráfico
Version 2.292.15
Changed
- O modo de objeto nativo do
TfrxHotPDFExportagora preserva o texto de memo recortado e o espaçamento de caracteres do FastReport ao mapear exibições de memo preparadas diretamente para operações de texto de página do HotPDF
Version 2.292.14
Added
TppHotPDFDeviceagora expõe umRenderModeopcional para exportação de comando de desenho nativo do ReportBuilder, mapeando comandos comuns de texto, forma, linha, imagem e hiperlink URI diretamente para operações de página do HotPDF, enquanto reverte automaticamente para a ponte de metafile aprimorada existente para páginas que contêm comandos não suportados
Version 2.292.13
Added
- Adicionado
THotPDF.EncryptMetadatapara criptografia padrão de senha AES para que os chamadores possam escrever/EncryptMetadata false, manter streams XMP/Metadataem texto claro e emitir a derivação de chave AES-128 correspondente ou flag de metadados AES-256/Perms, em vez de depender do comportamento anterior de criptografia de metadados sempre ativo
Version 2.292.12
Added
- Adicionados wrappers de campo AcroForm no momento da criação por meio de
THPDFAcroFormFieldeTHPDFPage.CreateTextField,CreateCheckBox,CreateRadioButton,CreateComboBoxeCreateListBox, permitindo a configuração encadeada de dica, flag comum, aparência padrão e ação adicional de campo ou widget imediatamente após a criação del campo
Version 2.292.11
Added
- Adicionados auxiliares de alto nível para máscara de imagem, transparência, qualidade JPEG por imagem e compactação monocromática automática:
AddImageAsMask,AddImageWithMask,AddImageWithTransparency,AddImageWithTransparency32,AddImageWithJpegQuality,AddMonochromeImageAutoe o seletor opcional de compactaçãoicAutoMono
Version 2.292.10
Added
- Adicionados auxiliares de conveniência de ação adicional de campo AcroForm para cadeias
THPDFActionBuilder, incluindo wrappers nomeados para/AA /K,/AA /F,/AA /V,/AA /C, gatilhos de mouse e foco de widget, e auxiliares correspondentes de limpeza para entradas de gatilho de campo e anotação
Version 2.292.9
Added
- Adicionados auxiliares de ação adicional de ciclo de vida do documento para cadeias
THPDFActionBuilder:SetDocumentCloseAction,SetDocumentWillSaveAction,SetDocumentDidSaveAction,SetDocumentWillPrintAction,SetDocumentDidPrintActione métodos de limpeza correspondentes que gravam entradas do catálogo/AA /WC,/AA /WS,/AA /DS,/AA /WPe/AA /DP
Version 2.292.8
Added
- Adicionado suporte a ação adicional de página gerada com
THPDFPageActionTrigger, auxiliares da página atual paraSetPageAdditionalAction,SetPageOpenAction,SetPageCloseActione métodos de limpeza correspondentes, além de auxiliares indexados por páginaTHotPDFque gravam ações de página/AA /Oe/AA /Ca partir de cadeias reutilizáveis deTHPDFActionBuildersem alterar a página de desenho ativa
Version 2.292.7
Added
- Adicionada gravação de rótulo de página de documento gerado e contas de thread de artigo por meio de
THPDFPageLabelStyle,THotPDF.SetPageLabel, os cinco auxiliares de rótulo de página específicos do estilo,THotPDF.ClearPageLabels,THotPDF.RegisterArticleThreadeTHPDFPage.AddArticleBead
Version 2.292.6
Added
THPDFActionBuilderagora constrói dicionários de ação avançados paraThread,Sound,Movie,Rendition, visibilidade de camadaSetOCGState, transições de páginaTranseGoTo3DView, com auxiliaresShowLayer,HideLayereToggleLayer, além de restrições PDF/A/PDF/X
Version 2.292.5
Added
THPDFPage.SetAnnotationAdditionalActioneTHotPDF.SetFormFieldAdditionalActionagora anexam cadeias reutilizáveisTHPDFActionBuilderaos dicionários de gatilho de anotação e AcroForm/AA, substituindo apenas o gatilho selecionado e preservando as restrições de ação do PDF/A/PDF/X
Version 2.292.4
Added
THPDFNamesFacadeagora adiciona wrappers de função JavaScript e instantâneos de array para JavaScript carregado e destinos nomeados,THPDFActionBuilderagora constrói ações de envio/redefinição com escopo de campo e alvos de página remota, e o modo de objeto nativo do adaptador do FastReport preserva fundos de memo, alinhamento de texto e estilos de moldura
Version 2.292.3
Added
THPDFActionBuilderagora suporta destinos nomeados remotos e ações do tipo Launch, e o modo de objeto nativo do adaptador do FastReport mapeia URLs de visualização para anotações de link URI del HotPDF
Version 2.292.2
Added
THPDFActionBuilderagora suporta açõesGoToPagedirecionadas a páginas diretamente, auxiliares de nome de arquivo EMF/WMF aceitamTHPDFEmfOptionspor chamada e o modo de objeto nativo do adaptador do FastReport mapeia exibições de imagem diretamente para XObjects de imagem do HotPDF
Version 2.292.1
Added
- EMF/WMF rendering now suporta substituições de
THPDFEmfOptionspor chamada por meio das sobrecargasShowEnhancedMetafile,EnhancedShowMetafilee a aprimoradaShowMetafile, de modo que um único metafile possa escolher compactação, escala, DC de referência, modo de esticamento e comportamento de caneta estendida sem mutar asTHotPDF.EmfOptionsglobais do documento
Version 2.274.1
Fixed
- Procedimentos de glifos
Type3declarados comd1agora ignoram operadores de seleção de cores dentro do procedimento e sempre pintam com a cor de preenchimento atual do texto, conforme exigido pela especificação do PDF; glifos declarados comd0mantêm suas próprias cores - A supressão se aplica apenas na reprodução do glifo (incluindo objetos de formulário aninhados) e nunca afeta as cores selecionadas pelo conteúdo da página circundante
Version 2.274.0
Added
- Procedimentos de glifos
Type3que declaram uma caixa delimitadorad1agora são recortados para ela durante a renderização da página, para que procedimentos de glifos malformados ou superdimensionados não possam mais pintar fora de seus limites declarados - Glifos que usam a forma
d0mantêm seu comportamento irrestrito, e caixas degeneradas (vazias ou invertidas) são ignoradas em vez de deixar o glifo em branco
Version 2.273.0
Added
- A renderização de página agora resolve dicionários
/Encodingde fontes simples: arrays/Differencesremapeiam códigos de caracteres para glifos nomeados, tendo prioridade sobre o mapa de caracteres do próprio programa da fonte, conforme exigido pela especificação do PDF — documentos produzidos por toolchains derivados de TeX e PostScript, que dependem fortemente de/Differences, agora renderizam os glifos pretendidos - Nomes de glifos são resolvidos por meio da Adobe Glyph List (incluindo formas
uniXXXXe nomes de subconjuntosgNN/glyphNNsubset names), do charset de um programa de fonte compacta ou do mapa de caracteres de um programa TrueType, qualquer que seja o suportado pela fonte incorporada - As codificações básicas predefinidas
StandardEncoding,WinAnsiEncodingeMacRomanEncodingsão respeitadas para códigos sem uma substituição de/Differences, corrigindo a faixa 0x80–0x9F que uma suposição Latin-1 simples trata incorretamente - Compact (
Type1C) programas que dependem exclusivamente de uma codificação predefinida — anteriormente revertendo para uma fonte do sistema para toda a execução — agora renderizam seus contornos incorporados por meio da busca de nome padrão
Version 2.272.0
Added
- A renderização de página com glifos incorporados agora cobre fontes
Type1simples (não CID) com um programa compactadoFontFile3Type1C: códigos de caracteres de um byte são resolvidos por meio da codificação incorporada do programa da fonte para contornos de charstring do Tipo 2 reais, completando a cobertura de contorno incorporado entre tipos de fontes CID e simples - Fontes
TrueTypesimples aceitam adicionalmente um programaOpenTypeFontFile3(com sabor CFF) quando nenhumFontFile2está presente - Códigos de caracteres que a codificação integrada não consegue mapear mantêm o fallback da fonte do sistema por glifo, e fontes que dependem exclusivamente das codificações predefinidas Standard/Expert continuam a usar o fallback de execução inteira anterior
Version 2.271.0
Added
- A renderização de página agora suporta fontes
Type3: o procedimento de stream de conteúdo de cada glifo é reproduzido por meio do renderizador com a matriz de fonte, tamanho da fonte, matriz de texto e transformação atual compostas, para que carimbos, fontes de código de barras e outros glifos desenhados por procedimento apareçam na saída renderizada em vez de serem ignorados - O mapa
/Encoding/Differencesvincula códigos de caracteres a procedimentos de glifos, e os/Widthsdo espaço do glifo são interpretados por meio da/FontMatrix, mantendo os avanços corretos para sistemas de coordenadas de glifos não padrão - Procedimentos de glifos podem fazer referência ao dicionário
/Resourcesda própria fonte (recorrendo aos recursos da página) e são protegidos pela mesma salvaguarda de recursão que os Form XObjects
Version 2.270.0
Added
- Embedded-glyph page rendering now covers simple (non-CID)
TrueTypefonts: one-byte character codes map to glyphs through the embedded font program's owncmaptable, so pages using ordinary embedded TrueType fonts render with their exact glyph shapes instead of a similarly named system font - The
cmaplookup follows a robust subtable chain — Unicode (format 4 and format 12) first, then symbol-encoded subtables with theF000private-use mirror, then legacy Macintosh subtables (formats 0 and 6) — matching the fallback behaviour of the authoring pipeline - Character codes the embedded
cmapcannot map fall back to the previous system-font drawing per glyph, so mixed or partially subset fonts degrade gracefully instead of dropping text
Version 2.269.0
Added
- A renderização de página com glifos incorporados agora cobre programas de fonte CFF: texto em fontes
Type0/CIDFontType0com um programaFontFile3(CIDFontType0C,Type1Cou um wrapperOpenType) renderiza a partir dos contornos de charstring do Tipo 2 reais em vez de substituir por uma fonte do sistema com nome semelhante - O interpretador de charstring suporta o conjunto completo de operadores de desenho — linhas, curvas, a família flex, máscaras de dica e chamadas de sub-rotina locais/globais com viés de sub-rotina — para que fontes CFF produzidas profissionalmente reproduzam suas formas de glifos exatas
- Programas CFF chaveados por CID mapeiam códigos de caracteres por meio do charset da fonte, mantendo a seleção de glifos correta para fontes de subconjunto cuja ordem de glifos difere da ordem CID; a seleção de dicionário de fonte por glifo (
FDArray/FDSelect) é respeitada - Programas incorporados TrueType (
FontFile2) e CFF (FontFile3) agora compartilham um pipeline de renderização; fontes sem um programa incorporado utilizável mantêm o fallback anterior da fonte do sistema
Version 2.268.0
Added
- Renderização de página com glifos incorporados: texto em fontes
Type0/CIDFontType2com um programa TrueType incorporado (FontFile2) agora renderiza a partir dos contornos de glifos reais da fonte — contornos quadráticos, pontos implícitos na curva e glifos compostos são reproduzidos como caminhos vetoriais preenchidos — em vez de substituir por uma fonte do sistema com nome semelhante - Ambos os layouts
Identitye stream explícitoCIDToGIDMapsão suportados, cobrindo fontes incorporadas em subconjuntos; documentos produzidos pelo próprio pipeline Unicode do HotPDF agora fazem o ciclo completo através deRenderLoadedPageToBitmapcom as formas de glifos incorporados exatas - Os avanços do CID agora respeitam as entradas de largura
/We/DWe os códigos de dois bytesIdentity-Havançam corretamente, corrigindo o posicionamento do texto para fontes chaveadas por CID na saída renderizada - Fontes sem um programa incorporado utilizável (sabor CFF
FontFile3, falhas de mapeamento) mantêm o fallback anterior da fonte do sistema
Version 2.267.0
Added
- Cache de imagens decodificadas para renderização de página: XObjects de imagem repetidos nas páginas (logotipos, cabeçalhos, imagens de marca d'água) agora decodificam uma vez por carga de documento em vez de uma vez por desenho, reduzindo aproximadamente pela metade o tempo de renderização para páginas com imagens compartilhadas e acelerando a exportação TIFF de várias páginas correspondentemente
- O cache é limitado por
ImageCacheMaxBytes(padrão 32 MB) com expulsão do menos usado recentemente, é limpo automaticamente quando um documento é carregado e esvaziado junto comInvalidateRenderedPageCacheapós edições in-loco - Novo
THPDFWeightedCachereutilizável (unidadeHPDFCache): um cache do mais recentemente usado com orçamento de bytes, estatísticas de acerto/erro e um auxiliar de chave de hash de conteúdo SHA-256, disponível para aplicativos host para armazenar em cache seus próprios intermediários caros
Version 2.266.0
Added
- Suporte a fontes antigas e de símbolos em
RegisterUnicodeTTF: fontes que carregam apenas um mapa de caracteres de símbolos (Wingdings, Webdings e fontes (3,0)-cmap semelhantes) agora registram com um mapa de codepoints funcional em vez de resolver cada caractere para.notdef - Codepoints de símbolo são acessíveis tanto por sua faixa nativa
U+F0xxquanto por ASCII simples ('A'alcança o mesmo glifo queU+F041), correspondendo a como os visualizadores tratam texto codificado por símbolo - Fontes legadas cujo mapa de caracteres oferece apenas uma subtabela de formato 6 (tabela aparada) ou formato 0 (tabela de bytes) agora recorrem a elas, para que fontes antigas de herança Mac sejam incorporadas corretamente; os caminhos Unicode principais de formato 4 / formato 12 permanecem inalterados
Version 2.265.0
Added
- Cache de páginas renderizadas:
RenderLoadedPageToBitmapCachedmantém páginas recentemente renderizadas chaveadas por página e DPI, de modo que a renderização da mesma página (visualizações de página, miniaturas, exportações repetidas) retorne em microssegundos em vez de reinterpretar o stream de conteúdo — os acertos do cache são tipicamente milhares de vezes mais rápidos - O cache armazena até
RenderCacheCapacitypáginas (padrão 8) na ordem do mais recentemente usado e retorna um bitmap independente de propriedade do chamador a cada chamada; carregar um novo documento limpa-o automaticamente eInvalidateRenderedPageCachelimpa-o após edições de página in-loco
Version 2.264.0
Added
- Saída de rich text:
THPDFPage.TextOutHTMLrenderiza uma string marcada com um subconjunto HTML —<b>,<i>,<u>,<s>,<br>e<font size color face>com aninhamento — para que parágrafos estilizados não exijam mais uma chamada separada deSetFont/TextOutpor alteração de estilo - Tamanhos de fonte mistos em uma linha compartilham uma linha de base comum (a maior fonte da linha a define) e o entrelinhamento (leading) de cada linha segue sua maior fonte, fornecendo uma saída tipograficamente correta para títulos misturados com texto do corpo
- As cores aceitam
#RRGGBBe os 16 nomes de cores HTML padrão; as entidades&<>" e numéricas&#N;(incluindo codepoints do plano suplementar) são decodificadas - A chamada retorna a coordenada Y na qual uma linha seguinte continuaria, para que blocos
TextOutHTMLconsecutivos se empilhem naturalmente
Version 2.263.0
Added
- Extração de texto preservando o layout:
ExtractLoadedPageTextLayoutreconstrói a disposição visual de uma página como texto simples — os glifos são agrupados em linhas de base e o espaço em branco horizontal / vertical é reproduzido em uma grade de caracteres, de modo que colunas, recuos e alinhamento de tabelas sobrevivam na saída - Grandes lacunas entre trechos de texto na mesma linha de base tornam-se sequências de espaços, e grandes lacunas de linha de base tornam-se linhas em branco, tornando o resultado adequado para diff, grep e alimentação de pipelines de análise de texto que dependem de alinhamento posicional
- A extração de fluxo de leitura existente de
ExtractLoadedPageTextpermanece inalterada; escolha-a quando apenas o conteúdo do texto importar e a nova chamada quando o layout importar
Version 2.262.0
Added
- Busca de favoritos em toda a árvore:
FindLoadedOutlineByTitlepercorre toda a hierarquia de contornos de um documento carregado (todos os níveis de aninhamento, não apenas capítulos de nível superior) e resolve a página de destino do favorito correspondente, com correspondência parcial e distinção de maiúsculas e minúsculas opcional - Tanto destinos diretos
/Destquanto alvos de açãoGoTosão resolvidos para um índice de página, de modo que um favorito encontrado possa ser acessado imediatamente GetLoadedOutlineTitlesDeepenumera cada título de favorito na árvore na ordem de profundidade primeiro (leitura), complementando a enumeração existente apenas de nível superior
Version 2.261.0
Added
- Extração de anexos em lote:
SaveAllLoadedEmbeddedFilesgrava cada arquivo incorporado de um documento carregado em um diretório de destino em uma única chamada, criando o diretório quando ausente e retornando o número de arquivos gravados - Os nomes dos anexos são higienizados antes do uso — separadores de caminho e caracteres rejeitados pelo sistema de arquivos tornam-se sublinhados, para que um documento não possa gravar fora do diretório escolhido — e nomes duplicados recebem automaticamente um sufixo
_CopyNantes da extensão
Version 2.260.0
Added
- Exportação TIFF de várias páginas para documentos carregados:
SaveLoadedPagesToTiffrenderiza as páginas selecionadas e as grava em um único arquivo TIFF 6.0 com uma imagem por página — o formato de intercâmbio esperado por pipelines de arquivamento de documentos, digitalização e fax - As páginas são selecionadas com a sintaxe familiar de intervalo baseado em um (
"1,3-5,7-"; vazio seleciona todas as páginas), renderizadas em um DPI escolhido pelo chamador e armazenadas como RGB de 24 bits com compactação Deflate opcional (ativada por padrão; passeFalsepara saída sem compactação) SaveLoadedPagesToTiffStreamgrava o mesmo TIFF de várias páginas em qualquerTStream; ambas as chamadas retornam o número de páginas realmente gravadas
Version 2.259.0
Added
- Verificação de assinatura digital para documentos carregados:
VerifyLoadedSignaturerecalculou o resumo de/ByteRangee verifica criptograficamente a assinatura RSA contra o certificado incorporado na assinatura, relatando um veredito preciso (válido, documento modificado após assinatura, assinatura inválida, algoritmo não suportado ou contêiner malformado) GetLoadedSignatureInforetorna o nome do signatário, nomes distintos do assunto e do emissor, número de série do certificado e período de validade, hora da assinatura, algoritmo de hash, subfiltro e/Reason//Location//ContactInfopara cada campo de assinatura sem tocar nos bytes do documentoVerifyLoadedSignatureExcombina ambos: uma chamada verifica e retorna o registro de informações preenchido, incluindo se a assinatura cobre todo o documento;VerifyAllLoadedSignaturesverifica todos os campos de assinatura de uma só vez- Algoritmos suportados: RSA (PKCS#1 v1.5) com resumos SHA-1, SHA-256, SHA-384 ou SHA-512, cobrindo assinaturas
adbe.pkcs7.detachedeETSI.CAdES.detachedcom ou sem atributos assinados - Uma sobrecarga de
TStreamverifica documentos carregados de streams; a validação da cadeia de certificados e de confiança continua sendo de responsabilidade do chamador
Version 2.258.0
Added
- O decodificador JBIG2 externo de alto desempenho está agora disponível em compilações de 32 bits (Win32); anteriormente era apenas para 64 bits; carregar arquivos PDF com imagens
/JBIG2DecodeeExtractLoadedImageusa-o por padrão em ambas as plataformas, decodificando tipicamente de 3–9× mais rápido do que o decodificador Pascal nativo - A chave
UseExternalJBIG2Decoderse comporta da mesma forma em 32 bits e 64 bits: defina-a comoFalsepara selecionar o decodificador Pascal nativo
Version 2.257.1
Fixed
- Restaurado o backend do codificador JBIG2 de alto desempenho em compilações de 64 bits (Win64): uma regressão de verificação de plataforma introduzida ao conectar o backend de 32 bits compilou o codificador externo fora das compilações Win64, de modo que
AddImagecom compactaçãoicJBIG2silenciosamente recorreu ao codificador Pascal MMR nativo; o Win64 agora codifica através do backend aritmético novamente, tipicamente de 4–8× mais rápido com compactação igual ou melhor;THPDFJBIG2Options.UseExternalEncoder := Falsecontinua sendo a forma explícita de selecionar o fallback MMR
Version 2.257.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
AddImagewithicJBIG2Detalhes localizados da alteração no comportamento da API e nos símbolos listados - The
THPDFJBIG2Options.UseExternalEncoderDetalhes localizados da alteração no comportamento da API e nos símbolos listadosFalseDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.256.0
Added
- Estendido o suporte a anotações XFDF para os quatro subtipos restantes da Tabela 1 do ISO 19444-1, completando a cobertura total de todos os 18 elementos de anotação XFDF:
<fileattachment>(decodifica os<data>em base64 em um stream de arquivo incorporado + Filespec na importação, recodifica na exportação),<sound>(stream/Soundincorporado com parâmetros de áudio/R /B /C /E),<redact>(uma anotação/Redactpadrão com/OverlayText,/DA,/Qe/IC— distinto da máscaraRedactLoadedRectde stream de conteúdo existente) e<link>(<OnActivation><Action>mapeado para um dicionário de ação URI ou Nomeada, com destinos nomeados<Dest>) - Adicionado um codec base64 independente (
HPDFXFDFEncodeBase64/HPDFXFDFDecodeBase64) para que a camada XFDF não dependa deHPDFXFA; a biblioteca anteriormente fornecia apenas um decodificador - Estendido
THPDFXFDFAccesscom callbacks de stream incorporado (ResolveStream/NewIndirectStream/ReadStreamBytes) conectados aTHotPDF.ResolveLoadedStream/NewIndirectStream/HPDFReadStreamBytes - Adicionados 3 casos DUnitX aos testes
HotPDF.XFDFTests(ciclo completo base64, Redact com OverlayText, Link com ação URI) — a suite completa agora está com 310/310 no Win32 e Win64
Version 2.255.0
Added
- Adicionada importação/exportação XFDF (ISO 19444-1):
THotPDF.ExportLoadedFormToXFDF/ImportLoadedFormFromXFDFfazem o ciclo completo de valores de campos AcroForm através do XML Forms Data Format (a contraparte XML do FDF), cobrindo campos simples e em camadas (nome separado por pontos), listas de seleção múltipla (múltiplos irmãos<value>), valores de exportação de checkbox / rádio e campos de assinatura (apenas nome, sem<value>por §6.3.3.1); a saída é um documento UTF-8<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">com o namespace Adobe conforme exigido pelo §5.5.2 - Adicionado
THotPDF.ExportLoadedAnnotationsToXFDF/ImportLoadedAnnotationsFromXFDFpara os 14 subtipos de anotação da Tabela 1 do ISO 19444-1 que o HotPDF já cria (text / freetext / line / square / circle / polygon / polyline / highlight / underline / strikeout / squiggly / stamp / ink / caret), carregando os atributos comuns (page, rect, color, flags, name, date, title, contents, subject, creationdate, opacity, intent), geometria específica do tipo (QuadPoints para marcação, Vertices para polígono/polilinha, L para linha, InkList para tinta), o ícone para text/stamp e popups filhos; os subtipos FileAttachment / Sound / Redact / Ação de link são diferidos para uma rodada posterior - Adicionado
Lib/HPDFXFDFXml.pas: um mecanismo XML leve e independente (sem dependência de MSXML / OmniXML, compila de Delphi 5 a RAD Studio) fornecendo um DOM mínimo (THPDFXFDFNode), um analisador tolerante (BOM, comentários, CDATA, instruções de processamento, ordem de atributos, autofechamento, UTF-8 multibyte) e um gravador UTF-8 aplicando a convenção de escape do ISO 19444-1 §5.8.2 (entidades para & < > ", referências de caracteres para LF/CR/TAB, literais octais para outros bytes de controle) - Adicionado
Lib/HPDFXFDF.pas: a camada de negócios XFDF, desacoplada doHPDFDocvia um registro de ponteiros de função (THPDFXFDFAccess) vinculado pela seção de implementação do HPDFDoc (mesmo padrão queHPDFTextExtraction); fornece auxiliares para cor#RRGGBB↔ DeviceRGB e nome do flag ↔ bit-set inteiro - Adicionado
HotPDF.XFDFTests(8 casos DUnitX) cobrindo o mecanismo XML (ciclo completo de escape, tolerância de análise, campos aninhados, UTF-8), exportação/importação de campo sobre um registro de acesso mock e exportação/importação de anotação sobre um mock construído a partir de instânciasTHPDFDictionaryObjectreais — todos passam no Win32 e Win64
Version 2.254.0
Added
- Adicionada extração estruturada de faturas do lado da leitura:
HPDFFacturXXMLElementTextexecuta uma varredura de substring consciente de limite de palavra para qualquer elemento CII/UBL (sem XML DOM, funciona em todos os Delphi suportados),HPDFFacturXInvoiceSummaryFromXMLeTHotPDF.GetLoadedInvoiceSummaryretornam um registroTHPDFFacturXInvoiceSummarycom os campos comuns BT-1/2/5/27/44/106/110/112/115 (número da fatura, data de emissão, moeda, nomes do vendedor/comprador, totais de linha/imposto/geral), com o nome do comprador refinado localizando o agregadoBuyerTradePartyem vez de apenas o primeiroram:Name - Adicionado escaneamento de regressão estrutural do PDF/A-3 como
THotPDF.GetLoadedPDFAIssues, deliberadamente separado deValidateFacturXInvoicepara que o veredito do contêiner Factur-X permaneça estável (uma fatura híbrida com um OutputIntent ausente ainda é um contêiner válido, apenas não um arquivo PDF/A-3 compatível); espelha as asserções ISO 19005-3 que o veraPDF levanta para fontes não incorporadas (fxviFontsNotEmbedded), OutputIntent ausente (fxviMissingOutputIntent) e criptografia proibida (fxviEncryptedDocument), todos novos membros do enumTHPDFFacturXValidationIssue - Adicionada classificação de anexos incorporados via
THotPDF.GetLoadedFacturXAttachments: enumera cada arquivo incorporado e o classifica sob a taxonomia da especificação Factur-X 1.09 6.4 (fatura primária CII, representação suplementar UBL ou EDIFACT, documento de suporte) usando o novo enumTHPDFFacturXAttachmentRole, para que os receptores possam rotear anexos sem rederivar a função a partir de nomes de arquivos - Adicionado suporte a anexo suplementar EDIFACT simétrico ao UBL:
THotPDF.AddEDIFACTSupplementaryFileincorpora uma mensagem EDIFACT comofactur-xedifact.edi(MIMEtext/plain, relacionamentoAlternative),HPDFIsFacturXEDIFACTFileNamereconhece o nome del arquivo eDetectFacturXInvoiceo registra em um novo campoTHPDFFacturXInvoiceInfo.EDIFACTFileName - Adicionado suporte a PDF/A-4 / PDF/A-4f (ISO 19005-4, nota de rodapé 2 da especificação Factur-X 1.09):
PDFAPartagora reconhece'4'/'4F'(emitindopdfaid:part=4) ePDFAConformanceLevelretorna vazio para a parte 4, pois o PDF/A-4 descarta os níveis A/B/U;IsPDFA2OrLatercobre automaticamente a parte 4 para que as verificações de restrição existentes se apliquem - Adicionado teste de consistência visual/XML do Princípio 4 como
THotPDF.ValidateVisualXmlConsistency: despeja o texto visível de cada página e verifica se o número da fatura, vendedor, comprador e totais gerais presentes no XML incorporado também aparecem na representação legível por humanos (especificação Factur-X 1.09 5.1); uma incompatibilidade é relatada como uma lista de nomes de campos ausentes, enquadrada como um aviso heurístico em vez de uma falha de validação rígida, pois o PDF pode formatar ou quebrar valores
Changed
- O exemplo de E-Invoice
ShowValidationReportagora renderiza o resumo da fatura do lado da leitura, o conjunto independente de problemas do PDF/A-3, a lista de anexos classificados e o veredito de consistência visual/XML do Princípio 4 ao lado das verificações de regras de negócios Schematron e contêiner existentes, demonstrando as novas APIs do lado da leitura em cada PDF gerado
Version 2.253.1
Fixed
- Alinhado o código-fonte da demo E-Invoice com suas asserções de teste de regressão:
TInvoiceForm = class(TForm)agora usa a declaração espaçada padrão, eIsDefaultOutputFileintroduz uma variável localProfilepor iteração (definida a partir deGetProfile(I)) para que a fonte carregue o literalstring(Profile.OutputBaseName)+ '.pdf'exato que os testes verificam, evitando a chamada duplicada deGetProfilepor iteração do loop; resolve as duas falhas de longa dataEInvoiceDemoDefaultOutputUsesProfileSuffix/EInvoiceDemoUsesProjectFileAndOutputNames
Version 2.253.0
Added
- Adicionada renderização de página de documento carregado:
THotPDF.RenderLoadedPageToBitmap(PageIndex, DPI)desenha uma página em um GDITBitmapRGB de 24 bits (chamador libera) interpretando o stream/Contentscontra um estado gráfico completo (CTM, cores, atributos de linha, estado do texto) e um caminho atual, fornecendo cada operador ao GDI por meio de pontes de caminho / texto / imagem; o conjunto de operadores suportados cobre o subconjunto comum de PDF do documento: texto (BT ET Tf Tc Tw Tz TL Tr Ts Td TD Tm T* Tj TJ ' "), construção e pintura de caminho (m l c v y re h S s f F f* B b B* b* n W W*), cor (rg RG g G k K), estado gráfico (q Q cm w) eDopara imagem e um nível de recursão de Form XObject; os espaços de cores tratados são DeviceRGB / Gray / CMYK e Indexed; CalRGB / Lab / ICCBased degradam para uma aproximação de melhor esforço; seis novas unidades (HPDFRenderMatrix,HPDFRenderGraphicsState,HPDFRenderColorSpace,HPDFRenderPath,HPDFRenderFontMetrics,HPDFPageRenderer) mantêm o renderizador desacoplado doHPDFDocpor meio de um registro de acessadores de ponteiro de função - Adicionado
HotPDF.RenderTests(3 casos DUnitX) cobrindo renderização de página de texto (bitmap não em branco), tamanho da página correspondente a DPI e retornos nulos para índice de página fora do intervalo — todos passam no Win32 e Win64
Version 2.252.0
Added
- Adicionada substituição de texto em documento carregado:
THotPDF.ReplaceLoadedPageTexteReplaceLoadedDocumentTextregravam cada ocorrência de um termo codificando inversamente a substituição por meio da tabela de código de caracteres da fonte (HPDFEncodeUnicode) e emendando o resultado apenas nas faixas de bytes de código correspondentes de cada operando de string — bytes não correspondentes, espaço em branco entre tokens e operadores são preservados literalmente; cada stream/Contentsé processado isoladamente para que páginas de vários streams permaneçam bem-formadas; streams compactados são descompactados para edição e salvos descompactados (a entrada/Filteré descartada, aceitando um arquivo maior);ReplaceCountrelata o número de regravações de operandos executadas - Adicionado
HPDFEncodeUnicodeemHPDFTextExtraction: o inverso deHPDFDecodeCharCode, mapeando um codepoint Unicode de volta para bytes de código de caracteres de uma fonte ao percorrer a mesma cadeia de estratégia ao contrário (ToUnicode bfchar/bfrange, stream de codificação cidchar/cidrange + CIDToUnicode, Type0 CIDToGID/CIDIdentity, tabelas predefinidas WinAnsi/MacRoman), para que um ciclo completo de codificação→decodificação seja estável para qualquer código que o decodificador possa resolver - Adicionado
HPDFSerializeStringLiteral/HPDFSerializeHexStringemHPDFContentStream: reserializa bytes de código de caracteres brutos de volta em um literal de string de stream de conteúdo PDF ((...)com()\e escapes octais) ou string hexadecimal (<...>), espelhando oReadLiteralString/ReadHexStringdo tokenizer para que o ciclo completo de análise → reserialização seja limpo - Adicionado
HPDFMatchGlyphsemHPDFContentStream: um comparador de sequência de glifos de função pura extraído deSearchLoadedPageTextpara que os caminhos de busca e substituição compartilhem um núcleo de correspondência comum - Adicionado
THPDFPageFontResolver.LookupDecoderpara que o caminho de substituição possa obter uma cópia do decodificador de fonte para codificação reversa fora do loop do interpretador - Adicionado
HotPDF.ReplaceTests(8 casos DUnitX) cobrindo ciclos completos de serializador (escape de literal/hex/byte alto) e cenários de mesmo comprimento de ponta a ponta, comprimentos diferentes, correspondência múltipla, degradação de stream compactado e agelha ausente — todos passam no Win32 e Win64
Version 2.251.0
Added
- Adicionada busca de texto em documento carregado:
THotPDF.SearchLoadedPageTexteSearchLoadedDocumentTextlocalizam cada ocorrência de um termo correspondendo à sequência de glifos Unicode produzida porExtractLoadedPageGlyphs, retornando umTHPDFTextMatchArraycujas entradas carregam o intervalo de glifos, a origem e a largura do espaço do usuário e o índice de token/item de origem para que um chamador possa reescrever os bytes do operando posteriormente; a correspondência insensível a maiúsculas e minúsculas usa dobramento apenas ASCII para manter o comportamento idêntico em todas as toolchains Delphi 5–XE - Estendido o tokenizer e interpretador de stream de conteúdo com rastreamento de deslocamento de bytes:
THPDFContentTokeneTHPDFArrayItemagora registramStartOfs/EndOfsabrangendo cada operando exatamente como escrito (incluindo delimitadores()ou<>), e cadaTHPDFGlyphRecordcarregaTokenIndex/ItemIndex/ByteOffsetapontando de volta para o operando e unidade de código que o produziu — a base para a substituição de texto in-loco - Adicionado
HotPDF.SearchTests(10 casos DUnitX) cobrindo reconstrução de intervalo de deslocamento para operandos literal/hex/TJ-array, a referência cruzada glifo→token e busca de ponta a ponta única/insensível a maiúsculas e minúsculas/múltipla correspondência/em todo o documento, além dos casos extremos de agulha vazia e agulha ausente — todos passam no Win32 e Win64
Version 2.250.0
Fixed
- Hardened
ImportLoadedFormFromFDF: substituído o scanner de nível de byte/T+espaço +/V+espaço (que analisava incorretamente/Type /Cataloge outros tokens/T*como nomes de campo, engolia bytes através de objetos para o próximo(e perdia valores de string hexadecimal) com uma análise estrutural — cada dicionário de campo<< /T ... /V ... >>dentro do array/Fieldsé fatiado pelo rastreamento de profundidade de colchetes (respeitando literais de string e hexadecimais) e entregue aoHPDFParserParseSimpleDictionary, para que valores de string, string hexadecimal, nome e numéricos/Vagora façam todos o ciclo completo corretamente - Valores
/Vcarregados como strings hexadecimais UTF-16BE (<FEFF...>) agora mantêm sua forma hexadecimal por meio da importação:HPDFSetDictFormValuedetecta o prefixo BOMFEFFe defineIsHexadecimalpara que o gravador re-emita<FEFF...>em vez de um literal corrompido(FEFF...); valores de nome de checkbox / rádio (/Yes,/Off) são preservados como nomes porque o caminho de correção de tipo existente já mantém o slotTHPDFNameObject
Added
- Adicionado
HotPDF.FDFTests(5 casos DUnitX) cobrindo o ciclo completo de exportação→importação para campos de texto, a preservação do tipo nome-valor de checkbox, descarte silencioso de nomes de campos desconhecidos, o ciclo completo de valor hexadecimal UTF-16BE e a regressão de ruído da palavra-chave/Type— todos passam no Win32 e Win64
Version 2.249.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
HPDFIsFacturXVersionaccepts the2p5Detalhes localizados da alteração no comportamento da API e nos símbolos listadosHPDFFacturXNormalizeVersionDetalhes localizados da alteração no comportamento da API e nos símbolos listados2p0Detalhes localizados da alteração no comportamento da API e nos símbolos listadosHPDFFacturXFileNameOK,HPDFFacturXXMLGuidelineOKDetalhes localizados da alteração no comportamento da API e nos símbolos listados2p5identically to2p0Detalhes localizados da alteração no comportamento da API e nos símbolos listados - Detalhes localizados da alteração no comportamento da API e nos símbolos listados
THotPDF.AddUBLSupplementaryFileDetalhes localizados da alteração no comportamento da API e nos símbolos listadosfactur-xubl.xmlDetalhes localizados da alteração no comportamento da API e nos símbolos listadosAlternativeDetalhes localizados da alteração no comportamento da API e nos símbolos listadosapplication/xmlDetalhes localizados da alteração no comportamento da API e nos símbolos listadosAddPDFA3AssociatedFilepipeline),HPDFIsFacturXUBLFileNameDetalhes localizados da alteração no comportamento da API e nos símbolos listadosDetectFacturXInvoiceDetalhes localizados da alteração no comportamento da API e nos símbolos listadosTHPDFFacturXInvoiceInfo.UBLFileNameDetalhes localizados da alteração no comportamento da API e nos símbolos listadosBuildUBLSupplementaryXMLDetalhes localizados da alteração no comportamento da API e nos símbolos listados - Detalhes localizados da alteração no comportamento da API e nos símbolos listados
HPDFEInvoiceValidatorDetalhes localizados da alteração no comportamento da API e nos símbolos listadosLib/resources/Schematron/and exposesHPDFValidateEInvoiceDetalhes localizados da alteração no comportamento da API e nos símbolos listadosValidateFacturXInvoiceDetalhes localizados da alteração no comportamento da API e nos símbolos listadosskippedDetalhes localizados da alteração no comportamento da API e nos símbolos listadosEInvoiceValidationDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Alterado
AddFacturXAssociatedFileDetalhes localizados da alteração no comportamento da API e nos símbolos listadosVersionargument throughHPDFFacturXNormalizeVersionbefore writing XMP, so2p5Detalhes localizados da alteração no comportamento da API e nos símbolos listados2p0Detalhes localizados da alteração no comportamento da API e nos símbolos listados1.0/2p0behaviour- E-Invoice sample
GenerateInvoicePDFDetalhes localizados da alteração no comportamento da API e nos símbolos listadosAttachUBLDetalhes localizados da alteração no comportamento da API e nos símbolos listadosFalseDetalhes localizados da alteração no comportamento da API e nos símbolos listados-withUBLDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.248.0
新增
- 加固 E-Invoice 例程的 profile 索引模型:把
GetProfile从 1 基 case 加else兜底改为显式 0 基双射(0 BASIC..5 EN 16931),下拉框顺序同步重排,默认仍为 EN 16931;补全 E-Invoice 例程 README 对 ZUGFeRD 1.0 COMFORT 和 ZUGFeRD 2.0 BASIC 两个 profile 的输出文件、校验状态和运行输出描述
Version 2.247.0
新增
- 新增已加载文档的 22 项创建/写入 API(第九轮,实现中等工程量特性,全部在已加载对象图上构造字典并注册到 AcroForm/Page):表单字段创建——文本字段(
AddLoadedTextField)、复选框(AddLoadedCheckBox)、组合框(AddLoadedComboBox)、列表框(AddLoadedListBox)、按钮(AddLoadedPushButton)、签名字段(AddLoadedSignatureField),自动建立/补全 AcroForm 与/NeedAppearances;注释子类型——橡皮图章(AddLoadedStampAnnotation)、高亮/下划线/波浪线/删除线(AddLoadedHighlightAnnotation)、矩形/圆形(AddLoadedSquareAnnotation)、直线(AddLoadedLineAnnotation)、墨迹(AddLoadedInkAnnotation)、多边形/折线(AddLoadedPolygonAnnotation)、插入符(AddLoadedCaretAnnotation);FDF 表单数据互换(ExportLoadedFormToFDF/ImportLoadedFormFromFDF);N-up 拼版(StitchLoadedPage/StitchLoadedPageSideBySide);脱敏遮罩(RedactLoadedRect)
Version 2.246.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
GetLoadedFormFieldOption/GetLoadedFormFieldOptions)/write (SetLoadedFormFieldOptions), field default-value read/write (GetLoadedFormFieldDefaultValue/SetLoadedFormFieldDefaultValue), field reset (ResetLoadedFormField), text-note annotation (AddLoadedTextAnnotation), free-text annotation (AddLoadedFreeTextAnnotation), annotation color (SetLoadedAnnotationColor), cross-page annotation move (MoveLoadedAnnotation), bookmark color (SetLoadedOutlineColor)/style (SetLoadedOutlineStyle)/delete (RemoveLoadedOutline), document Trapped flag (SetLoadedTrapped), optional-content group visibility (SetLoadedOCGVisibility), page-label write (SetLoadedPageLabel)
Version 2.245.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
SetLoadedAnnotationFlagsDetalhes localizados da alteração no comportamento da API e nos símbolos listadosAddLoadedLinkAnnotation), bookmark expand/collapse state (SetLoadedOutlineOpen), document open-action (SetLoadedOpenActionPage), form-field export-value read/write (SetLoadedFormFieldExportValue/GetLoadedFormFieldExportValue), form-field tooltip (SetLoadedFormFieldTooltip/GetLoadedFormFieldTooltip), form-field border width/background color (SetLoadedFormFieldBorderWidth/BackgroundColor), clear all JavaScript (RemoveLoadedJavaScriptAll), page content copy (CopyLoadedPage)
Version 2.244.0
新增
- 新增已加载文档的 15 项写入/编辑 API(第二轮写入,覆盖
RemoveAnnotation/SetRotationAngle等模式):页面旋转写入(SetLoadedPageRotation)、注释删除/内容修改/清空(RemoveLoadedAnnotation/SetLoadedAnnotationContents/ClearLoadedAnnotations)、查看器偏好写入(SetLoadedViewerPreferences)、日期写入(SetLoadedCreationDate/ModDate)、Catalog 版本写入(SetLoadedCatalogVersion)、页面持续时间/过渡效果写入(SetLoadedPageDuration/Transition)、书签标题修改(SetLoadedOutlineTitle)、嵌入文件删除(RemoveLoadedEmbeddedFile)、表单字段值写入(SetLoadedFormFieldValueByIndex/ByName)
Version 2.243.0
新增
- 新增已加载文档的 14 项写入/编辑 API(首次突破只读检视,覆盖
SetXMLMetadata/InsertAnnotation/Stitch等模式):页面模式/布局写入(SetLoadedPageMode/PageLayout)、文档语言写入(SetLoadedLanguage)、文档信息写入(SetLoadedCreator/Producer/Title/Author/Subject/Keywords)、Info 键删除(RemoveLoadedInfoKey)、XMP 元数据写入(SetLoadedXMPMetadata)、文档级 JavaScript 增删(AddLoadedDocumentJavaScript/RemoveLoadedJavaScript)、页面框写入(SetLoadedPageBox)。这些方法修改已加载的对象图,调用SaveLoadedDocument持久化
Version 2.242.0
新增
- 新增已加载文档的 15 项检视 API(第四轮标准 PDF 功能差距扫除):页面模式/布局读取(
GetLoadedPageMode/PageLayout)、Catalog 版本(GetLoadedCatalogVersion)、页面对象号(GetLoadedPageObjectNumber)、表单字段标志位组合(GetLoadedFormFieldFlags)/NoExport 检测(IsFormFieldNoExport)、注释标志解码(IsLoadedAnnotationHidden/Printable/Locked)、度量单位转换(PointsToMM/MMToPoints/PointsToInches/InchesToPoints/PointsToCm/CmToPoints)
Version 2.241.0
新增
- 新增已加载文档的 20 项深度检视 API(第三轮标准 PDF 功能差距扫除):Info 字典键枚举(
GetLoadedInfoKeyCount/KeyName/KeyValue)、表单字段矩形/页索引(GetLoadedFormFieldRect/PageIndex)、注释 URI/弹出框/名称/修改日期(GetLoadedAnnotationURI/PopupRect/Name/ModDate)、书签颜色/样式(GetLoadedOutlineColor/Style)、元数据流检测(HasLoadedMetadata)、Trailer ID(GetLoadedTrailerID)、XRef 类型(GetLoadedXRefType)、最大对象号(GetLoadedMaxObjectNumber)、源文件大小(GetLoadedSourceFileSize)、嵌入字体计数(GetLoadedEmbeddedFontCount)、文档语言(GetLoadedLanguage)、页面持续时间/过渡效果(GetLoadedPageDuration/Transition)、表单字段必填标志(IsFormFieldRequired)
Version 2.240.0
新增
- 新增已加载文档的 20 项深度检视 API(第二轮标准 PDF 功能差距扫除):嵌入文件保存到磁盘(
SaveLoadedEmbeddedFileToDisk)、设置文档信息字段(SetLoadedDocumentInfo)、读取 JavaScript 源码(GetLoadedJavaScriptSource)、命名目标枚举(GetLoadedNamedDestinationCount/Name)、OCG 可见性(GetLoadedOCGVisibility)、页面标签详情(GetLoadedPageLabelInfo)、全文档注释/字体计数(GetLoadedTotalAnnotationCount/TotalFontCount)、PDF/A 与 PDF/X 合规检测(IsLoadedPDFA/IsLoadedPDFX/GetLoadedPDFAVersion/GetLoadedPDFXVersion)、批量便捷方法(GetLoadedOutlineTitles/AllLinkURIs/ImageCountPerPage/AllPageBoxes/FormFieldNames/FormFieldValues)、一键文档摘要(GetLoadedSummary返回页数/注释/字体/图像/表单/签名计数 + 加密/AcroForm/结构树标志)
Version 2.239.0
新增
- 新增已加载文档的 20 项检视 API(标准 PDF 功能差距批量扫除):PDF 版本字符串(
GetLoadedPDFVersionString)、线性化检测(IsLoadedLinearized)、XMP 元数据读取(GetLoadedXMPMetadata)、文档级 JavaScript 枚举(GetLoadedJavaScriptCount/Name)、页面标签计数(GetLoadedPageLabelCount)、查看器偏好(GetLoadedViewerPreferences)、结构树检测(HasLoadedStructureTree)、签名字段计数(GetLoadedSignatureFieldCount)、可选内容组(OCG)枚举(GetLoadedOCGCount/Name)、OutputIntent 检测(HasLoadedOutputIntent/GetLoadedOutputIntentInfo)、AcroForm 检测(HasLoadedAcroForm)、创建/修改日期(GetLoadedCreationDate/ModDate)、批量数组便捷方法(GetLoadedEmbeddedFileNames/LinkURIs/AnnotationSubtypes/FontNames返回THPDFAnsiStringArray)
Version 2.238.0
新增
- 新增已加载文档的深度检视 API(8 个只读方法):
GetLoadedPageWidth/GetLoadedPageHeight读取页面尺寸(pt);GetLoadedLinkCount/GetLoadedLinkInfo枚举超链接注释(URI + 矩形);GetLoadedEncryptionInfo查询加密版本、密钥长度、权限标志;GetLoadedEmbeddedFileCount/GetLoadedEmbeddedFileName枚举文档嵌入文件(附件)。这些 API 遍历已加载的对象图但不修改它,仿现有GetLoadedImageInfo/GetLoadedAnnotationInfo模式。LoadedDocInspector例程同步更新,演示页面尺寸/旋转/链接计数、加密状态、嵌入文件清单
Version 2.237.0
新增
- 新增已加载文档的元数据查询 API:
GetLoadedDocumentInfo从 Info 字典读取标题、作者、主题、关键词、创建者、生成器;GetLoadedPageRotation读取页面旋转角度;GetLoadedOutlineCount/GetLoadedOutlineItem枚举书签树的顶层条目(标题 + 目标页索引)。这些都是只读查询,仿现有GetLoadedImageInfo模式,不修改文档对象图
Version 2.236.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
THotPDFmethods:HPDFCMapReaderparses both ToUnicodebeginbfchar/beginbfrangeDetalhes localizados da alteração no comportamento da API e nos símbolos listadosbegincidchar/begincidrangeDetalhes localizados da alteração no comportamento da API e nos símbolos listadosHPDFContentStreamDetalhes localizados da alteração no comportamento da API e nos símbolos listadosBT/ET,Tf,Tj/TJ/'/",Td/TD/Tm/T*,q/Q, inline-imageBI/ID/EIDetalhes localizados da alteração no comportamento da API e nos símbolos listadosHPDFTextExtractionDetalhes localizados da alteração no comportamento da API e nos símbolos listados/ToUnicode→/EncodingDetalhes localizados da alteração no comportamento da API e nos símbolos listados/DescendantFonts/CIDToGIDMap→cid2code.txtDetalhes localizados da alteração no comportamento da API e nos símbolos listados - Added
THotPDF.GetLoadedFontDecoder,THotPDF.ExtractLoadedPageGlyphsandTHotPDF.ExtractLoadedPageTextDetalhes localizados da alteração no comportamento da API e nos símbolos listadosExtractLoadedPageTextDetalhes localizados da alteração no comportamento da API e nos símbolos listados - Added
ExtractTextDetalhes localizados da alteração no comportamento da API e nos símbolos listadosLoadedDocInspectorread-only console layout
Alterado
HPDFDocnowusesHPDFCMapReader,HPDFContentStreamandHPDFTextExtractionDetalhes localizados da alteração no comportamento da API e nos símbolos listadosTHotPDFDetalhes localizados da alteração no comportamento da API e nos símbolos listadosHPDFParserstandalone-unit pattern (no dpkcontainsDetalhes localizados da alteração no comportamento da API e nos símbolos listadosHPDFDocDetalhes localizados da alteração no comportamento da API e nos símbolos listadosTHPDFFontDocAccessDetalhes localizados da alteração no comportamento da API e nos símbolos listadosResolveLoadedDictionary/ResolveLoadedStream/HPDFReadStreamByteshelpers
Version 2.235.1
新增
- 新增
PDFOptimize控制台例程(Delphi):演示生成端 PDF 体积优化,通过同内容、不同压缩设置的多份 PDF 横向对比量化每种策略的收益 —— 文本/矢量文档的cmNonevscmFlateDecode加UseObjectStreams对象流打包、彩色照片的icJpegJpegQuality扫描对比icFlate、双层扫描图的icCCITT42(G4)对比icJBIG2lossless/lossy,控制台打印体积对比表,所有测试图像均在内存合成生成不依赖外部文件,并明确标注 HotPDF 压缩为生成端能力(无法对已加载 PDF 重新压缩)
Version 2.235.0
Added
- Adicionada a demo consolidada
Stamp(Delphi e C++Builder): une as demos anterioresModify,MultiPageStampeWatermarkem um único programa VCL que sobrepõe três camadas de carimbo ativáveis independentemente sobre um intervalo de páginas analisado —— marca d'água de texto no fluxo de conteúdo (AddTextWatermark), anotação de carimbo interativa (AddStampAnnotation) e bitmap de canto (AddImage+ShowImage), mantendo a análise de intervalo de páginas (HPDFParsePageRange) e o posicionamento nos quatro cantos - Adicionada a demo de console consolidada
PageSizes: une as demos anterioresSmallSize,NormalSizeeLargeSizeem um único programa que enumera todos os valores do enumeradoTHPDFPageSizedas categorias pequeno/normal/grande mais as dimensões personalizadasWidth/Heightem uma única passagem
Changed
- Fundidos os 5 programas independententes do grupo de demos
Security(Encryption,SecurityAES256,DecryptPDF,PFXSignature,SignatureField) em um único programa de console que cobre criptografia RC4-128, criptografia AES-256 R5/R6, descriptografia por senha, espaços reservados de campo de assinatura e assinatura PFX (ignorada automaticamente quando o fixture PFX está ausente) - Fundidas as interfaces gráficas
AddPageseDelPagesem uma únicaAddDelPages, atualizando simultaneamentePageMultiSizeeAddDelPagesdo C++Builder para igualar a riqueza do Delphi (Size/Orientation/largura-altura personalizadas/contagem/rótulo/progresso) - Movida a ferramenta de regressão de glifos
FontTestdeDemoparaTests\Delphi\FontTesteTests\C++Builder\FontTest, esclarecendo seu papel como ferramenta de teste em vez de demo funcional
Removed
- Removida a demo puramente redundante
TiffToPDF(Delphi e C++Builder); sua capacidade é totalmente coberta pelo caminho de conversão TIFF emConvertTo - Removida a demo
CopyPagesdo C++Builder; sua capacidade é totalmente coberta pelo mais completoPDFmerge - Removida a demo
Logger; o uso da fachada de logging em tempo de execuçãoHPDFLogger/HPDFLogque ela demonstrava foi migrado para a página de tópico da documentação da APIDocs/zh-cn/topics/HPDFLoggerFacade.html(a biblioteca retém a unidadeHPDFLogger; apenas o projeto demo foi excluído)
Fixed
- Corrigido o algoritmo de exclusão de páginas pares no antigo
DelPages(agora fundido emAddDelPages): o loop original contava um número estático de páginas contra o documento em redução, excluindo na verdade os índices 1..ponto médio em vez das verdadeiras páginas pares; agora percorre de cima para baixo a partir da página par mais alta excluindo índices base 0, e corrige o vazamento da variável globalTHotPDFa cada clique
Version 2.234.1
Correções
- Corrigido erro de compilação na unidade
HPDFJBIG2Enc(E2003 Undeclared identifier: 'Invariant'): A RTL do Delphi mais antigo não possuiTFormatSettings.Invariant,atofagora usa umTFormatSettingsconstruído manualmente consistente comHPDFXFA.XFAInvariantFormatSettings, restaurando a compilação no RAD Studio 12.0 Win64
Version 2.234.0
Novidades
- Novo backend de decodificação de alto desempenho para imagens JBIG2: A extração de imagem no lado do carregamento (
ExtractLoadedImageetc.) agora habilita por padrão este backend para decodificar imagens JBIG2 incorporadas em PDFs - Adicionada propriedade
THotPDF.UseExternalJBIG2Decoder(padrãoTrue): Defina comoFalsepara voltar ao decodificador nativo em Pascal como alternativa
Version 2.233.0
Novidades
- Novo backend de codificação de alto desempenho para codificação de imagens JBIG2:
AddImageagora habilita por padrão este backend ao comprimir bitmaps monocromáticos comicJBIG2, produzindo fluxos JBIG2 com codificação aritmética mais rápidos e em conformidade com o padrão - Adicionada opção
THPDFJBIG2Options.UseExternalEncoder(padrãoTrue): Defina comoFalsepara voltar ao codificador nativo Pascal MMR como alternativa
Version 2.232.1
Correções
- Corrigido um defeito de propagação de carry no codificador aritmético generic-region JBIG2 (
HPDFJBIG2Codec) em imagens de alta entropia: A saída de bytes (byte-out e preenchimento 0xFF) do codificador aritmético MQ omitia a limpeza de bits de spillover de carry, resultando em erro de codificação para bitmaps monocromáticos de alta entropia, como documentos ruidosos e esparsos (padrões regulares de baixa entropia não acionam isso acidentalmente e não são afetados); O terminador de fluxo de codificação também foi normalizado para o formato padrão para garantir que decodificadores de terceiros possam analisar completamente
Version 2.232.0
Novidades
- O backend de decodificação JBIG2 (
HPDFJBIG2Codec) agora suporta codificação aritmética (MQ): A extração de imagem no lado do carregamento (ExtractLoadedImage) agora pode decodificar imagens JBIG2 codificadas aritmeticamente — generic region aritmético (GBTEMPLATE 0-3 + TPGDON), dicionário de símbolos e regiões de texto; Anteriormente, apenas MMR generic region era suportado
Version 2.231.3
Novidades
- Suporte ativado para saída PNG para o decodificador de referência jbig2dec: Adicionado
build-libpng-vc64.bat(compila 16 objetos principais do libpng 1.8 paraWin64\libpng-*.objcom MSVC, gera cabeçalho zlib-ng automaticamente e reutilizapnglibconf.h.prebuilt), adaptadobuild-jbig2dec-vc64.batpara habilitar automaticamentejbig2_image_png.ceHAVE_LIBPNGao detectar objetos libpng e vincular objetos libpng + zlib-ng.jbig2dec.exeagora suporta saída-t png, gerando um PNG grayscale 1-bit de 64x56 paraannex-h.jbig2, idêntico à saída SHA-1 e PBM
Version 2.231.2
Novidades
- Adicionada infraestrutura de compilação para Windows ao decodificador de referência jbig2dec empacotado (
Lib/thirdparty/jbig2dec): Adicionadobuild-jbig2dec-bcc64x.bat(gera 15 objetos COFF64 vinculáveis no Delphi usando Embarcadero bcc64x para consumo futuro porHPDFJBIG2.pasvia{$L}) ebuild-jbig2dec-vc64.bat(gera decodificador de linha de comando standalonejbig2dec.exeusando MSVC), além do templateconfig_types.h.ine.gitignore, corrigindo regras de objetos ausentes emmsvc.mak
Correções
- Problemas de compilação e portabilidade do código upstream do jbig2dec com toolchains modernos do Windows: O GNU getopt da década de 1990, que não compilava, foi substituído por uma implementação moderna e limpa (
getopt.c/getopt.h, o MSVC falhava por falta destrings.h, o bcc64x/C23 rejeitava a ausência de protótipos); Corrigido truncamento desize_tde 64 bits emjbig2dec.c::hash_image, underflowuint32→intemjbig2_segment.c::jbig2_find_segment, contagem de bits de 64 bits emsha1.c::SHA1_Update, além do uso indevido do retorno defreademjbig2dec.c, avisos obsoletos do POSIX e uso do especificador%lu. O algoritmo central de decodificação JBIG2 permanece inalterado em relação ao upstream
Version 2.231.1
Novidades
- Extração de imagem no lado do carregamento (
ExtractLoadedImage) agora suporta múltiplas cadeias de filtros: Filtros de dados prefixados na imagem, como ASCIIHexDecode / ASCII85Decode / FlateDecode / LZWDecode / RunLengthDecode, são descompactados sequencialmente antes da decodificação pelo filtro de imagem final (DCTDecode / JPXDecode ou raster), por exemplo,[/ASCII85Decode /FlateDecode]
Version 2.231.0
Novidades
- Adicionado novo backend de decodificação de fax CCITT (unidade
HPDFCCITTDecode): Implementa decodificação de fax 1D / 2D ITU-T T.4 (G3) e T.6 (G4), permitindo que a extração de imagem (ExtractLoadedImage) decodifique imagens bicromáticas CCITTFaxDecode, em conformidade com os parâmetros K / Columns / Rows / BlackIs1 / EncodedByteAlign de/DecodeParms
Version 2.230.2
Novidades
- Extração de imagem no lado do carregamento (
ExtractLoadedImage) agora suporta rasters DeviceGray e Indexed de 1 / 2 / 4 bits por componente: Desempacotamento bit a bit e escalonamento proporcional dos tons de cinza para 8 bits
Version 2.230.1
Novidades
- Extração de imagem no lado do carregamento (
ExtractLoadedImage) agora suporta imagens DeviceCMYK: O raster CMYK de 4 canais é convertido em bitmap RGB usando a fórmula padrão
Version 2.230.0
Novidades
- Adicionado backend de decodificação JBIG2 (unidade
HPDFJBIG2Codec): Implementa decodificação 2D ITU-T T.6 (G4 / MMR), ativando o antes inativoTHPDFJBIG2Decoder, permitindo que a extração de imagem no carregamento (ExtractLoadedImage) decodifique imagens bicromáticas JBIG2Decode. Suporta generic region codificado em MMR (incluindo segmento global compartilhado/JBIG2Globals); Codificação aritmética, dicionário de símbolos, texto / regiões halftone ainda não suportados
Version 2.229.3
Novidades
- Extração de imagem no lado do carregamento (
ExtractLoadedImage) agora suporta imagens com cor indexada (Indexed): Os rasters FlateDecode / LZWDecode armazenados no espaço de cor Indexed serão mapeados pela paleta para bitmaps true color. Suporta cores base DeviceRGB / DeviceGray / DeviceCMYK e tabelas de pesquisa em formato hexadecimal ou literal
Version 2.229.2
Novidades
- Extração de imagem no lado do carregamento (
ExtractLoadedImage) agora suporta imagens JPXDecode (JPEG 2000): Imagens XObject codificadas como JPXDecode serão decodificadas em bitmaps usando o backend OpenJPEG, e oGetLoadedImageInforelataDecodable=Truepara essas imagens. Imagens JPEG 2000 incorporadas em PDF podem agora ser extraídas diretamente para bitmaps VCL, preservando pixels sem perdas
Version 2.229.1
Novidades
- Extração de imagem no lado do carregamento (
ExtractLoadedImage) agora suporta imagens DCTDecode (JPEG): Imagens XObject codificadas como DCTDecode serão decodificadas em bitmaps por meio deTJPEGImage, e oGetLoadedImageInforelataDecodable=Truepara essas imagens
Version 2.229.0
新增
- 新增加载侧图像提取 API:
GetLoadedImageCount/GetLoadedImageInfo/ExtractLoadedImage,可枚举已加载 PDF 中的图像 XObject 并将其解码回 VCL 位图(TBitmap)。GetLoadedImageInfo通过THPDFLoadedImageInfo返回每张图像的尺寸、位深、颜色空间、过滤器与可解码标志,便于在提取前预检。本版可解码以 FlateDecode / LZWDecode / ASCIIHex / ASCII85 / RunLength 编码的 DeviceRGB 与 DeviceGray 8 位栅格;索引色、CMYK、DCTDecode(JPEG)与 JPXDecode(JPEG 2000)图像将在后续版本接入
Version 2.228.0
新增
- 新增
TJpeg2000Bitmap(TBitmap派生类):可直接读写 JPEG 2000 图像,LoadFromStream将 JP2 / J2K 解码为位图、SaveToStream将位图编码为 JPEG 2000 码流;支持无损(LosslessCompression)与有损质量(CompressionQuality)两种模式、灰度 / RGB / CMYK 通道,并附带低层解码器THPDFJpeg2000Decoder供自定义图像管线直接取用解码后的像素数据
修复
- 恢复 JPEG 2000(JPXDecode,PDF 1.7 ISO 32000-1 7.4.9)图像支持:此前解码后端因库源损坏退化为占位桩,无法解码任何 JP2 / J2K 码流;现重新接入 OpenJPEG 2.5.4 引擎,可将灰度、RGB 与 YCbCr 图像解码为 8 位样本(高位深分量重采样为 8 位、YCbCr 自动转 RGB、子采样分量按最近邻上采样),兼容带 JP2 box 头的文件与裸 J2K 码流
AddImage现可直接传入.jp2/.j2k/.jpt/.jpc文件并按所选压缩方式嵌入 PDF(自动识别格式),无需先行手工转码
Version 2.227.0
变更
- 将 GSUB/GPOS 上下文应用与 Mark 定位函数(37 个纯函数)从
HPDFDoc.pas追加提取到HPDFShaping.pas。这批函数覆盖 GSUB 上下文/链式上下文/反向链式替换、GPOS 上下文/链式上下文/嵌套定位、Mark-to-Base/Mark-to-Mark/Cursive/Mark-to-Ligature 定位、GDEF 类查找、Collect-GID 子集闭包等,全部接收TBytes表切片 + glyph ID 值参数,不触碰实例状态。HPDFDoc.pas本轮减约 11000 行(含被提取函数之间的 forward 声明和注释块),累计六轮拆分减约 21700 行(原文件的 26%)
Version 2.226.0
变更
- 将简单对象解析器(
ParseSimpleDictionary、ParseSimpleArray)从HPDFDoc.pas提取到新单元HPDFParser.pas。这两个 byte 级递归下降解析器从AnsiString内容构建THPDFDictionaryObject/THPDFArrayObject树,不触碰THotPDF实例状态;原方法保留为转发 stub,公开 API 不变。这是巨石拆分第五轮,本轮减约 2060 行,五轮累计减约 10700 行(原文件的 13%)
Version 2.225.0
变更
- 将 OpenType 整形原语(71 个纯函数)从
HPDFDoc.pas提取到新单元HPDFShaping.pas。这批函数覆盖 GSUB 覆盖表/查找/替换、GDEF 类查找、TTF 表读取器、脚本重排与整形(Arabic、Syriac、Indic 语系、Thai/Lao、Hebrew、Javanese 等),全部接收值参数(TBytes表切片、UnicodeStringrun、glyph ID)从不触碰THotPDF或THPDFPage实例。HPDFDoc.pas通过 implementation 段uses HPDFShaping访问,TGPOSValue/TGPOSValueArray类型一并迁移。这是巨石拆分第四轮,本轮减约 3000 行
Version 2.224.0
变更
- 将 Factur-X / ZUGFeRD / XMP 电子发票辅助函数(22 个 standalone 函数)从
HPDFDoc.pas提取到新单元HPDFFacturX.pas。这批函数覆盖 FX/Basic/Minimum/EN16931 合规验证、XMP 元数据生成、嵌入式 XML 解析,全部自包含(仅操作值参数与TBytes,不触碰THotPDF实例状态)。HPDFDoc.pas通过 implementation 段uses HPDFFacturX访问,公开 API 不变。这是HPDFDoc.pas巨石拆分的第三轮,累计三轮减约 5600 行
Version 2.223.0
变更
- 将 Direct File API 的底层 I/O helper(44 个共享函数)从
HPDFDoc.pas提取到新单元HPDFDirectFileIO.pas。这些 byte / xref / object-body / AES-crypt 读取函数被加载器和 Direct File 子系统共用,提取后两个子系统都通过uses HPDFDirectFileIO访问。HPDFDoc.pas因此再减少约 1640 行(累计两轮拆分减约 5200 行)。DA 专用类型(THPDFDirectReadBuffer、THPDFDirectWriteBuffer、THPDFDirectIntArray)和全局缓冲(GHPDFCopyBuffer)一并迁移到新单元
Version 2.222.0
变更
- 将预检(preflight)、合规检查、PDF/VT 验证相关代码从
HPDFDoc.pas提取到新单元HPDFPreflight.pas。原有 25 个公开方法(CreatePreflightReport、ValidatePDFVT、EmbedPreflightReportAsXMP等)签名完全不变,实现改为转发到新单元的自包含 standalone 函数;HPDFDoc.pas因此减少约 3500 行。新增 3 个只读访问器(LoadedObjectCount、GetLoadedObjectByIndex、LoadedRootObjectIndex)让独立单元可枚举已加载文档的对象图
Version 2.221.0
新增
- 全面支持多语言化:将
Readme.html提取至Docs/en-us目录,并新增其他 37 种语言的翻译版本;更新了安装程序脚本(HotPDF-FULL.iss、HotPDF-TRIAL.iss),现在会根据安装时所选的语言,自动提取并放置对应语言版本的Readme.html至安装根目录
Version 2.220.0
新增
- 新增统一运行期日志门面
THPDFLogger与全局实例HPDFLog:把原本散落的编译期调试开关统一为运行期可控的日志门面。提供 Error / Warning / Info / Debug 四级严重度过滤,可同时输出到文件、OutputDebugString(IDE Event Log 可见)和控制台;文件目标带 10 MB 单备份滚动;线程安全(TCriticalSection保护);关闭态热路径仅一次布尔判断即返回,发布版零开销。LoadFromFile、CreatePreflightReport和 xref-stream 解析 fallback 三处诊断点已接入,加载成功 / 失败、preflight 摘要、对象流回退等事件会在启用日志时写入结构化记录。取代改HotPDF.inc重编包的传统做法,用户可在运行期随时开关诊断输出
Version 2.219.0
新增
- 新增
THotPDF.GetGPOSSingleAdjustment(GID, FeatureTag, out XPlacement, YPlacement, XAdvance, YAdvance): Boolean:OpenType GPOS LookupType 1 Single Adjustment 的独立公开查询。按任意 4 字节 feature tag(典型'size'光学尺寸 /'vhal'半高度)收集 GPOS lookup,解包 Extension(Type 9)后对 LookupType 1 子表应用已有的_GPOSApplySingle,返回单字形的 XPlacement / YPlacement / XAdvance / YAdvance 调整(1000-em,含正负号)。至此 GPOS 9 个 LookupType 全部 spec-complete——binary applier 早被 contextual kern 嵌套消费,本版补齐 standalone 查询入口填掉 spec matrix 里最后一条 GPOS gap
Version 2.218.1
新增
- 新增
THPDFPage.GetWideCharAdvances(Text, out TotalWidth, out Advances):一次性返回 Unicode 文本的总宽和每字形自然 advance(含 kerning)。底层用 GDIGetTextExtentExPointW一次调用同时拿总宽 + 累积宽度数组,差分后得到每字形 advance。调用方需预先SetLength(Advances, Length(Text))。可用于自定义排版、表格列宽计算、签名块布局等需要全部字形宽度的一次性场景
变更
- 优化
jtJustify两端对齐性能:v2.218.0 的_HPDFEmitJustifiedWideLine对每行做 N+1 次GetWideTextWidth(总宽 1 次 + 前缀差值 N 次,每次都是完整 GDI 往返)。改为一次GetWideCharAdvances调用,每行 GDI 往返从 N+1 次降到 1 次。典型 A4 整页 justify(45 行 × 80 字符)从约 3645 次 GDI 往返降到 45 次,约 80 倍提升。justify 视觉输出不变(同一度量引擎,含相同 kerning)
Version 2.218.0
新增
- 新增
jtJustify两端对齐模式(THPDFJustificationType枚举第四值):传入WideTextOutBox后,每行(除末行)的自然宽度与框宽之间的差额会分摊到行内的可拉伸间隙,使文本左右两边都对齐到框边。Latin 文本在词间空格分摊;CJK 文本(Han / 假名 / 韩文等无词间空格的脚本)在任意相邻字形间均等分摊(日式排版均等割付)。末行及已达到 / 超过框宽的行保持自然左对齐宽度。底层用 v2.215.0 的ExtTextOutTJ 数组 emit,测量用 v2.216.0 的GetWideTextWidth
Version 2.217.0
新增
- 新增
THPDFPage.WideTextOutBox:Unicode 多行自动换行。镜像TextOutBox的契约(返回放入框内的 WideChar 数),但用GetWideTextWidth测量、按 WideChar 索引切分。换行规则支持两种脚本:CJK(Han / 假名 / 韩文 / CJK 标点 / 全角)在任意两个字形间断行(CJK 无词间空格的标准行为);Latin 及其他脚本在最后一个空格 / Tab 处断词,无空格时硬断。硬换行(CR / LF / CRLF)照原样执行。修复TextOutBox(AnsiString)对中文 / 日文 / 韩文 / 代理对文本逐字节切分导致乱码换行的问题
Version 2.216.0
新增
- 新增
THPDFPage.GetWideTextWidth(Text: WideString): Single:Unicode 文本宽度测量。现有TextWidth(AnsiString)先把 WideString 收窄成 AnsiString 再查 0–255 ABC 宽度表,对 CJK / 代理对 / 多字节文本测出无意义的值;新方法用 GDIGetTextExtentPoint32W(lfHeight = -1000)按当前字体整串测量,返回用户空间点宽(与TextWidth同坐标系,可直接做布局预算)。同_XFAMeasureTextImpl的测量策略 - 新增
THPDFPage.GetWideTextRowCount(BoxWidth: Integer; Text: WideString): Integer:Unicode 行数预测,镜像GetTextRowCount的 AnsiString 契约,基于GetWideTextWidth让 CJK / 代理对文本正确换行计数
Version 2.215.0
新增
- 新增
THPDFPage.ExtTextOut(三个重载:PWORD/WideString/AnsiString):GDIExtTextOut风格的扩展文本输出,接受每字形水平位移数组Dx,emit 单个[<hex> <num> ...] TJ数组,让调用方精确控制每个字形原点——用于表格数字对齐、手动字距、两端对齐、表单值填充和签名块排版。复用现有_GPOSEmitPositionedRunTJ emit 器与_GPOSGlyphAdvance1000hmtx 读取,Dx为 PDF 用户空间点(与TextOut的 X/Y 同坐标系);当Dx值等于字形自然 advance 时 TJ 调整数归零,可在一次调用内混排自然与覆盖字形。仅支持简单 LTR 文本,RTL bidi 重排与 producer-side shaping 被旁路
Version 2.214.0
新增
- 新增
THPDFPage.AttachSignatureFieldAppearance:给已通过AddSignatureField/AddSignedSignatureField/AddPAdESSignatureField创建的签名字段挂上可见外观/AP /NForm XObject,并返回 Form 让调用方在 widget 本地坐标系内绘制签名图片、签名者姓名、日期或原因文字;内置薄边框加浅灰底色作为默认的“在此签名”占位外观 - 新增
HPDFNormalizeRect工具函数(三个重载:TRect/THPDFRectangle/ 四个Extended变参):把矩形角点重排为Left<=Right、Top<=Bottom,让鼠标拖框等无序输入可安全传给绘图 API - 把
THPDFPage.RotateCoordinate从 protected 提到 public:外部调用方现在可直接复用与RectangleRotate相同的旋转约定,计算旋转矩形角点、多边形顶点或文字包围盒
Version 2.213.0
新增
- 新增
THPDFPage几何便利方法套件:Arc角度定义弧、Pie角度定义扇形、Chord弓形、ArcTo中心加半径加扫角弧、Polyline折线、Polygon多边形、PolyBezier三次贝塞尔样条。所有方法都复用已有的MoveTo/LineTo/CurveToC/CurveArc底层路径原语,对齐 GDITCanvas角度与点数组语义,让画弧、扇形、折线和样条曲线不必再手写操作符循环
Version 2.212.0
Adicionado
- Adicionado
THPDFPage.SetAnnotationJavaScriptAction: as anotações normais agora podem definir actions de JavaScript de entrada de mouse, saída de mouse, pressionar, soltar, ganhar foco e perder foco por meio de/AA, facilitando a adição de scripts interativos em anotações, links e fluxos auxiliares de aparência de formulário
Version 2.211.0
Adicionado
- Adicionado
THPDFDocOutlineObject.SetURIAction: os nós de estrutura de tópicos retornados porOutlineRoot.AddChildagora podem ser alternados de/Destna página padrão para a action/S /URI, facilitando o fornecimento direto de ajuda externa, portais de suporte ou links de recursos relacionados no painel de marcadores
Version 2.210.0
Adicionado
- Adicionado
THotPDF.AutoCreateURL: quando ativado, a única linha horizontalTHPDFPage.TextOutpode gravar automaticamente o texto de URLhttp://,https://,mailto:ewww.como anotações de link/S /URI, facilitando a geração direta de links clicáveis em relatórios, diretórios e páginas de informações de contato
Version 2.209.0
Adicionado
- Adicionado
THotPDF.SetOpenNamedDestinationActioneTHotPDF.ClearOpenNamedDestinationAction: o Catalog/OpenActiondo documento agora pode ser definido para pular para um destino nomeado registrado porTHotPDF.RegisterNamedDestination, facilitando o posicionamento em entradas de capítulos estáveis ao abrir capas, diretórios ou documentos em que a ordem de geração mudará
Version 2.208.0
Adicionado
- Adicionado
THPDFPage.AddPushButtonWithNextAction: a ação principal do botão agora pode ser encadeada com uma segunda action de PDF por meio de/Next, facilitando a execução sequencial de/ResetFormseguido da exibição de campos, ocultar campos e depois executar ações nomeadas, ou outros fluxos de formulários interativos em um único clique
Version 2.207.0
Adicionado
- Aprimoramento
THotPDF.RegisterOptionalContentGroup: adicionado o parâmetroUserToggleAllowed, que pode gravar grupos de conteúdo opcionais especificados em/OCProperties /D /Lockedenquanto mantém o estado de visibilidade padrão, usado para mapas, desenhos de engenharia e camadas multilíngues que não devem ser alternadas pelo usuário do visualizador
Version 2.206.0
Adicionado
- Adicionado
THPDFPage.AddNamedDestinationLink: os links de página agora podem referenciar diretamente destinos nomeados registrados porTHotPDF.RegisterNamedDestination, gerando a action/S /GoTolocal e o nome do destino/Dem string, facilitando a navegação estável para páginas de sumário, referências cruzadas e documentos onde os números das páginas mudam
Version 2.205.0
Adicionado
- Adicionado
THotPDF.JBIG2OptionseTHPDFJBIG2Options:AddImage(..., icJBIG2)agora passará as intenções de codificaçãoLossless,LossyLeveleUseSymbolDictionaryno nível do documento para o encoder backend JBIG2 registrado; os valores padrão mantêm o caminho de saída MMR sem perdas existente e continuam a rejeitar configurações com perdas quando nenhum backend está registrado
Version 2.204.0
Adicionado
- Adicionado
THotPDF.EmfOptionseTHPDFEmfOptions: a importação aprimorada de EMF/WMF agora pode configurar a proporção de fit do documento, multiplicador de renderização de bitmap EMF, multiplicador de renderização de bitmap WMF, método de compressão de bitmap colorido e método de compressão de bitmap de 1-bit; os valores padrão mantêm o comportamento de saída existente, e o chamador pode alternar os bitmaps EMF coloridos paraicFlateou manter oicJpegpadrão
Version 2.203.0
Adicionado
TfrxHotPDFExportadiciona a propriedadeExportModee a enumeraçãoTfrxHotPDFExportMode: o padrãohemPageMetafilemantém o comportamento original de exportação de visualização de página inteira,hemObjectCanvaspermite que o FastReport desenhe objetosTfrxViewum por um durante a iteraçãoExportObject, e em seguida o HotPDF importa o metarquivo da página atual, facilitando cenários de integração do FastReport que exigem controle de ordem de exportação em nível de objeto
Version 2.202.0
Adicionado
- Adicionada saída de imagem monocromática nativa JBIG2:
THPDFImageCompressionTypeagora incluiicJBIG2,AddImageeAddImage(FileName)podem gravar um bitmap de 1-bit como um fluxo de imagem/JBIG2Decodedo PDF 1.4+; quando nenhum backend de encoder externo estiver registrado, o caminho integrado genérico MMR sem perdas será usado e o mecanismo de extensão priorizado pelo backend registrado é mantido
Version 2.201.0
Adicionado
- Adicionado ponte de backend JBIG2 e adaptador de exportação de PDF nativo
TDBGrid: agora expõeRegisterJBIG2DecoderBackend,RegisterJBIG2EncoderBackend, detecção de recursos e classes delegadas de encoder / decoder, e ainda retornaFalseexplicitamente quando nenhum backend de nível de produção está registrado;DBGridHotPDFExportpode gerar colunas visíveis do VCLTDBGridou campos visíveis de dataset como tabelas paginadas para file ou stream, e restaurar o dataset bookmark original após a exportação
Version 2.200.4
Fixed
- A demo E-Invoice agora adiciona ChargeTotalAmount e AllowanceTotalAmount ao resumo do cabeçalho para o perfil ZUGFeRD 1.0 COMFORT: o esquema ZUGFeRD 1.0 COMFORT exige que cada elemento de valor apareça exatamente uma vez, e a ausência deles fazia os dados da fatura falharem na validação das regras de negócio ZUGFeRD/Factur-X
Version 2.200.3
Added
- A demo E-Invoice agora inclui os perfis ZUGFeRD 1.0 COMFORT e ZUGFeRD 2.0 BASIC: o primeiro gera XML de fatura para o esquema legado CrossIndustryDocument 1p0, enquanto o segundo usa o esquema CrossIndustryInvoice 100 e zugferd-invoice.xml; ambos passam pela validação integrada Factur-X/ZUGFeRD
- A demo E-Invoice agora inclui um seletor de nível de conformidade PDF/A, permitindo substituir o nível padrão do perfil por PDF/A-3b ou PDF/A-3u durante a geração
Version 2.200.2
Fixed
- Os relatórios de preflight agora marcam entradas que não são PDF e que não têm cabeçalho PDF como reprovadas para páginas carregáveis, em vez de aceitar uma contagem de páginas substituta do carregador
Version 2.200.1
Fixed
- A validação de ZUGFeRD e Factur-X agora decodifica XML de fatura incorporada e metadados XMP compactados com Flate de PDFs carregados, reconhece identificadores PDF/A em estilo de atributo e aceita arquivos XML de fatura XRECHNUNG que usam
/AFRelationship /Source
Version 2.200.0
Added
- Faturas híbridas Factur-X e ZUGFeRD carregadas agora podem ser verificadas com um relatório de validação estruturado que identifica metadatos PDF/A-3, registro
/AFdo catálogo, registro de árvore de nomes EmbeddedFiles, consistência de nome de arquivo XMP, regras de nome de arquivo de perfil, regras/AFRelationshipe alinhamento de diretrizes XML
Version 2.199.0
Added
- Arquivos de fatura híbrida PDF/A-3 carregados agora podem ser inspecionados com APIs de leitura Factur-X e ZUGFeRD que expõem o catálogo carregado, entradas EmbeddedFiles, bytes XML incorporados, metadatos XMP do documento, detalhes do perfil de fatura detectado e extração de XML da fatura
Version 2.198.1
Added
- Os fluxos de trabalho do Factur-X PDF/A-3 agora expõem
FacturXWarningspara que os chamadores possam detectar anexos de suporte adicionais cujos tipos MIME estejam fora dos formatos recomendados de PDF, texto, imagem, CSV, XML, JSON, planilha e documentos de suporte ODS sem rejeitar o anexo
Version 2.198.0
Added
- A incorporação de faturas Factur-X PDF/A-3 agora aceita os níveis de conformidade franceses
EXTENDED-CTC-FReEXTENDED-B2B-FR, validando-os em relação ao identificador de diretriz Factur-X 1.09 EXTENDED antes de gravar os metadatos da fatura híbrida
Version 2.197.18
Fixed
- A validação do Factur-X PDF/A-3 agora trata
COMFORTcomo um nome de perfil exclusivo do ZUGFeRD 1.0, rejeitando os contêineresfactur-x.xmlatuais antes que eles possam gravar metadatos de fatura híbrida incompatíveis
Version 2.197.17
Fixed
- Os metadatos do PDF/A-3 ZUGFeRD 2.0 agora gravam o namespace herdado de extensão PDF/A
urn:zugferd:pdfa:CrossIndustryDocument:invoice:1p0#enquanto preservamzf:Versioncomo2p0, correspondendo às regras de validação de fatura híbrida antes da finalização do contêiner
Version 2.197.16
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
MINIMUMandBASIC WLDetalhes localizados da alteração no comportamento da API e nos símbolos listadosAFRelationshipData, enforcesAlternativeDetalhes localizados da alteração no comportamento da API e nos símbolos listadosXRECHNUNGDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.15
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Versionvalues1.2,2.0,2.1,2.2,2.3, and3.0Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.14
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
EN16931Detalhes localizados da alteração no comportamento da API e nos símbolos listadosEN 16931, matching current sample metadata while preserving existingEN 16931calls
Version 2.197.13
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
urn:factur-x.eu:1p0:basicandurn:factur-x.eu:1p0:extendedDetalhes localizados da alteração no comportamento da API e nos símbolos listadosBASICandEXTENDEDDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.12
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
ZUGFeRD-invoice.xmlfilename,COMFORTprofile,urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#Detalhes localizados da alteração no comportamento da API e nos símbolos listadosurn:ferd:CrossIndustryDocument:invoice:1p0Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.11
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
zugferd-invoice.xmlfilename withVersion2p0Detalhes localizados da alteração no comportamento da API e nos símbolos listadosurn:zugferd.de:2p0Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.10
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
fx:Versionas3.0while keeping ordinary Factur-X metadata at1.0Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.9
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
ConformanceLevelDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.8
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
signature-time-stampDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.7
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
signature-policy-identifierDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.6
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
ReasonDetalhes localizados da alteração no comportamento da API e nos símbolos listados/ReasonDetalhes localizados da alteração no comportamento da API e nos símbolos listadossignature-policy-identifierDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.5
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
CountryCodepolicy so current German ZUGFeRD invoices rejectMINIMUMandBASIC WL, enforceAlternativeDetalhes localizados da alteração no comportamento da API e nos símbolos listadosXRECHNUNGDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.4
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
CountryCodepolicy so German ZUGFeRD invoices can enforceAlternativeDetalhes localizados da alteração no comportamento da API e nos símbolos listadosXRECHNUNGDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.3
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
xrechnung.xmlDetalhes localizados da alteração no comportamento da API e nos símbolos listadosXRECHNUNG,factur-x.xmlDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.2
Adicionado
- PDF/A-3:
THotPDF.AddFacturXAssociatedFileDetalhes localizados da alteração no comportamento da API e nos símbolos listadosfactur-x.xmlorxrechnung.xmlin Catalog/AFand/Names/EmbeddedFilesDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Alterado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
/ModDateand raw MD5/CheckSumDetalhes localizados da alteração no comportamento da API e nos símbolos listados/ParamsDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.1
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
UseXRefStream/UseObjectStreamsDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.197.0
Alterado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
/CIDToGIDMapDetalhes localizados da alteração no comportamento da API e nos símbolos listados/CIDSetDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.196.8
Fixed
- PDF/A-1 Info dictionary and XMP metadata equivalence agora funciona corretamente e evita a saída anterior inválida ou não conforme
Version 2.196.7
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.196.6
Fixed
- PDF/A markup-annotation print flags and appearance streams agora funciona corretamente e evita a saída anterior inválida ou não conforme
- PDF/A rejection for non-standard named actions on form push buttons agora funciona corretamente e evita a saída anterior inválida ou não conforme
Version 2.196.5
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.196.4
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.196.3
Added
- graceful XFA calculate evaluation for unsupported FormCalc constructs agora está disponível, enquanto a saída existente permanece inalterada a menos que o aplicativo use essa capacidade
Version 2.196.2
Added
- XFA calculate evaluation for
.rawValue,Sum(arr[*].field), and JavaScriptthis.rawValueagora está disponível, enquanto a saída existente permanece inalterada a menos que o aplicativo use essa capacidade
Version 2.196.1
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
+ - * /Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.196.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
<calculate>Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.195.0
Adicionado
- XFA
<exData>Detalhes localizados da alteração no comportamento da API e nos símbolos listados<a href>Detalhes localizados da alteração no comportamento da API e nos símbolos listados - XFA flatten: exData rich text degraded-markup handling — unsupported inline tags (
<b>,<em>Detalhes localizados da alteração no comportamento da API e nos símbolos listados - Detalhes localizados da alteração no comportamento da API e nos símbolos listados
<exData contentType="text/html">Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.193.0
Adicionado
- XFA
<exData>Detalhes localizados da alteração no comportamento da API e nos símbolos listados<p>Detalhes localizados da alteração no comportamento da API e nos símbolos listados - Detalhes localizados da alteração no comportamento da API e nos símbolos listados
text-alignproperty on<p>:centerandrightDetalhes localizados da alteração no comportamento da API e nos símbolos listadosjustifyDetalhes localizados da alteração no comportamento da API e nos símbolos listados - Detalhes localizados da alteração no comportamento da API e nos símbolos listados
margin-top,margin-bottom,space-before, andspace-afterin the<p>style attribute, giving control over vertical gaps between paragraphs
Version 2.192.0
Added
- Ao achatar um desenho rich-text
<exData>de XFA, agora vários trechos<span>de um único parágrafo são colocados lado a lado, e cada trecho mantém seu próprio CSS inline, com negrito, itálico, cor e tamanho da fonte, enquanto a etapa anterior renderizava apenas o primeiro span - Cada trecho é posicionado pela largura medida, então os spans com estilos diferentes fluem da esquerda para a direita pela linha sem se sobrepor
- O empilhamento de parágrafos com alinhamento de texto e os links clicáveis virão em atualizações posteriores
Version 2.191.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
<exData>Detalhes localizados da alteração no comportamento da API e nos símbolos listadostext/htmlDetalhes localizados da alteração no comportamento da API e nos símbolos listados - Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.190.43
Fixed
- A recuperação de reserva de object stream agora localiza um membro pela sua posição dentro do stream em vez de tratar essa posição como um número de objeto PDF, de modo que a recuperação realmente retorna dados em vez de ficar sempre vazia
- Essa recuperação de reserva não marca mais cada objeto recuperado como página — apenas um objeto cujo dado bruto declara uma página é tipado como tal, para que membros de object stream não relacionados não inflem mais a contagem de páginas — e um objeto que permanece na lista de objetos indiretos após um erro de análise agora é removido antes de ser liberado
Version 2.190.42
Security
- Importar um arquivo de chave PKCS#12 (.pfx/.p12) agora rejeita um número de iterações PBKDF2 fora do intervalo em vez de truncá-lo em um campo de 32 bits; um arquivo manipulado não pode mais solicitar bilhões de rodadas de derivação de chave (negação de serviço) ou dobrar o valor para um resultado não previsto
Version 2.190.41
Fixed
- Recuperar um stream comprimido danificado não aceita mais como sucesso um resultado parcialmente descomprimido quando os dados se corrompem no meio do processo; a saída truncada é descartada e a próxima configuração de descompressão é testada, para que as chamadas recebam dados completos ou uma falha limpa
Version 2.190.40
Fixed
- Copiar uma página que usa vários recursos de estado gráfico (ExtGState) não mapeia mais todos para um único nome e descarta todos, mas apenas um; cada estado copiado recebe agora um nome distinto
Version 2.190.39
Fixed
- Adicionar um hiperlink a uma página carregada cuja entrada
/Annotsexistente seja uma referência pendente ou não seja um array não provoca mais falha; nesse caso, um novo array de anotações é instalado em vez de converter o valor inutilizável
Version 2.190.38
Fixed
- Dividir ou extrair páginas não atribui mais dimensões fixas de amostragem a uma imagem que falta
/Widthou/Height, o que marcava imagens de documentos não relacionados com tamanho fixo; uma dimensão ausente agora é deixada intacta - Na seleção de content-stream durante extração de página não é mais dado bônus fixo ao objeto de número 192, que alterava a pontuação do stream em qualquer documento que usasse aquele número de objeto
Version 2.190.37
Fixed
- Reparar uma página que referencia uma imagem faltante (XObject) ou recurso de estado gráfico (ExtGState) durante cópia ou divisão agora resolve o objeto de origem por seu número de objeto em vez de tratar o número como posição de lista, então copia o objeto correto — ou nenhum — em vez de um não relacionado, e uma cópia com falha não mais dessreferencia um resultado nil
Version 2.190.36
Fixed
- Editar e regravar uma página cujo conteúdo está distribuído entre vários content streams não renderiza mais os streams anteriores duas vezes — o resultado combinado é mantido em um único stream e os demais são esvaziados, e os streams são unidos com espaço em branco para que tokens adjacentes não se fundam em um token inválido (ISO 32000-1 §7.8.2)
- Uma página que tem recurso
/XObjectmas sem recurso/Fontnão deixa mais nomes de fonte da página anterior; a lista de nomes de fonte agora é reiniciada em vez da lista de nomes de imagem
Version 2.190.35
Fixed
- Subconjunto de fonte TrueType embutida com tabela de localização de glifos (
loca) corrompida não lê mais fora dos limites — agora um par de deslocamento invertido ou fora de faixa é ignorado em vez de estourar para um comprimento de cópia enorme, e a tabela de métricas horizontais (hmtx) recebe validação por limites antes de ser copiada
Version 2.190.34
Fixed
- Copiar metadados de documento (etiquetas de página e destinos nomeados) para um documento que já possui essas entradas não vaza mais valores anteriores; as entradas são agora substituídas pelo próprio caminho de substituição do dicionário
Version 2.190.33
Fixed
- Carregar certos PDFs 1.6 cujas páginas são reconstruídas a partir de object streams não compartilha mais valores de dicionário entre dois objetos de página, o que podia liberar o mesmo objeto duas vezes quando o documento era liberado; agora os valores são copiados em profundidade
Version 2.190.32
Fixed
- O escaneamento de conteúdo da página para detectar texto simples não gera mais erro de intervalo em uma linha de conteúdo vazia após recorte ou sem parêntese de fechamento; agora a verificação trata o caso vazio e limita o escaneamento ao comprimento da cadeia
Version 2.190.31
Fixed
- Renderizar texto que contém o code point U+FFFF não grava mais um elemento fora do fim da tabela interna de glifos de uma fonte; a tabela cresce conforme necessário antes do armazenamento da entrada do glifo
Version 2.190.30
Fixed
BeginParagraphagora rejeita índice de parágrafo 0 em vez de ler antes do início do array de parágrafos, e libera qualquer parágrafo já em andamento para que chamadas repetidas não gerem vazamentosEndParagraphagora limpa sua referência após liberar o parágrafo atual, de modo que chamá-la duas vezes não libera o mesmo objeto pela segunda vez
Version 2.190.29
Security
- Vectores de inicialização AES y chaves agora não são mais gerados a partir de uma fonte previsível sem criptografia quando a fonte aleatória do sistema está indisponível por pouco tempo; a biblioteca passa a rejeitar a criptografia em vez de produzir IV ou chave fraca e previsível
Fixed
- Calcular um hash MD5 de cadeia vazia não dessreferencia mais ponteiro inválido
Version 2.190.28
Fixed
- Renderizar metarquivos EMF que contêm registros
PolyDrawagora aplica o sinalizador de tipo de cada ponto em vez de ler o do ponto seguinte; na variante de 16 bits, também não reaproveita o sinalizador do primeiro ponto para todos os pontos, então segmentos de linha, curva e fechamento são desenhados corretamente e o parser não lê após o fim do array de pontos
Version 2.190.27
Fixed
- Decodificar um stream
LZWDecodeque declara o Predictor TIFF 2 com valorColumnsouColorszero não lança mais erro de divisão por zero; a etapa do predictor é ignorada quando esses valores não podem ser usados - O decodificador LZW de argumento único agora inicializa totalmente seus parâmetros de decodificação, removendo qualquer dependência de valores de pilha não inicializados
Version 2.190.26
Fixed
- Calcular o dígito de verificação Code 93 não reinicia mais o contador de peso incorreto, para que dados com mais de 14 caracteres gerem os símbolos de verificação corretos
- O conjunto B de código 128 agora codifica corretamente a letra minúscula
iem vez de substituí-la por espaço, o que corrompia o símbolo e seu checksum - O cálculo do dígito de controle dos códigos MSI agora usa o valor numérico de cada dígito em vez de seu código de caractere, seguindo leitores MSI padrão
- Desenhar código de barras com largura de módulo grande não extrapola mais um contador interno, o que podia produzir larguras de barras negativas ou distorcidas
- Desenhar código de barras com dados que falham na validação não mais vaza mais a fonte, caneta e pincel salvos
- Rotina isolada
DrawTextagora restaura a fonte de canvas realmente salva, em vez de redefinir a fonte da chamada para uma padrão vazio
Version 2.190.25
Fixed
- Decodificar um stream
ASCIIHexDecode,ASCII85DecodeouRunLengthDecodetruncado ou malformado sem marcador de fim de dados não entra mais em loop infinito consumindo memória — os decodificadores agora param quando a entrada é esgotada em vez de reprocessar um byte antigo - O filtro
ASCIIHexDecodenovamente rejeita caracteres hexadecimais ilegais; um erro de precedência de operador deixava passar alguns bytes fora de faixa pela validação
Version 2.190.24
Fixed
- Copiar ou mesclar objetos cujo dicionário aninhado seja reconstruído durante recuperação de documento não corrompe mais dicionário nem vaza memória — o rotina armazena instâncias em posições de itens internos, e entradas descartadas sem liberar; substituições e remoções agora operam corretamente nos registros de item
Version 2.190.23
Fixed
- Incorporar uma fonte Type 0 (CID) mantém agora seu mapa
/ToUnicodemesmo quando comprimir o mapa de caracteres não gera saída — o caminho de fallback antes não registrava o mapa, então texto dessa fonte não podia ser copiado nem extraído, e um stream podia ser liberado duas vezes; o mapa é agora sempre armazenado, sem compressão se necessário, e cada stream é liberado exatamente uma vez
Version 2.190.22
Fixed
- Carregar uma cross-reference table que referencia objetos com número de geração 10 ou superior — comum em PDFs revisados por muitas atualizações incrementais — não grava mais fora da tabela interna de detecção duplicada; tais entradas agora são aceitas sem desduplicação em vez de corromper o heap, e uma entrada corrompida com número de objeto igual a zero é ignorada em vez de indexar antes do início da tabela
Version 2.190.21
Fixed
- Passar o nome de fonte com 32 caracteres ou mais para
SetFontnão excede mais mais campo de nome de face de tamanho fixo da estrutura interna de fonte — o nome agora é copiado com a rotina de campo com limite de comprimento já usada para consultar fontes instaladas, então um nome longo é truncado com segurança em vez de corromper a pilha
Version 2.190.20
Fixed
- Adicionar uma imagem não monocromática com compressão CCITT Group 3/4, ou como máscara de imagem de 1 bit, não corrompe mais o heap — o construtor de imagem antes liberava seu stream e engolia o erro de conversão no caminho de falha, deixando o destruidor liberar o mesmo stream novamente; agora o erro propaga para que o objeto de imagem falhe a montagem de forma limpa
- Criar tabela de busca de paleta para imagem indexada de 8 bits não solicita mais uma entrada a mais do que o buffer de busca consegue conter, removendo uma gravação fora dos limites que poderia ocorrer quando o bitmap de origem traz uma paleta completa de 256 entradas
Version 2.190.19
Security
- Decodificar stream
ASCII85Decodeque usa a abreviação de zeroszjá não grava fora do buffer de decodificação — o buffer de saída agora tem tamanho para expansão máxima possível, corrigindo um estouro de heap que um PDF manipulado poderia provocar
Version 2.190.18
Security
- Importar material de assinatura (PKCS#12 .pfx/.p12) mal formado durante assinatura digital não lê mais além do fim do buffer — um campo ASN.1 de tamanho enorme que antes passava pela checagem de limites é rejeitado, para que material não confiável não provoque leitura fora dos limites
Version 2.190.17
Added
- O carregador padrão de documento agora lê PDFs de referência híbrida — arquivos cuja tabela de referências cruzadas possui uma seção lateral
/XRefStm, gerada por exportadores comuns de Office — para queLoadFromFilecarregue os objetos que esses arquivos mantêm em object streams comprimidos em vez de ver apenas parte do documento - Cross-reference streams e object streams armazenados sem filtro de compressão agora carregam corretamente; ISO 32000-1 permite que a chave
/Filteresteja ausente
Fixed
- Regravar um documento híbrido de referência carregado com proteção AES-256 —
ActivateProtectionmaisSaveLoadedDocument, ouEncryptFile— não falha mais com erro de índice de lista, e a saída cifrada mantém todos os objetos do arquivo de origem
Version 2.190.16
Changed
- A localização do cabeçalho de objeto e da palavra-chave
streamdurante regravações da API de Arquivo Direto não reinicia mais a varredura inicial da prévia de cada objeto nem a duplica na repetição, deixando a criptografia AES-256 de um documento de referência de 2 GB com 1,67 milhões de objetos cerca de 2.3 vezes mais rápida (de 49 para 14 segundos), a descriptografia cerca de 2.7 vezes mais rápida (de 43 para 16 segundos) e uma reescrita direta completa de cerca de 10 para 6 segundos
Version 2.190.15
Fixed
LoadFromFileeLoadFromStreamnão encerram mais antes do início da análise quando há bytes antes do cabeçalho%PDF— arquivos salvos dentro de invólucros HTTP ou Signed HTTP Exchange (SXG), capturas de e-mail e contêineres semelhantes agora alcançam as rotinas de recuperação do documento em vez de falhar com erro de conversão de número de versão- A recuperação de documentos com dados de cross-reference inutilizáveis agora usa a contagem de páginas da árvore de páginas ativa em vez de contar cada objeto do tipo página no arquivo, para que uma página apagada por atualização incremental não seja revivida e a contagem informada coincida com outros leitores
- Quando um documento danificado é recuperado por varredura, revisões de objeto gravadas mais tarde no arquivo passam a ter precedência sobre revisões anteriores do mesmo número de objeto, seguindo a semântica de atualização incremental
Version 2.190.14
Added
- A API de Arquivo Direto agora lê PDFs de referência híbrida — arquivos cuja tabela de cross-reference possui uma seção lateral
/XRefStm, gerada por exportadores comuns de Office — para que abertura direta, cópia, reescrita e criptografia AES-256 vejam os objetos compactados que esses arquivos mantêm em object streams em vez de ignorá-los
Fixed
- Objetos liberados por uma revisão mais recente de um PDF incrementamente atualizado não podem mais ser revividos a partir de uma revisão anterior durante reescrita direta
- Entradas free de cross-reference não geram mais limites de objeto inexistentes, que podiam truncar objetos armazenados perto do início de um arquivo durante reescritas diretas de documentos com números de objeto reciclados
Version 2.190.13
Changed
- Ao abrir PDFs cujo catálogo do documento fica dentro de um object stream compactado com
DAOpenFileReadOnlyouDACopyFilenão é mais necessário fazer carregamento completo para descobrir a contagem de páginas: em um arquivo de referência de 1.25 GB a abertura direta caiu de cerca de 0.9 segundos para alguns milissegundos e a cópia leve caiu pela metade
Fixed
- A API de Arquivo Direto agora segue a cadeia
/Prevdo cross-reference stream, portanto PDFs incrementamente atualizados expõem todos os objetos para abertura direta, cópia, reescrita e criptografia AES-256 em vez de apenas a revisão mais recente - Objetos liberados por revisão mais recente em PDF incrementamente atualizado não podem mais ser revividos a partir de seção de cross-reference anterior em reescrita direta
Version 2.190.12
Changed
- As rotas de reescrita da API de Arquivo Direto —
EncryptFile,DecryptFileeDASaveAsFileapós alterações no documento — agora leem a origem por janela deslizante e agregam escritas de saída, de modo que o processamento de PDFs muito grandes com milhões de objetos fica várias vezes mais rápido: em benchmark de 2 GB, a criptografia AES-256 caiu de cerca de 153 para 49 segundos, a descriptografia de cerca de 121 para 43 segundos e a reescrita direta completa de cerca de 48 para 10 segundos - Corpos de objeto já mantidos em memória não são mais buscados em disco novamente enquanto uma reescrita direta os copia para o arquivo de saída
- A resolução de referências indiretas
/Lengthdurante uma reescrita AES-256 direta não reabre mais o arquivo de origem a cada consulta
Version 2.190.11
Added
- Planar formulário ficou mais simples de acionar via código de aplicação:
FlattenFormFieldsretorna a quantidade de campos de AcroForm que foram nivelados, e os novos helpersHasFormFieldseFormFieldExistspermitem que a aplicação verifique PDFs carregados ou formulários em andamento antes de remover campos interativos - As demos de CLI do Preflight agora cobrem saída CSV, validação de perfil e preset, caminhos de saída únicos por arquivo, relatórios de validação PDF/VT, resumos agregados e links de painel, enquanto as demos de GUI do Preflight Report validam perfis antes da geração e mantêm a saída CSV filtrada por perfil em formato CSV
Version 2.190.10
Fixed
- Após MovePage, o documento passa novamente a ter uma página atual ativa, igual ao DeletePage: desenhar logo após mover agora funciona sem selecionar página primeiro, a operação cai na mesma página que era atual antes do movimento e fechar o documento imediatamente após o movimento grava todas as fontes com o caminho normal
Version 2.190.9
Fixed
- Documentos finalizados logo após MovePage não perdem mais fontes: os dados de fonte compartilhada pendentes de páginas já escritas agora sempre são emitidos ao fechar o documento, mesmo quando nenhuma página está ativa nesse momento, garantindo recursos de fonte corretos e renderização correta do texto
- Voltar a uma página anterior e escolher uma fonte adicional não sobrescreve mais uma fonte já usada nessa página: nomes de recurso pendentes no registro de fontes compartilhadas ficam reservados, assim cada fonte mantém seu nome e ambas renderizam corretamente
- Se a compressão de uma fonte embutida falhar, o programa da fonte agora é armazenado sem compressão e o objeto da fonte é concluído normalmente, em vez de gerar entrada de fonte incompleta que alguns visores não renderizavam
- Com
SimpleLatinFontshabilitado, texto desenhado com Symbol ou ZapfDingbats mantém significado simbólico: fontes simbólicas ficam excluídas do atalho de texto sem embutir, que alteraria quais glifos aparecem (ISO 32000-1 §9.6.6.2) - A geração de PDF não dispara mais erros de estouro inteiro em projetos compilados com verificação de estouro ativa quando o subset de fonte está habilitado, e reutilizar a mesma instância do componente entre vários documentos não vaza mais memória em fluxos de trabalho raros que reiniciam ou reestruturam o documento no meio do caminho
Version 2.190.8
Fixed
- O kerning contextual não é mais aplicado duas vezes quando uma fonte fornece várias regras contextuais em uma única consulta OpenType: as subtabelas de consulta são testadas em ordem e a primeira correspondência vence, conforme especificação OpenType
- Coincidências contextuais sobrepostas não acumulam mais seus ajustes: após uma regra posicional contextual disparar, a busca segue além do trecho de glifos correspondente, para que padrões repetidos recebam cada ajuste de kerning exatamente uma vez
- Reforço do parsing de OpenType contra fontes truncadas ou malformadas: o despacho de consulta aninhado de posicionamento e substituição agora valida a extensão total de cada registro de tabela antes de lê-lo
Version 2.190.7
Fixed
- Copiar/colar e extrair texto agora recupera caracteres originais quando recursos OpenType substituem um caractere em cadeia, como versaltes por alternantes estilísticos ou figuras oldstyle por figuras tabulares: o mapa ToUnicode finaliza o glifo de volta para o texto fonte em vez de um codepoint privado (ISO 32000-1 §9.10.3)
- A funcionalidade de frações (
frac) não emite mais mistura parcialmente convertida de glifo de fração e glifo simples quando o orçamento de codepoint interno termina no meio da sequência: a execução de texto afetada volta para os glifos originais como um bloco
Changed
- As consultas de um recurso OpenType agora seguem a ordem de índice LookupList da especificação OpenType, independentemente da ordem em que a fonte lista no seu recurso de feature
Version 2.190.6
Fixed
- Vários acentos em uma única ligadura agora se posicionam corretamente em texto RTL: as segunda e seguintes marcas aderem ao componente da ligadura (GPOS mark-to-ligature) em vez de cair no início da linha
- Marcas empilhadas que compartilham o mesmo componente de ligadura, como shadda seguida de um sinal vocálico, agora se empilham umas sobre as outras em vez de se sobrepor ao mesmo ancoramento
- Contagem de componentes de ligadura agora segue dados de ligação GPOS, então caracteres pré-compostos com mapeamentos longos de extração de texto não deslocam acentos finais para fora do alcance
- Um caractere suplementar único não é mais interpretado como ligadura durante posicionamento de marcas
- Um acento que a fonte casa como componente real de ligadura não é mais desenhado novamente ao lado da ligadura
- Metadados de componente de ligadura não vazam mais entre chamadas de saída de texto não relacionadas
Version 2.190.5
Added
- Texto Hanifi Rohingya ganha moldagem cursiva RTL com a nova propriedade
AutoShapeHanifiRohingya: quando habilitada, o motor seleciona formas inicial, medial, final e isolada da fonte para que o texto siga o comportamento correto de ligação - Texto Tai Viet ganha reordenação visual com a nova flag de modelagem
sfTaiVietReorder: vogais que aparecem antes da consoante na ordem visual agora são exibidas no lugar certo em vez de seguirem a ordem de digitação - Texto Meetei Mayek ganha reordenação silábica com a nova flag de modelagem
sfMeeteiMayekShaping: sinais de vogal à esquerda movem-se à frente da consoante para exibição visual correta - Os três sistemas seguem o modelo opt-in atual: documentos que não habilitam a nova propriedade ou flags produzem saída idêntica byte a byte
Version 2.190.4
Fixed
- Texto LTR não é mais invertido quando índice de glifo de um caractere cai por acaso na janela numérica reservada pelo detector RTL para pontos de código hebreus e árabes; o detector agora ignora totalmente dados de índice de glifo
- Documentos que misturam letras latinas, gregas ou cirílicas incomuns em fontes grandes renderizam na ordem original em todos os casos
Version 2.190.3
Fixed
- Um único high surrogate seguido de certos caracteres BMP não gera mais codepoint suplementar durante detecção RTL: entrada UTF-16 malformada mantém ordem lógica em vez de ser agrupada e invertida como texto Adlam ou Hanifi Rohingya
- Pares substitutos bem formados para Adlam e Hanifi Rohingya permanecem íntegros e continuam renderizando em RTL
Version 2.190.2
Fixed
- Bandeiras de modelagem agora são isoladas por script: habilitar
sfMeeteiMayekShapingsozinho não reordena mais Devanagari, Bengali, Tamil, Khmer, Myanmar ou outros textos de escrita índica, e habilitarsfIndicShapingousfIndicGSUBsozinho não afeta texto Meetei Mayek - Saída permanece byte-a-byte idêntica para toda escrita cuja flag fique desativada, restaurando comportamento opt-in documentado para documentos multiescritura
Added
ApplyIndicReorderganha sobrecarga com conjunto explícito de recursos para consultas de reordenação por flags; a forma sem parâmetros existente mantém cobertura de script completo
Version 2.190.1
Fixed
- A classificação de letras Meetei Mayek contra Unicode Character Database foi concluída: as letras PHAM, ATIYA e GOK até BHAM (U+ABD0–U+ABDA) agora iniciam sílabas, para que vogais de lado esquerdo e marcas empilhadas subsequentes reordenen corretamente quando
sfMeeteiMayekShapingestá habilitado - Palavras baseadas na letra portadora de vogal ATIYA, muito comum, mantinham seus sinais de vogal em ordem lógica; agora produzem o mesmo ordenamento visual que o restante do bloco Meetei Mayek
Version 2.190.0
Fixed
- Marcas combinatórias (acentos, harakat árabe, niqqud hebraico, vogais tailandesas e laosianas) agora aparecem na posição correta acima ou abaixo da letra em todos os leitores PDF; antes elas podiam deslocar-se para perto do início da linha
- Marcas combinatórias empilhadas agora acumulam sobre a marca abaixo delas em vez de colapsarem para o caractere base quando a fonte também define ancoragem de base para a marca superior
- Offsets de conexão cursiva e adjunção mark-to-ligature seguem a especificação de objeto de texto PDF (ISO 32000-1), eliminando deriva de posicionamento após texto decorado
- Texto depois de uma marca posicionada ou sequência cursiva continua na posição de caneta correta
Changed
- Kerning, posicionamento de marca e adjunção cursiva agora combinam dentro da mesma execução de texto em vez de se excluírem mutuamente
Version 2.189.1
Fixed
- Texto RTL aplica agora a componente de avanço do kerning GPOS na largura da execução, para que texto após uma execução RTL com kerning continue na posição correta
- Execuções RTL com kerning e rise vertical aplicam o mesmo ajuste de avanço no último glifo
Version 2.189.0
Added
- Expansão do modelado OpenType com posicionamento GPOS contextual, posicionamento de distância, integração de reordenação Khmer e Myanmar, alternativas verticais para fontes verticais e switches tipográficos adicionais para formas de maiúsculas, larguras de algarismos, inferiores científicos, numeradores, denominadores e zero barrado
Changed
- Criptografia e descriptografia de arquivo AES-256 agora usam caminho de reescrita direta para PDFs grandes, evitando carregamento completo em memória para entradas compatíveis, incluindo arquivos de vários gigabytes
- Win32 AES-256-CBC agora usa o mesmo backend AES-NI com verificação CPUID de Win64, com fallback puro em C em processadores sem suporte a AES-NI
Version 2.188.2
Added
sfStylisticAlternatesagora aplica automaticamente substituições OpenTypesaltdurante saída de texto Unicode quando a fonte registrada expõe alternantes estilísticos correspondentes
Fixed
- Consultas de pares GPOS e posicionamento de marca rejeitam agora offsets de classe e de ancoragem malformados com contagens grandes de fonte que poderiam estourar aritmética de 32 bits, evitando leituras inseguras de fonte danificada ou maliciosa
- Consultas de posicionamento de marca GPOS agora respeitam filtro de marca do LookupFlag, para que fontes que pedem ignorar marcas, tipos de anexo de marca ou conjuntos de filtragem não apliquem por engano esses ancoramentos
- A modelagem posicional Adlam agora usa a mesma proteção de disponibilidade de mapa Unicode dos caminhos de modelagem Syriac, N'Ko e Mongolian
Version 2.188.1
Fixed
- Texto árabe e hebraico RTL mantém kerning GPOS de pares quando posicionamento de marca também está habilitado, para que harakat e niqqud ancorem corretamente sem perder ajustes de espaçamento do glifo base
Version 2.188.0
Added
- Nova opção de modelagem
sfFractionsaplica automaticamente substituições OpenTypefracdurante saída Unicode de texto, incluindo dígitos do numerador, barra de fração e dígitos do denominador com contexto encadeado para ToUnicode retornar texto original
Version 2.187.0
Added
- Novas opções de modelagem passam a aplicar automaticamente features tipográficas OpenType de substituição única durante saída Unicode:
sfSmallCapsparasmcp,sfCapsToSmallCapsparac2sc,sfOldstyleFiguresparaonum,sfLiningFiguresparalnum,sfSuperscriptsparasups,sfSubscriptsparasubsesfOrdinalsparaordn
Version 2.186.0
Added
- As novas opções de modelagem
sfDiscretionaryLigaturesesfHistoricalLigaturesaplicam automaticamente consultas OpenTypedligehligdurante saída Unicode de texto, emitindo IDs de glifo nativas da fonte com mapeamentos ToUnicode e permanecendo desativadas por padrão
Version 2.185.1
Fixed
- Letras de Arabic Extended-B U+0870-U+089F agora participam da ligação de produtor para árabe quando modelagem árabe automática está habilitada, permitindo que fontes com OpenType árabe compatível emitam formas conectadas com mapeamentos ToUnicode
Version 2.185.0
Added
- Modelagem nativa GSUB árabe para saída de texto opt-in: quando
sfArabicGSUBestá habilitado, HotPDF aplica as consultas da fonte registradainit,medi,fina,isol,rlig,caltercltem corridas árabes lógicas e emite os IDs de glifo contextuais resultantes com ToUnicode - A nova opção de modelagem
sfCursiveAttachmentaplica GPOS de entrada/saída cursiva durante saída Unicode, permitindo que a conexão cursiva de glifos árabes usando rota GSUB nativa alinhe pelos próprios dadoscursda fonte
Version 2.184.2
Fixed
- Texto de fallback Adlam RTL agora preserva a ordem válida de pares substitutos UTF-16 quando a fonte não consegue aplicar substituições posicionais Adlam, e N'Ko U+07FA agora age apenas como caractere de união para que letras N'Ko adjacentes se conectem sem substituir U+07FA por forma posicional
Version 2.184.1
Fixed
- A colocação mark-to-ligature agora também cobre ligaduras árabes RTL: um harakat em uma ligadura como Allah é posicionado no componente correto da ligadura, enquanto o posicionamento por componente anterior se aplicava apenas a texto LTR e o harakat RTL permanecia na largura de avanço da ligadura: ligaduras árabes já formadas (como Allah e lam-alef) agora são reconhecidas para rastrear componentes, e a opção mark-to-ligature continua desativada por padrão
Version 2.184.0
Added
- Rastreamento de cluster e componente do lado do produtor no pipeline de modelagem de texto: conforme as ligaduras são formadas, o motor registra quais caracteres originais cada glifo de saída cobre e quantos componentes de ligadura contém, criando base para posicionamento de marca e extração de texto precisos em execuções com ligadura
- Marcas combinatórias agora são anexadas ao componente correto de uma ligadura (GPOS mark-to-ligature) quando a nova opção mark-to-ligature está habilitada, para texto ligaturado LTR; a saída não muda com a opção desativada
- Ligaduras com múltiplos componentes geradas por esse caminho carregam mapeamentos de extração de texto precisos, para que copiar e colar recupere a sequência de caracteres original
Version 2.183.0
Added
- Pré-processamento da escrita Javanese para posicionamento correto de vogais: quando a opção de reordenação Javanese está ativada, sinais vocálicos pré-base como taling e dirga mure são movidos para antes do grupo consonantal, incluindo pilhas unidas por pangkon, antes da renderização, para que o texto fique na ordem visual correta; a saída não muda quando a opção está desativada
Version 2.182.0
Added
- Pré-processamento de texto Hebrew para posicionamento correto de pontos vocálicos: quando a opção de reordenação Hebrew está ativada, pontos vocálicos, dagesh, pontos shin e sin e marcas de cantilação são colocados em ordem canônica antes da renderização, permitindo que o posicionamento de marcas funcione mesmo quando a origem usa outra ordem; a saída não muda quando a opção está desativada
Version 2.181.0
Added
- Pré-processamento de texto Thai e Lao para posicionamento correto de marcas: quando a opção de reordenação Thai/Lao está ativada, SARA AM é separado em suas partes superior e final, e marcas vocálicas ou tonais são colocadas em ordem canônica antes da renderização, permitindo alinhar tons e vogais corretamente; a saída não muda quando a opção está desativada
Version 2.180.0
Added
- Formação automática do lado do produtor para texto Adlam, a escrita Fula da África Ocidental em U+1E900-U+1E95F: quando AutoShapeAdlam está ativado, as letras são renderizadas nas formas cursivas corretas por substituições posicionais OpenType, pares substitutos são tratados corretamente e copiar/colar recupera as letras originais; a saída não muda quando a opção está desativada
Version 2.179.0
Added
- Formação automática do lado do produtor para texto N'Ko em U+07C0-U+07FF: quando AutoShapeNko está ativado, as letras são renderizadas nas formas cursivas corretas por substituições posicionais OpenType, e copiar/colar recupera as letras originais; a saída não muda quando a opção está desativada
Version 2.178.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.177.0
Added
- Suporte à leitura de kerning vertical OpenType GPOS por
vkrne alternativos proporcionais verticais porvpal, expondo o ajuste de avanço vertical que a fonte define entre glifos empilhados para uso em saída de texto vertical
Version 2.176.0
Fixed
- O kerning agora aplica os deslocamentos de posicionamento de glifo GPOS, incluindo XPlacement horizontal e YPlacement vertical, que antes eram lidos mas descartados; fontes que refinam posições pela função kern agora renderizam esses deslocamentos junto com o ajuste de avanço em texto LTR e RTL
Version 2.175.0
Fixed
- Marcas combinantes em camadas em texto RTL agora são posicionadas corretamente, como uma letra Arabic com shadda e vogal ou pontos Hebrew empilhados; cada marca adicional se empilha sobre a marca abaixo em vez de cair na letra base
Version 2.174.0
Added
- Suporte a anexo Mark-to-Ligature OpenType GPOS LookupType 5, que informa a posição de uma marca combinante em um componente específico da ligadura para que cada marca seja ancorada à sua própria parte de uma ligadura com várias letras
Version 2.173.0
Added
- Suporte à leitura de anexo cursivo OpenType GPOS LookupType 3, expondo as âncoras de entrada e saída usadas por escritas cursivas como Arabic Nastaliq para alinhar letras conectadas em uma linha de base fluida
Version 2.172.0
Added
- O kerning agora é aplicado a texto RTL, como Arabic e Hebrew, quando o kerning está ativado; antes o caminho de exibição RTL posicionava apenas marcas combinantes e deixava o kerning sem aplicação
- O kerning contextual OpenType GPOS com LookupType 7 Context e LookupType 8 Chained Context agora é emitido para texto LTR e RTL, de modo que o kerning dependente de contexto ajusta a saída em vez de apenas ser lido
Version 2.171.0
Added
- Suporte a kerning contextual OpenType GPOS com posicionamento LookupType 7 Context e LookupType 8 Chained Context, permitindo ler da fonte o kerning dependente de contexto e usá-lo no posicionamento do texto
Version 2.170.0
Added
- Aplicação automática opcional do recurso OpenType
loclLocalized Forms, selecionando formas de letras específicas do idioma, como formas cirílicas sérvias e búlgaras ou Turkish dotless i, quando um idioma de formação está definido
Version 2.169.0
Added
- Aplicação automática opcional do recurso OpenType
caltContextual Alternates ao texto no script ativo, com glifos contextuais não codificados incorporados por mapeamento ToUnicode para que copiar e colar recuperem o texto original
Version 2.168.0
Added
- Aplicação automática opcional do recurso OpenType
rcltRequired Contextual Alternates ao texto Arabic formado pela opção contextual-alternates, para que a seleção contextual de letras não precise mais de um shaper posterior
Version 2.167.0
Added
- OpenType GSUB shaping for Devanagari and Indic scripts agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
- the new Indic GSUB mode remains opt-in and separate from reorder-only shaping agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
- ToUnicode recovery for producer-side complex shaping codepoints agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.166.0
Added
- producer-side Mongolian shaping with OpenType GSUB agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
- ToUnicode extraction for shaped Mongolian letters agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.165.1
Fixed
- right-to-left ordering for shaped Syriac and Arabic Supplement / Extended-A words agora funciona corretamente e evita a saída ou o diagnóstico incorreto anterior
Version 2.165.0
Added
SimpleLatinFontscompact WinAnsi output for printable ASCII standard-font text agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.164.0
Changed
- document-wide shared font embedding across multiple pages agora se comporta de forma consistente nas páginas geradas, preservando renderização e extração de texto
Version 2.163.3
Alterado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
JEPSCD+ArialMTDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.163.2
Alterado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
CompressionDetalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.163.1
Fixed
- valid TrueType fonts without optional hinting tables agora funciona corretamente e evita a saída ou o diagnóstico incorreto anterior
Version 2.163.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.162.0
Added
- OpenType
liga/cligLatin ligature folding throughsfStandardLigaturesagora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada - copy, paste, and search recovery for folded Latin ligatures agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.161.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.160.0
Added
- OpenType GSUB groundwork for future Tibetan rendering agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.159.0
Added
- GPOS mark positioning for Hebrew niqqud and Arabic harakat in right-to-left runs agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.158.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.157.0
Added
- producer-side shaping for Arabic Supplement and Arabic Extended-A letters agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
- ToUnicode recovery for newly shaped Arabic Supplement and Extended-A letters agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.156.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.155.0
Added
- GPOS Mark-to-Base placement for combining marks in Thai, Lao, Hebrew, and Latin text agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.154.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.153.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.152.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.151.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.150.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Corrigido
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.149.0
Adicionado
- Detalhes localizados da alteração no comportamento da API e nos símbolos listados
Version 2.148.1
Changed
- more verifiable Memory Stream and PDF Info demo output agora se comporta de forma consistente nas páginas geradas, preservando renderização e extração de texto
Version 2.148.0
Added
- XFA fields below the first page flowing onto following pages agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.147.4
Added
- diagnostics for oversized content-sized XFA text fields and labels agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.147.3
Added
- one-line minimum height for empty growable XFA text agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.147.2
Added
- layout for XFA text without an explicit width agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.147.1
Added
- automatic height for XFA text with width but no height agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.147.0
Added
- internal text measurement groundwork for content-sized XFA text agora está disponível; a saída existente não muda a menos que a opção relacionada seja ativada
Version 2.146.4
Fixed
- positive page-height normalization for loaded PDFs with descending box coordinates agora funciona corretamente e evita a saída ou o diagnóstico incorreto anterior
- unchanged drawing positions, field rectangles, text, and images on affected loaded pages agora funciona corretamente e evita a saída ou o diagnóstico incorreto anterior
Version 2.146.3
Fixed
- pagination for repeating fixed-position XFA data sections agora funciona corretamente e evita a saída ou o diagnóstico incorreto anterior
- more accurate off-page diagnostics for XFA forms loaded from existing PDFs agora funciona corretamente e evita a saída ou o diagnóstico incorreto anterior
Version 2.146.2
Added
- A paginação de XFA agora abrange várias áreas de conteúdo: quando uma página define várias regiões de conteúdo, o conteúdo fluido as preenche em ordem—continua na próxima região da mesma página antes de passar para uma nova página—de modo que os layouts de formulário com várias colunas e regiões sejam paginados corretamente
- Seções repetitivas longas agora são paginadas ao longo de várias páginas: uma lista orientada por dados que se repete uma vez por registro e ultrapassa sua área de conteúdo continua nas páginas seguintes sem perder nenhuma linha
- As quebras de seção agora são respeitadas: uma seção de formulário marcada para começar em uma nova página começa em uma página nova mesmo quando a página atual ainda tem espaço, enquanto uma quebra de região move a seção para a próxima área de conteúdo
Version 2.146.1
Added
- Os formulários XFA agora são paginados automaticamente: quando o conteúdo fluido—como uma lista longa baseada em dados ou um conjunto de campos—fica mais alto que a área de conteúdo da página, o transbordamento continua em uma nova página em vez de ultrapassar a borda inferior; formulários de página única não são afetados e produzem uma saída idêntica
Version 2.146.0
Changed
- O achatamento de XFA para AcroForm agora encaminha cada campo e gráfico achatado por meio de uma atribuição de página por item—a base interna para a paginação de várias páginas nas próximas versões; formulários de página única não são afetados e produzem uma saída idêntica
Version 2.145.4
Changed
- O layout de tabela e da esquerda para a direita (lr-tb) do XFA foi validado em formulários XFA reais—faturas, pedidos de compra, solicitações de pagamento e grades de dados—confirmando que tabelas orientadas por dados geram uma linha por registro e que cada célula fica na linha e na coluna corretas, sem perda de campos em comparação com o tratamento posicional anterior
- Quando uma coluna de tabela com largura automática (uma entrada
-1emcolumnWidths) contém apenas células expansíveis sem largura mensurável, a coluna descartada agora é relatada por meio deXFAFlattenWarningsem vez de ser omitida silenciosamente
Version 2.145.3
Added
- As colunas de tabela definidas com largura automática (uma entrada
-1emcolumnWidthsou colunas não especificadas) agora se ajustam à sua célula mais larga, de modo que cada célula de uma coluna de largura automática fica alinhada na mesma posição em todas as linhas; tabelas que combinam larguras de coluna fixas e automáticas agora são dispostas de forma consistente
Version 2.145.2
Added
- As tabelas XFA orientadas por dados agora se expandem corretamente: uma linha de tabela marcada para repetição (com
<occur>) gera uma linha por registro de dados, de modo que faturas e listas de itens são achatadas em uma linha por entrada em vez de uma única linha de modelo; a marcação de linha sem conteúdo não desloca mais as colunas
Version 2.145.1
Added
- Os formulários XFA agora podem usar o layout de tabela: um subformulário com
layout="table"organiza seus filhoslayout="row"em colunas alinhadas, com as larguras das colunas obtidas docolumnWidthsda tabela e a altura de cada linha definida por sua célula mais alta. Tabelas achatadas—notas fiscais, listas de itens, grades de dados—agora posicionam suas células nas linhas e colunas corretas em vez de se sobreporem na borda esquerda
Version 2.145.0
Added
- Os formulários XFA agora podem usar um layout em mosaico da esquerda para a direita: um subform com
layout="lr-tb"organiza seus elementos filhos de campo e desenho lado a lado, quebrando para uma nova linha quando o próximo não couber na largura do contêiner. Formulários achatados que distribuem seus controles em uma grade com quebra de linha—em vez de em uma única coluna vertical—agora os posicionam corretamente
Version 2.144.5
Fixed
- Os campos de formulário XFA que omitem sua posição x e/ou y—um atalho comum e válido no layout posicionado, em que a coordenada omitida assume a origem do contêiner—não são mais descartados. Formulários reais cujos blocos de endereço, seções e tabelas dependiam desse padrão agora são achatados com seu conjunto completo de campos, em vez de perdê-los silenciosamente
- As subseções aninhadas dentro de um formulário com fluxo de cima para baixo agora avançam o cursor vertical pela sua própria altura de conteúdo, de modo que seções vizinhas se empilham uma abaixo da outra em vez de se sobreporem na mesma posição. Formulários com fluxo de várias seções agora são dispostos na ordem vertical correta
Version 2.144.4
Added
- Formulários XFA com seções repetidas controladas por dados agora são suportados: um subformulário com
<occur max="-1"/>(ou qualquer máximo não padrão) é expandido em uma instância por grupo de dados correspondente no pacotedatasets, com cada instância vinculando seus campos aos valores da linha correspondente. Formulários que usam vinculação implícita de datasets para gerar listas ou tabelas de tamanho variável agora são achatados com o número correto de campos e os valores corretos por linha
Version 2.144.3
Added
- Os formulários XFA agora podem usar um layout de fluxo de cima para baixo: um subformulário com
layout="tb"empilha verticalmente seus elementos filhos de campo e desenho—cada um abaixo do anterior—mesmo quando esses filhos não especificam uma posição explícita. Formulários achatados que dependem do fluxo vertical automático em vez de coordenadas fixas agora dispõem seus campos corretamente
Version 2.144.2
Fixed
- Formulários XFA cujo primeiro pacote começa com uma declaração DOCTYPE—como a produzida por algumas ferramentas de design XFA—agora são achatados corretamente por meio de
FlattenLoadedXFAem vez de falhar com um erro de modelo ausente. O carregador reconhece o elemento raizxdp:xdpmesmo quando um prólogo DOCTYPE o precede - Entidades XML internas declaradas no DOCTYPE de um formulário (por exemplo
<!ENTITY name "value">) agora são expandidas onde quer que a referência&name;correspondente apareça no formulário, de modo que os campos achatados contenham o texto resolvido
Security
- Entidades XML externas (
SYSTEMouPUBLIC) referenciadas por um formulário XFA nunca são resolvidas durante o achatamento: o HotPDF não busca a URL ou o arquivo referenciado, protegendo contra ataques XXE (XML External Entity). Tal referência é expandida para texto vazio e relatada por meio deXFAFlattenWarnings
Version 2.144.0
Changed
- O achatamento de XFA para AcroForm agora é executado por um mecanismo de layout dedicado de duas passagens: primeiro as posições dos elementos são calculadas e, em seguida, os campos e os gráficos são emitidos. Formulários posicionais estáticos produzem uma saída idêntica; essa mudança interna é a base para o suporte a layout fluido e seções repetidas que chegará nas próximas versões
Version 2.143.5
Fixed
- Formulários XFA reais que armazenam sua entrada
/XFAcomo uma matriz de pacotes agora são achatados corretamente porFlattenLoadedXFAem vez de falhar com um erro de modelo ausente. Isso abrange formulários cujos fluxos de pacote são compactados individualmente sem um filtro diretamente legível, e formulários que listam o pacote de configuração antes do modelo—ambos comuns em PDFs exportados por ferramentas profissionais de design XFA
Added
- O achatamento XFA
<draw>agora renderiza rótulos de texto estáticos—títulos de formulário e legendas de campo—como texto de página nativo, preservando a família, o tamanho e a cor da fonte do rótulo, para que permaneçam visíveis em um formulário achatado em leitores sem mecanismo XFA - Os widgets de botão XFA agora são convertidos em botões de ação AcroForm nativos preservando o texto da legenda, de modo que os botões de ação apareçam no formulário achatado
Version 2.143.4
Added
- O novo método
FlattenLoadedXFAachata o formulário XFA incorporado em um PDF já carregado em campos AcroForm nativos e gráficos de página estáticos, completando a conversão de XFA para AcroForm em documentos abertos a partir do disco (as versões anteriores achatavam os bytes XFA fornecidos pelo chamador por meio deApplyXFAAsAcroForm). Ele lê a entrada/XFAdo formulário, seja um único fluxo ou uma matriz de pacotes, depois remove/XFAe limpa o sinalizador de renderização dinâmica, de modo que o resultado seja um AcroForm simples exibido por qualquer leitor de PDF. Ele retorna o número de campos criados, ou zero quando o PDF carregado não contém XFA - Os dois pontos de entrada de achatamento de XFA agora aceitam uma opção
Editable: deixe-a ativada (o padrão) para campos preenchíveis ou desative-a para marcar como somente leitura cada campo gerado - Nomes de campo XFA duplicados, permitidos em XFA, mas não em AcroForm, agora são tornados únicos automaticamente com um sufixo numérico, e a renomeação é relatada por meio de
XFAFlattenWarnings - Modelos XFA criados para diferentes versões do esquema de modelos são aceitos; um namespace de modelo não reconhecido é anotado como aviso em vez de rejeitado, de modo que o formulário ainda é achatado
Version 2.143.3
Added
- O achatamento de XFA para AcroForm agora reproduz os gráficos estáticos
<draw>de um modelo XFA como conteúdo nativo da página, de modo que retângulos, linhas, arcos e imagens incorporadas mantêm sua posição em um formulário achatado nos leitores de PDF que não implementam um mecanismo XFA. Retângulos e linhas são traçados com a espessura e a cor da borda do XFA, um arco é renderizado como uma curva suave seguindo seus ângulos inicial e de varredura, e uma imagem PNG ou JPEG incorporada é decodificada e desenhada em seu quadro original
Version 2.143.2
Added
- O achatamento de XFA para AcroForm agora transfere o estilo dos campos para os campos AcroForm gerados. A família e o tamanho da fonte XFA, a cor do texto, a cor e a largura da borda do campo e o alinhamento horizontal do texto são convertidos na aparência padrão, na borda e no alinhamento do campo, de modo que um formulário XFA achatado mantém a aparência pretendida em leitores de PDF padrão que não implementam um mecanismo XFA. Nesta versão, a seleção de fontes é mapeada para as fontes PDF padrão; a incorporação completa de fontes virá a seguir
Version 2.143.1
Added
- O achatamento de XFA para AcroForm realizado por
ApplyXFAAsAcroFormagora converte campos numéricos, de data, caixas de seleção, botões de opção, listas de escolha e assinaturas digitais, além dos campos de texto. Cada widget XFA<ui>é mapeado para o campo AcroForm nativo mais próximo: entradas numéricas e de data tornam-se campos de texto, um check button torna-se uma caixa de seleção (ou um grupo de botões de opção quando está dentro de um exclusion group), e uma lista de escolha torna-se uma caixa de combinação ou, quando em seleção múltipla, uma caixa de listagem. Os valores dos campos continuam sendo obtidos primeiro do pacote form e depois do pacote datasets
Version 2.143.0
Added
- O novo método
ApplyXFAAsAcroFormconverte um formulário XFA (XML Forms Architecture) fornecido pelo chamador em campos de texto AcroForm nativos, de modo que formulários XFA estáticos se tornem visíveis e preenchíveis em leitores de PDF modernos que não implementam um mecanismo XFA. Esta primeira versão abrange campos de texto com valores obtidos do pacote form ou datasets; outros tipos de campo, estilos e gráficos virão a seguir.XFAFlattenWarningsrelata qualquer elemento que não pôde ser convertido
Version 2.142.1
Changed
- O auxiliar de anexação de Seed Value do PAdES agora rejeita valores que forçariam um signatário posterior a violar o perfil PAdES (ETSI EN 319 142-2 V1.2.1 §4.2.6): a restrição
/SubFilterdeve seradbe.pkcs7.detachedouETSI.CAdES.detached, e a restrição/DigestMethodnão pode serMD5,SHA1ouSHA-1. O produtor lança uma diagnose clara em vez de emitir silenciosamente um dicionário/SVque viole o perfil
Version 2.142.0
Added
- O novo método
AddXFASignaturePacketincorpora uma assinatura XAdES / XML-DSig gerada pelo chamador como o pacotesignaturedo XFA dentro do array/XFAdo AcroForm (ISO 32000-1 §12.7.8), para formulários XFA assinados. O HotPDF não gera nem analisa a assinatura: o chamador a produz com uma biblioteca criptográfica XML sobre os datasets do XFA, e o HotPDF a incorpora como pacote FlateDecode. Aplicam-se as mesmas rejeições PDF/A e PDF/X, a exclusividade de fluxo único e as proteções contra pacotes duplicados deAddXFAPacket
Version 2.141.2
Added
- Nova API pública
RegisterDefaultColorSpace(Which, ColorSpaceCS)registra um espaço de cor ICCBased (criado comRegisterICCProfile) como o mapeamento/DefaultGray,/DefaultRGBou/DefaultCMYKem todo o documento conforme ISO 32000-1 §8.6.5.6 e Nota Técnica PDF/A Competence Center 0002 §1.3. No EndDoc, o auxiliar percorre cada página e adiciona uma entrada[/ICCBased <profile-stream>]sob a chave/DefaultXcorrespondente no dicionárioResources/ColorSpaceda página. A contagem de componentes é validada em relação à família (DefaultGray→ N=1,DefaultRGB→ N=3,DefaultCMYK→ N=4); uma chamada comCSNamevazio limpa o mapeamento; entradas/DefaultXjá presentes no nível da página são preservadas (substituições do chamador vencem). Com isso, um documento que mistura conteúdo DeviceRGB e DeviceCMYK pode satisfazer PDF/A-1 §6.2.3.3 com qualquer perfilGTS_PDFA1OutputIntent único, porque a verificação de consistência §6.2.3.3 introduzida em v2.141.1 trata o uso de DeviceX como absorvido assim que o espaço Default correspondente é registrado
Version 2.141.1
Changed
- Verificação de consistência entre o espaço de cor do dispositivo e OutputIntent no PDF/A (ISO 19005-1 §6.2.3.3 + Nota Técnica PDF/A Competence Center 0002 §4.1). O EndDoc agora gera uma exceção quando um documento mistura conteúdo DeviceRGB e DeviceCMYK (um único perfil ICC de OutputIntent GTS_PDFA1 não pode corresponder a ambos os modelos de cor ao mesmo tempo) ou quando o conteúdo DeviceCMYK é pareado com um perfil OutputIntent RGB e vice-versa. Conforme TN0002 §4.1, o conteúdo DeviceGray é compatível com perfis de OutputIntent Gray, RGB ou CMYK. Os XObjects de imagem são rastreados pelo espaço de cor que o produtor realmente emite (DeviceRGB para JPEG e Flate de 24 bits, DeviceGray para CCITTFax); conforme TN0002 §4.3, os arrays
/Ce/ICdas anotações de marcação contam como DeviceRGB. Os espaços de cor ICCBased / CalGray / CalRGB / Lab estão isentos da verificação
Added
- As propriedades somente leitura
UsedDeviceGray,UsedDeviceRGBeUsedDeviceCMYKemTHotPDFexpõem os sinalizadores de uso do espaço de cor do dispositivo em andamento, permitindo que os chamadores inspecionem o estado da verificação de consistência antes do EndDoc
Version 2.141.0
Added
- Os formulários XFA agora podem ser emitidos como um único fluxo
/XFApor meio do novo métodoSetXFADocument, que coloca um documento XFA/XDP completo em um único fluxo (ISO 32000-1 §12.7.8), como alternativa à forma de matriz por pacotes deAddXFAPacket. As duas formas são mutuamente exclusivas - A nova propriedade
XFANeedsRenderingdefine o sinalizador/NeedsRenderingdo Catalog (ISO 32000-1 §7.7.2) para que um visualizador regenere um formulário XFA dinâmico na primeira abertura do documento. Ela vem desativada por padrão, deixando os documentos não XFA idênticos byte a byte
Changed
- A documentação do XFA agora mostra os pacotes de invólucro de início e fim
xdp:xdpexigidos para a forma de matriz de/XFA, de modo que os fluxos dos pacotes se concatenem em um documento XDP bem formado (ISO 32000-1 §12.7.8)
Fixed
- Os tipos MIME no
/Subtypede arquivos incorporados agora são gravados como nomes PDF corretos, com/escapado como#2f(por exemplo,/application#2fxml) conforme ISO 32000-1 §7.3.5, para que leitores rigorosos analisem corretamente o tipo de mídia. AfetaAddPDFA3AssociatedFileeAddXAdESAssociatedFile AddXAdESAssociatedFileagora rejeita uma carga XML vazia, pois um fluxo de assinatura XAdES não pode ser vazio
Version 2.140.5
Changed
- O dicionário de carimbo do tempo do documento PAdES agora emite o
/Type /DocTimeStampexigido pela especificação em vez de/Type /Sige omite as entradas/M,/Reason,/Locatione/ContactInfoque a norma marca como «não devem estar presentes», melhorando a conformidade com ETSI EN 319 142-1 V1.2.1 §5.4.3 - O subdicionário Signature VRI do DSS agora referencia os mesmos fluxos indiretos que os arrays de nível superior do DSS (
Certs,CRLs,OCSPs) em vez de escrever objetos de fluxo duplicados, atendendo à invariante da ETSI EN 319 142-1 V1.2.1 §5.4.2.3 e à orientação da nota s) do §6.3 sobre evitar duplicação de valores de certificados - O valor
/Extensions /ESIC /ExtensionLeveldeclarado no Catalog agora é automaticamente elevado para 2 quando uma assinatura PAdES baseline com/SubFilter /ETSI.CAdES.detachedé adicionada, já que o requisito l) do §6.3 da norma é identificado pelo Level 2; documentos que carregam apenas dados de DSS ou de carimbo do tempo do documento continuam usando Level 1
Added
- Uma assinatura PAdES agora pode transportar certificados de CA intermediários junto ao certificado do signatário dentro do CMS
SignedData.certificatesvia a nova opçãoAdditionalCertsDER, ajudando um verificador a construir um caminho até a âncora de confiança sem consulta externa (ETSI EN 319 142-1 V1.2.1 §6.3 nota b)
Fixed
- Conformidade com PDF/A: o sub-conjuntador de TTF Unicode agora emite o fluxo de bits
/CIDSetno descritor de fonte do CIDFont descendente quando PDFACompliance está ativo. ISO 19005-1 §6.3.5 / ISO 19005-2 §6.2.11 / ISO 19005-3 §6.2.11 exigem que CIDFonts em subconjunto declarem quais CIDs estão presentes; sem o fluxo, uma verificação estrita do veraPDF falha mesmo que todos os glifos necessários estejam incorporados. O fluxo de bits é MSB-first conforme ISO 32000-1 §9.7.4.2 (CID 0 no byte 0 bit 7) e só é emitido em modo PDF/A, mantendo a saída não PDF/A estável byte a byte
Version 2.140.4
Fixed
- Ao salvar incrementalmente um PDF carregado, um dicionário de criptografia órfão que ficou na origem (que seu trailer não referencia mais) agora é marcado como livre na seção de referências cruzadas anexada, de modo que leitores que seguem a revisão mais recente não veem mais esse dicionário perdido. Os bytes originais permanecem intactos e documentos sem esse resíduo são gravados exatamente como antes; complementa a limpeza do salvamento completo da 2.140.3
Version 2.140.3
Fixed
- Ao salvar um PDF carregado com AES-256, um dicionário de criptografia remanescente não é mais copiado do arquivo de origem. Quando um documento de origem mantinha um dicionário de criptografia órfão que seu trailer não referenciava mais, a saída costumava conter esse dicionário perdido ao lado do ativo; agora apenas o dicionário de criptografia realmente em uso é gravado
Version 2.140.2
Added
- O atributo assinado de informações de revogação Adobe transportado dentro de uma assinatura PAdES agora também aceita evidências de revogação fora de X.509 ao lado das entradas CRL e OCSP habituais, de modo que um token de revogação específico de um setor identificado por seu próprio OID pode viajar dentro da assinatura
- Uma assinatura PAdES agora pode declarar um atributo content-hints CAdES que descreve o que foi assinado, útil em fluxos de trabalho de várias assinaturas em que um signatário posterior precisa conhecer o tipo de conteúdo original sem precisar derivá-lo novamente
Version 2.140.1
Fixed
- A criptografia de um documento carregado com AES-256 não trava mais quando suas cadeias de texto estão aninhadas dentro de arrays ou outros contêineres não indiretos; tais cadeias agora são criptografadas corretamente em vez de entrar em um laço infinito
- Abrir ou descriptografar um documento AES-256 não falha mais com um erro de preenchimento quando o arquivo contém um dicionário de criptografia residual de sua origem; o descriptografador agora ignora todos os dicionários de criptografia, de modo que todo o conteúdo das cadeias é descriptografado corretamente
Version 2.140.0
Changed
- A criptografia e a descriptografia AES-256 agora usam a aceleração de hardware AES-NI da CPU quando disponível, com um fallback de software portátil caso contrário. Em uma CPU de desktop típica, isso eleva a taxa de transferência AES-256-CBC de cerca de 148 MB/s para 442 MB/s na criptografia (cerca de 3× mais rápido) e de cerca de 147 MB/s para 832 MB/s na descriptografia (cerca de 5,7× mais rápido)
- Abrir um PDF grande protegido por senha agora usa muito menos memória. O carregador não mantém mais o arquivo de origem inteiro na memória enquanto recupera a chave de criptografia e descriptografa: documentos AES-256 obtêm o que precisam do modelo de objetos analisado, e a recuperação de chave legada agora lê apenas o final do arquivo em vez do arquivo inteiro. Para um documento criptografado de vários gigabytes, isso elimina um pico de memória temporário de aproximadamente o dobro do tamanho do arquivo
Version 2.139.3
Fixed
- A reescrita e gravação pela Direct File API agora é drasticamente mais rápida em documentos muito grandes. Regravar um arquivo de 60.000 páginas / 883 MB após uma alteração de metadados ou objetos caiu de cerca de 189 segundos para aproximadamente 21 segundos, porque o buffer de cópia por objeto agora é reutilizado em vez de realocado para cada objeto. Abrir ou copiar o mesmo arquivo pela Direct File API permanece em torno de 2-3 segundos
Version 2.139.2
Fixed
- Ao salvar novamente documentos PDF 1.5+ carregados com fluxos de objetos, e documentos PDF 2.0 com trailer, depois de edições com
BeginDoc, a árvore de páginas agora permanece válida. Antes, um dicionário de página recuperado de um fluxo de objetos podia ser anexado sem/Type /Page, fazendo leitores relatarem um objeto que não era página na árvore de páginas apósEndDoc
Version 2.139.1
Fixed
- Documentos criptografados que combinam AES-256 com um stream de referência cruzada (opcionalmente ao lado de streams de objetos comprimidos) agora reabrem e salvam novamente de forma confiável. Anteriormente, quando os dados de um stream criptografado começavam por acaso com um byte de quebra de linha, o carregador podia ler esse stream com um byte de desalinhamento e corromper de forma intermitente o resultado descriptografado, de modo que um arquivo protegido por senha às vezes não abria. O leitor de stream agora segue exatamente o limite dos dados, e esses documentos abrem de forma consistente
Version 2.139.0
Fixed
- Documentos que usam um stream de referência cruzada juntamente com streams de objetos comprimidos (PDF 1.5 e posterior) agora são lidos por um carregador em conformidade com o padrão. Reabrir e salvar novamente esse documento mantém a árvore de páginas intacta e preserva os números originais dos objetos; o carregador anterior podia descartar a árvore de páginas ou renumerar objetos e perder páginas na cópia salva
- Um stream cujo
/Lengthestá armazenado como referência indireta agora é resolvido corretamente durante o carregamento de um documento com stream de referência cruzada, de modo que seu conteúdo não é mais perdido
Version 2.138.0
Fixed
- Documentos que declaram uma versão de cabeçalho PDF mais antiga, como
%PDF-1.3ou%PDF-1.4, mas que na verdade usam um stream de referência cruzada agora são carregados corretamente em vez de abrirem como um documento vazio sem páginas. O roteamento é decidido a partir da estrutura real de referência cruzada em vez da versão de cabeçalho declarada, de modo que arquivos muito grandes desse tipo também abrem como esperado
Version 2.137.9
Added
- Foi adicionada saída CSV para relatórios de preflight por meio de
pfCSVemCreatePreflightReport,SavePreflightReporteCreatePreflightReportWithProfile, usando colunas estáveiscategory,name,status,value,specpara fluxos de planilhas e processamento em lote - A GUI PreflightReport e a CLI HotPDFPreflight agora podem selecionar saída CSV; a CLI aceita
-f csvpara execuções de arquivo único e de diretório
Version 2.137.8
Fixed
- O caminho de descriptografia do buffer AES-256 nativo foi reforçado para que os chamadores possam atribuir o resultado da descriptografia ao mesmo
AnsiStringque forneceu o buffer de texto cifrado sem invalidar o ponteiro de entrada
Version 2.137.7
Added
- Foi adicionado suporte a strings page-range baseadas em um para operações de página de loaded-document, incluindo
HPDFParsePageRange, sobrecargas de intervalo paraInsertPagesFromDocumenteExtractPagesToFile, eAppendPagesFromDocument - Foi adicionado
OnPageOperationProgresspara que os fluxos de trabalho append, insert e extract possam relatar progresso determinístico em nível de página
Version 2.137.6
Added
- Foi adicionado
THotPDF.DACopyFilepara fluxos de trabalho de arquivos grandes que só precisam de uma contagem de páginas e de uma cópia salva byte a byte original sem construir o grafo de objetos normal completo - A demo
HugeFileBenchmarkagora inclui uma linhadirect-copy, enquanto o conjunto de operações padrão ainda cobre o caminho completoLoadFromFile+SaveLoadedDocument
Changed
- Reduziu-se a cópia de memória na descriptografia de stream AES-256 ao descriptografar a partir de buffers existentes quando possível, incluindo a memória de stream carregada para grandes streams de imagens criptografadas
Fixed
- Foi melhorado o carregamento de PDFs criptografados baseado em arquivo, de modo que as aberturas por senha não armazenem mais em cache todo o PDF de origem apenas para recuperar valores brutos do dicionário de criptografia
Version 2.137.5
Added
- Foi adicionada edição object-source via Direct File API para fluxos de trabalho de arquivos grandes: aplicativos podem abrir um PDF com
DAOpenFileReadOnly, inspecionar contagens de objetos e corpos fonte, substituir ou anexar corpos de objetos, atualizar as informações do documento e salvar uma cópia totalmente reescrita - A demo
HugeFileBenchmarkagora inclui uma operaçãodirect-rewritee documenta execuções de benchmark HTML/CSV para PDFs enormes somente de imagem e mistos de texto/imagem
Changed
- Expanded Direct File API indexing to cover traditional xref tables and xref streams, including compressed object entries, so image-heavy PDFs and object-heavy PDFs can use the lightweight path
- Optimized Direct File API full rewrites by copying unchanged direct objects in source-offset order and merging contiguous ranges, greatly reducing random I/O on PDFs with hundreds of thousands of objects
Version 2.137.4
Added
- A GUI agora cobre relatórios padrão text, JSON e HTML, senhas opcionais, profile INI files, presets integrados, single-file PDF/VT validation, embedded-report PDF output, report preview, status logging, automatic output naming e acesso rápido aos arquivos gerados
Changed
- A demo Delphi
PreflightReportfoi atualizada de console sample para uma ferramenta VCL GUI interativa para single-file preflight workflows
Removed
- O antigo comportamento de inicialização foi removido: quando nenhum command-line argument é fornecido, nenhum sample PDF nem report é criado automaticamente
Version 2.137.3
Added
- A validação PDF/VT agora reconhece propriedades XMP escritas como atributos RDF, bem como texto de elemento, cobrindo os estilos de pacote comuns
pdfvtid:GTS_PDFVTVersion,pdfvtid:GTS_PDFVTModDateexmp:ModifyDate
Fixed
- Foi adicionada cobertura de regressão Delphi que mantém a detecção de metadados PDF/VT em estilo de atributo separada das demais verificações estruturais PDF/VT
Version 2.137.2
Changed
- A validação de relatório preflight incorporado foi melhorada para que PDFs de origem que terminam legitimamente com uma quebra de linha final após
%%EOFcontinuem correspondendo à sua impressão digital armazenada
Fixed
- Perfis preflight salvos como UTF-8 com BOM agora carregam corretamente quando a primeira linha é um cabeçalho de seção
- O decodificação de escape de string literal PDF foi reforçada, melhorando a validação de senhas e a saída de cópia não criptografada para PDFs criptografados com entradas owner ou user com escape
Version 2.137.1
Changed
- A segurança do parser CFF foi estendida para verificações diretas de byte-array, restaurando a posição do leitor após entrada malformada e limpando o estado de layout obsoleto em verificações com falha
Fixed
- O carregador de stream CFF compatível com wrapper C++Builder foi reforçado para que a entrada nil stream retorne
Falsee reinicialize o estado do wrapper em vez de dereferenciar o stream
Version 2.137.0
Added
- Foi adicionado
THotPDF.ValidatePDFVTcom sobrecargas que reconhecem senha para validação PDF/VT focada. O relatório de texto verifica a declaração PDF/VT no XMP, o namespace de metadados, a correspondência da data de modificação PDF/VT, o marcador base PDF/X, output intent, a estruturaDPartRootdo catálogo, as páginas carregáveis e a coberturaDPartem nível de página - A CLI autônoma
HotPDFPreflightagora aceita--pdfvtpara gravar relatórios de validação.pdfvt.txtpara um único PDF ou uma varredura recursiva de diretório
Version 2.136.8
Added
- Adiciona cobertura extra de smoke para streams CFF e Type 1 malformados, com preservação da posição do stream e limpeza de metadados obsoletos após falhas do parser
Changed
- Melhora o tratamento de falhas dos parsers Type 1 PFB e CFF para que as verificações de stream malformado preservem a posição de entrada e limpem metadados obsoletos em vez de deixar visível um nome de fonte anterior após uma verificação com falha
Version 2.136.7
Changed
- Expande o smoke test de Type 1/CFF com dados CFF em memória, dados de fonte Type 1 em ASCII, carregamento de arquivo PFB no nível do wrapper e carregamento de stream CFF no nível do wrapper para proteger as superfícies de integração de Delphi e C++Builder
Fixed
- Fortalece os pontos de entrada dos parsers Type 1 PFB e CFF para que verificações baseadas em stream preservem a posição do stream do chamador, rejeitem dados malformados com segurança e exponham metadados básicos da fonte Type 1/CFF pelos caminhos de wrapper de Delphi e C++Builder
Version 2.136.6
Added
- Adiciona demos de recursos em Delphi para saída de texto Unicode CJK, geração de documentos grandes com várias páginas, assinatura PFX e cobertura ampliada de compressão de imagem com saída CCITT Group 3 1D e 2D
Version 2.136.5
Changed
- Os relatórios de preflight agora continuam quando uma entrada de página carregada não consegue retornar um MediaBox. O relatório marca essa página como indisponível em vez de abortar, então árvores de página grandes ou inconsistentes ainda geram saída diagnóstica
- Vários scanners de preflight em nível de byte foram otimizados para evitar cópias repetidas de string do sufixo inteiro e buscas lineares por objetos duplicados. A amostra de limite de implementação com 10.000 páginas agora conclui dentro do orçamento de 120 segundos do teste de estresse
- O executor de estresse do preflight agora usa por padrão um timeout de 120 segundos por arquivo, e a demo PreflightReport recompila sem erros após o caminho de saída sensível ao profile
Version 2.136.4
Added
- Adiciona um cookbook de preflight, um mapa de API de preflight gerado e um fluxo de trabalho de teste de estresse para diretórios grandes para a ferramenta de linha de comando
HotPDFPreflight. O executor de estresse isola cada PDF com timeout por arquivo e registra evidências em JSON, Markdown, CSV, relatório e log
Changed
- Registra uma linha de base de 1000 arquivos em
D:\PDFdoc\PDF-Samples: 997 aprovados, 1 falhou, 2 expiraram, 111.422 segundos decorridos, 8.975 arquivos por segundo
Fixed
- Corrige um problema de recompilação completa no helper de fingerprint do preflight ao declarar o helper antes de
CreatePreflightReportusá-lo, para que ferramentas de console que recompilamHPDFDoc.pasa partir do código-fonte compilem limpas
Version 2.136.3
Added
- A ferramenta independente de linha de comando
HotPDFPreflightganha a opção--aggregate <file>que grava um resumo em lote produzido porTHotPDF.AggregatePreflightReportsapós o fim dos relatórios por arquivo. O agregado lista cada PDF processado com status, tamanho, contagem de avisos e totais
Changed
- Funciona com arquivos únicos e varreduras recursivas de diretório, com ou sem
--profile/--preset. O agregado é calculado a partir do corpo textual de cada relatório, então o filtro por profile aparece no resumo - Exemplo:
HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reports --aggregate C:\Archive\Aggregate.txtgrava relatórios JSON para cada PDF mais um único resumo em lote
Version 2.136.2
Added
- The standalone
HotPDFPreflightCLI tool gains--profile <file>and--preset <name>options to filter each report through a preflight profile before writing it. Works alongside-f text|json|html,-p <password>, and-rrecursive directory walks
Changed
- The two new options are mutually exclusive (passing both, the later one wins). The preset values match what
THotPDF.GetBuiltInPreflightProfilerecognises so CI pipelines can pull a canonical configuration without staging an INI file - Example:
HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reportswrites JSON reports for every PDF in the directory tree with thesilent-actionspreset applied
Version 2.136.1
Added
- The Delphi
PreflightReportdemo now acceptsprofile=<file>orpreset=<name>as an additional CLI argument to filter the report through a profile before writing it. Works alongside the existingjson/html/embedoutput format flag
Changed
- Examples:
PreflightReport.exe Input.pdf Report.txt "" text profile=tuned.iniorpreset=compact/preset=silent-actions - The preset values mirror the names recognised by
THotPDF.GetBuiltInPreflightProfileso the demo doubles as a profile testbed without having to author an INI file
Version 2.136.0
Added
- Adiciona
THotPDF.MergePreflightProfilespara combinar profiles em camadas. O resultado é a união sem duplicatas das duas entradas, comDisableCheckseDisableWarningsmesclados eDisableHintsusando OR lógico, útil para combinar um preset comocompactcom ajustes específicos do projeto - Adiciona
THotPDF.DiffPreflightProfilespara comparação estrutural. RetornaTruequando dois profiles são equivalentes; caso contrário, os parâmetros de saídaOnlyInAeOnlyInBlistam as entradas exclusivas de cada lado como tokenscheck:<name>/warn:<name>/option:hints=falseseparados por nova linha
Changed
- Os dois helpers completam o ciclo de vida do profile:
Load/GetBuiltIn/Save/Apply/Validate/Merge/Diff
Version 2.135.0
Added
- Adiciona
THotPDF.CreatePreflightReportWithProfile, um wrapper de conveniência completo que combinaCreatePreflightReport,LoadPreflightProfile,ApplyPreflightProfilee os conversores de formato em uma única chamada - A nova sobrecarga aceita um PDF de origem, senha opcional, arquivo de profile opcional e formato de destino (
pfText,pfJSONoupfHTML) e retorna o corpo final do relatório. PassarProfileFilevazio pula totalmente a etapa de profile, então o chamador pode manter um único ponto de chamada independentemente de ter ou não um profile configurado
Changed
- As quatro APIs subjacentes continuam disponíveis, então cadeias de chamada existentes seguem funcionando sem mudança; o novo wrapper é apenas aditivo
Version 2.134.0
Added
- Adiciona
THotPDF.SavePreflightProfilepara gravar um registroTHPDFPreflightProfilede volta em um arquivo INI. O formato de saída corresponde ao queLoadPreflightProfileconsome, então as duas funções são inversas exatas para profiles bem formados
Changed
- Habilita um fluxo de trabalho de carregar preset, ajustar e salvar: obtenha um preset interno com
GetBuiltInPreflightProfile(v2.133.0), modifique as listas ou flags e depois grave o resultado comSavePreflightProfilepara reutilização posterior ou compartilhamento entre projetos - Seções sem conteúdo são omitidas da saída, então um profile vazio produz uma única linha de comentário em vez de três cabeçalhos de seção vazios