Estamos felizes em anunciar o lançamento do GroupDocs.Comparison for Java 26.11, disponível a partir de novembro de 2026. O recurso principal é a comparação de imagens baseada em OCR: agora as imagens podem ser comparadas pelo texto reconhecido nelas, em vez de pelos seus pixels. A comparação de planilhas recebe uma grande reformulação — as linhas são correspondidas pelo conteúdo, e comparar planilhas grandes leva segundos em vez de minutos. Os resultados em PDF agora são dispostos a partir da página de origem, da mesma forma que no GroupDocs.Comparison for .NET, e um conjunto de correções cobre comparação de texto, Word, apresentações e pré‑visualização HTML.
O que há de novo nesta versão
| Chave | Resumo | Categoria |
|---|---|---|
| COMPARISONNET-4925, COMPARISONNET-4934 | Imagens podem ser comparadas pelo texto reconhecido nelas (OCR) em vez de pelos seus pixels | Recurso |
| COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 | Linhas de planilha são correspondidas pelo conteúdo: uma linha inserida ou excluída não marca mais todas as linhas subsequentes como alteradas | Correção |
| COMPARISONJAVA-1797, COMPARISONNET-4930 | Comparação de planilhas leva segundos em vez de minutos; diff de texto mais rápido em todos os formatos | Correção |
| COMPARISONJAVA-1796, COMPARISONNET-4946 | Resultado XLSX: linhas sem altura própria permanecem ajustadas ao seu conteúdo | Correção |
| COMPARISONNET-4947 | Resultado XLSX: números e datas inalterados mantêm seu tipo em vez de se tornarem texto | Correção |
| COMPARISONNET-4944 | StyleSettings.setHighlightColor preenche o fundo das células de planilha alteradas |
Correção |
| COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 | Texto: palavras deslocadas por quebras de linha não são mais relatadas como excluídas e reinseridas | Correção |
| COMPARISONNET-4403, COMPARISONNET-4891 | Resultados PDF dispostos a partir da página de origem: componentes em suas posições, células quebram na própria borda | Atualização |
| COMPARISONNET-4931 | Resultado PDF inline mostra uma frase substituída completa: primeiro as palavras antigas, depois as novas | Correção |
| COMPARISONNET-4896 | Resultado PDF inline não envolve mais uma linha que a comparação tornou levemente mais longa na linha seguinte | Correção |
| COMPARISONNET-4763 | Resultado PDF não desenha mais uma grade preta sobre as próprias bordas da tabela | Correção |
| — | Páginas PDF desenhadas por meio de formulários (planilhas salvas como PDF) não são mais consideradas inalteradas | Correção |
| — | PDF: linhas contendo apenas espaços não são mais relatadas como alterações | Correção |
| — | PDF: um índice mantém seus números de página nas linhas correspondentes | Correção |
| COMPARISONNET-4926 | Word: uma coluna ou linha de tabela que ficou vazia é mantida no lugar em vez de ser excluída e reinserida | Correção |
| COMPARISONNET-4880 | Apresentações: LoadOptions.setSkipExternalResources e setWhitelistedResources agora são aplicados |
Correção |
| COMPARISONNET-4935 | Pré‑visualização HTML: pré‑visualizações simultâneas não sobrescrevem mais as páginas umas das outras; páginas solicitadas são honradas | Correção |
| COMPARISONJAVA-1794, COMPARISONJAVA-1795 | Bibliotecas Aspose atualizadas | Atualização |
Alterações de comportamento a verificar antes de atualizar
- Nova dependência. O POM publicado declara uma nova dependência, Aspose.OCR for Java, usada apenas pela comparação OCR. Ela traz o ONNX Runtime com bibliotecas nativas. Se você não usar OCR, pode excluí‑la — todas as demais comparações funcionam sem ela (veja Como obter a atualização).
- Alterações em planilhas. Quando linhas são inseridas ou excluídas, a comparação de planilhas relata alterações diferentes — e geralmente muito menos — porque as linhas agora são correspondidas pelo conteúdo.
- Layout de PDF. Os resultados em PDF são dispostos de forma diferente: cada componente permanece onde estava na página de origem.
- Ordem das substituições. Em resultados de texto e PDF inline, uma palavra ou frase substituída agora aparece primeiro a antiga, depois a nova.
- Modo de avaliação. Apenas as 2 primeiras páginas de um PDF são comparadas no modo de avaliação, como no GroupDocs.Comparison for .NET.
Novo recurso: comparar imagens por texto reconhecido (OCR)
Uma imagem agora pode ser comparada pelo texto que o Aspose.OCR lê nela, em vez de pelos seus pixels. Essa é a escolha certa para digitalizações, fotos e capturas de tela de documentos, onde o mesmo texto nunca produz os mesmos pixels — uma página re‑digitalizada com um leve deslocamento ou em qualidade diferente não mostra mais diferenças em todo o documento.
try (Comparer comparer = new Comparer("source.png")) {
comparer.add("target.png");
OcrOptions ocr = new OcrOptions();
ocr.setEnabled(true);
ocr.setDisplayMode(OcrDisplayMode.SIDE_BY_SIDE); // or TEXT
CompareOptions options = new CompareOptions();
options.setOcr(ocr);
comparer.compare("result.png", options);
for (ChangeInfo change : comparer.getChanges()) {
OcrChangeInfo ocrChange = (OcrChangeInfo) change;
System.out.println(change.getText() + ": confidence " + ocrChange.getConfidence()
+ ", " + ocrChange.getSourceBoxes().length + " box(es) on the source");
}
}
O que você pode controlar:
- Modo de exibição.
SIDE_BY_SIDE(padrão) mostra as duas imagens lado a lado com as palavras alteradas em caixas.TEXTmostra apenas o texto reconhecido, com as alterações marcadas nele. - Detalhes da mudança. Cada mudança é um
OcrChangeInfocom as caixas que cobre em ambas as imagens (getSourceBoxes(),getTargetBoxes()) e a confiança do reconhecimento (getConfidence()). As caixas ficam vazias no modoTEXT. - Idioma.
setLanguage(OcrLanguage)seleciona o idioma ou script; o padrão éLATIN. Outros idiomas precisam de um modelo de reconhecimento que é baixado no primeiro uso.setDisableResourceDownloads(true)esetResourcesPath(String)restringem o reconhecimento a modelos já presentes no disco.
Aspose.OCR for Java deve estar no classpath. Ele é uma dependência do POM publicado, não faz parte do JAR. Sem ele, uma comparação OCR falha com uma mensagem que indica a biblioteca ausente.
Comparação de planilhas
Linhas correspondidas por conteúdo
Anteriormente, as linhas eram pareadas com a linha no mesmo índice na outra planilha. Quando uma linha era inserida ou excluída, todas as linhas subsequentes eram relatadas como reescritas. Por exemplo, uma planilha de seis linhas com uma delas excluída produzia 91 alterações; agora produz 8 — as seis células da linha excluída, marcadas no lugar, e a contagem de linhas na planilha de resumo.
Linhas e colunas agora são alinhadas pelo conteúdo de suas células. Linhas que são iguais em ambos os arquivos são pareadas diretamente, e apenas o que está entre elas é alinhado. O número de alterações relatadas para esses arquivos difere das versões anteriores.
Segundos em vez de minutos
A comparação de planilhas podia levar minutos mesmo para arquivos idênticos: duas planilhas idênticas de 200 × 20 levavam 2,5 minutos. Agora levam menos de um segundo (alguns segundos para a primeira comparação após a JVM iniciar), e uma planilha de 400 × 20 com uma linha excluída leva cerca de 7 segundos.
O diff de palavras por trás de cada comparação foi refeito e devolve o mesmo resultado de antes, apenas muito mais rápido — assim, comparações de Word, PDF e texto também se beneficiam. Linhas e colunas idênticas são pareadas sem pontuação, de modo que duas planilhas idênticas não são alinhadas de forma alguma.
Alturas de linhas, tipos numéricos e cor de destaque
- Linhas sem altura própria agora permanecem ajustadas ao seu conteúdo no resultado, de modo que células com quebra de linha e fonte grande não são mais cortadas. Linhas com altura explícita mantêm‑a.
- Números e datas inalterados mantêm seu tipo em vez de serem gravados como texto. Células de fórmula ainda são gravadas com seus valores calculados.
StyleSettings.setHighlightColoragora preenche o fundo das células alteradas:
StyleSettings deleted = new StyleSettings();
deleted.setHighlightColor(Color.PINK);
CompareOptions options = new CompareOptions();
options.setDeletedItemStyle(deleted);
Resultados em PDF
Layout a partir da página de origem
O motor de PDF agora dispõe os resultados da mesma forma que o GroupDocs.Comparison for .NET:
- cada componente do resultado fica onde estava na página de origem; imagens são posicionadas em suas próprias coordenadas, e os gráficos vetoriais da página são mantidos;
- uma tabela desenha sua grade, e o texto de cada célula quebra na própria borda da célula, incluindo células mescladas;
- linhas são agrupadas em parágrafos pela distância entre linhas de base, e as margens da página vêm da própria página;
- páginas que são iguais em ambos os documentos são encontradas em qualquer posição no documento, não apenas no início, e não são comparadas novamente.
Os resultados parecem diferentes das versões anteriores. Conteúdo excluído é desenhado onde estava na página de origem; onde o destino tem outro conteúdo naquele local, os dois podem se sobrepor.
Pequenas correções
- Frases substituídas. Uma substituição de várias palavras era desenhada um par de cada vez, de modo que “Richard McClintock” tornando‑se “Vasily Pupkin” era exibido como “Vasily Richard Pupkin McClintock”. O resultado inline agora mostra a frase antiga, depois a nova.
- Linhas ligeiramente mais longas. Em um resultado inline, uma linha que uma substituição tornou uma palavra mais longa não envolve mais sua última palavra em uma linha própria sobre a linha seguinte.
- Grades de tabelas. Uma borda de tabela cuja cor não podia ser detectada não é mais pintada de preto sobre as próprias bordas da fonte.
- Páginas desenhadas por formulários. Páginas que desenham tudo por meio de formulários, como uma planilha salva como PDF, eram consideradas inalteradas. Os formulários agora também são comparados, de modo que suas alterações são relatadas.
- Linhas em branco. Linhas contendo apenas espaços não são mais relatadas como alterações.
- Índices. O número de página de uma linha de índice alterada permanece na sua linha.
Outras correções
Texto atravessando quebras de linha
Uma edição que alonga ou encurta uma linha de um arquivo de texto empurra palavras através das quebras de linha subsequentes. Comparado linha a linha, essas palavras eram relatadas como excluídas de uma linha e inseridas na próxima. Agora as linhas são unidas enquanto isso gera menos alterações, comparadas como um único fluxo e redistribuídas nas linhas do destino. Uma substituição é relatada primeiro a antiga, depois a nova, e a visualização HTML de uma comparação de texto aplica alterações aceitas e rejeitadas da mesma forma que o resultado de texto. Comparar um arquivo com vários alvos ainda compara linha a linha.
Word: coluna ou linha de tabela esvaziada
Quando uma coluna ou linha de uma tabela ficou vazia, ela era relatada como excluída e uma vazia como inserida, e as células subsequentes eram deslocadas. Agora ela permanece no lugar, com seu conteúdo relatado como excluído.
Apresentações: recursos externos
LoadOptions.setSkipExternalResources e setWhitelistedResources, adicionados em 26.10, não tinham efeito em apresentações. Eles agora se aplicam a apresentações assim como a documentos Word e HTML, e a apresentação resultante nunca busca recursos externos. Uma imagem que não foi carregada é comparada como uma imagem vazia.
Pré‑visualização HTML
Páginas de pré‑visualização de um documento HTML eram renderizadas para nomes de arquivos fixos no diretório temporário, de modo que duas pré‑visualizações simultâneas sobrescreviam as páginas uma da outra e os números de página solicitados eram ignorados. As páginas agora são renderizadas na memória, apenas as solicitadas são retornadas, e são renderizadas sobre fundo branco em vez de fundo transparente.
Bibliotecas Aspose atualizadas
| Biblioteca | Antes | Agora |
|---|---|---|
| Aspose.BarCode | 25.5 | 26.6 |
| Aspose.CAD | 24.6.1 | 26.8 |
| Aspose.Cells | 26.3 | 26.9 |
| Aspose.Diagram | 25.7 | 26.9 |
| Aspose.Email | 26.1 | 26.8 |
| Aspose.PDF | 26.2 | 26.8.1 |
| Aspose.PSD | 25.10 | 26.8 |
| Aspose.Slides | 26.2 | 26.9 |
| Aspose.Words | 26.3 | 26.8 |
As bibliotecas são empacotadas no JAR como antes. Aspose.OCR 26.10.0 é nova e vem como dependência no POM.
Como obter a atualização
Maven
Adicione o repositório GroupDocs e a dependência ao seu pom.xml:
<repositories>
<repository>
<id>groupdocs-artifacts-repository</id>
<name>GroupDocs Artifacts Repository</name>
<url>https://releases.groupdocs.com/java/repo/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>26.11</version>
</dependency>
</dependencies>
Se você não usar comparação OCR, pode excluir Aspose.OCR e suas bibliotecas nativas:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>26.11</version>
<exclusions>
<exclusion>
<groupId>com.aspose</groupId>
<artifactId>aspose-ocr</artifactId>
</exclusion>
</exclusions>
</dependency>
Download direto
Baixe o JAR na página de download do GroupDocs.Comparison for Java 26.11.