JPEG 2000 Backend

Desde a versão 3.9.0, o suporte JPEG 2000 utiliza OpenJPEG 2.5.4. A API pública TJpeg2000Bitmap não muda, mas o carregamento e a gravação utilizam agora o ciclo de vida do codec OpenJPEG 2.x e a API de streams por callback.

As compilações Win32 e Win64 ligam estaticamente os objetos OpenJPEG incluídos. Lib\thirdparty\build-openjpeg-bcc32.bat e Lib\thirdparty\build-openjpeg-bcc64x.bat recompilam-nos diretamente em Lib\thirdparty\Win32 e Lib\thirdparty\Win64. O caminho Win64 utiliza bcc64x sem tabelas de saltos, permitindo a dcc64 consumir objetos COFF64 estáticos sem uma DLL de runtime OpenJPEG.

O backend deteta JP2 e codestreams J2K em bruto através do carregador de streams existente. O encaminhamento dos componentes de cor é inferido do espaço de cor da imagem OpenJPEG 2.5, do número de componentes e dos metadados alfa, porque a antiga extensão comp_type já não existe no projeto de origem.

Fiabilidade da saída JPEG na versão 3.9.1

A versão 3.9.1 corrige as ligações libjpeg-turbo incluídas utilizadas por TPDFJPEGImage e pela renderização de páginas PDF. A exportação JPEG passa a utilizar campos booleanos, declarações de callbacks, alinhamento de estruturas e buffers de saída em memória compatíveis com a ABI em Win32 e Win64.

A mesma versão corrige a descompressão FlateDecode em Win32 com o backend zlib incluído, permitindo carregar corretamente os fluxos xref de ficheiros linearizados antes da renderização.

As aplicações que chamam TPDFJPEGImage.SaveToStream, LoadFromFile ou renderizam páginas PDF para JPG não necessitam de alterações. Recompile as saídas Win32 e Win64 da biblioteca para que os projetos usem os backends de imagem e FlateDecode corrigidos.

Backend AES na versão 3.9.3

A versão 3.9.3 atualiza a implementação AES incluída a partir das fontes C de 2018 de Brian Gladman's em Win32 e Win64. A API pública de encriptação não muda, mas os objetos AES podem agora ser recompilados a partir de Lib\thirdparty\AES com os scripts por biblioteca.

Lib\thirdparty\build-aes-bcc32.bat produz objetos OMF Win32 e Lib\thirdparty\build-aes-bcc64x.bat produz objetos COFF64 Win64. PDFlibAES.pas declara os pontos de entrada AES com a convenção de chamada C, para que a encriptação e desencriptação AES-CBC correspondam à ABI C compilada em ambas as plataformas.

Tratamento de DEVMODE da impressora na versão 3.9.4

A versão 3.9.4 altera a configuração de impressão PDF para aplicar tabuleiro personalizado, tipo de suporte, duplex, qualidade, cópias, cor e orientação através do identificador DEVMODE devolvido por TPrinter.GetPrinter. O código deixa de tratar TPrinter.Handle como identificador de memória global, pois essa propriedade é um HDC de impressora e não um bloco DEVMODE.

Isto melhora a impressão em impressoras de rede e partilhadas por servidor, incluindo quando a aplicação imprime por um endereço IP do servidor ou escolhe um tabuleiro não predefinido. Chamadas existentes como SetPrinterDevModeFromString e as opções de configuração mantêm o mesmo comportamento público.